Could not get unknown property ‘versions‘ for object of type com.android.build.gradle.AppExtension
2023-06-13 09:16:58 时间
这个错误的原因就是build.gradle的配置都统一调用自定义的gradle文件
这个我们就要说一下自定义gradle文件了。
我们在项目开发中为了避免项目和引用的多个module使用的 sdk版本不一致,为了统一版本号,我们一般会建一个公用的gradle文件。
在项目主目录下定义一个xxx.gradle的文件
我们这里定义了一个 dependencies.gradle的文件,内容为
ext.change = [
code : 100,
name : '1.1.0',
]
ext.versions = [
minSdk : 15,
targetSdk : 26,
compileSdk : 26,
buildTools : '26.0.2',
applicationId : "com.today.step",
androidGradlePlugin : '3.2.1',
supportLibs : '26.1.0',
]
ext.gradlePlugins = [
android : "com.android.tools.build:gradle:$versions.androidGradlePlugin",
]
ext.libraries = [
supportAppCompat : "com.android.support:appcompat-v7:$versions.supportLibs",
supportRecyclerView : "com.android.support:recyclerview-v7:$versions.supportLibs",
]
然后我们在项目的根目录下 build.gradle配置如下:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
apply from: 'dependencies.gradle'
repositories {
jcenter()
mavenCentral()
google()
}
dependencies {
classpath gradlePlugins.android
}
}
allprojects {
repositories {
jcenter()
google()
}
}
然后在APP及module中的 build.gradle文件中就可以直接这样定义了
apply plugin: 'com.android.application'
android {
compileSdkVersion versions.compileSdk
buildToolsVersion '28.0.3'
defaultConfig {
applicationId versions.applicationId
minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk
versionCode change.code
versionName change.name
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug{
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation libraries.supportAppCompat
implementation project(':lib-todaystepcounter')
}
再说回我们的这个错误,就是因为这个找不到versions这样的属性,也就是没有定义,可能是我们直接从三方的代码拷贝过来,也可能直接导入了一些三方的module ,但是咱们的主项目里面没有这样定义就会报这样的错误,按照上面的定义一下就可以了。
相关文章
- 基于chromium for android开发Android浏览器
- android 常用加密,分享一下Android各种类型的加密
- 【AOP 面向切面编程】Android Studio 中配置 AspectJ ( 下载并配置AS中 jar 包 | 配置 Gradle 和 Gradle 插件版本 | 配置 Gradle 构建脚本 )
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 注入工具收尾操作 | 关闭注入的动态库 | 恢复寄存器 | 脱离远程调试附着 )
- 【Android Gradle 插件】settings.gradle 配置文件 ( 配置基本作用 | include 函数用法 | 目录层级配置 | 修改 Module 模块构建脚本名称 )
- 【错误记录】Android Studio 中查看 Gradle 配置的方法源码 ( 配置 gradle-wrapper.properties 中版本为 gradle-x.x.x-all.zip )
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- 【Android Gradle 插件】gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数
- 【错误记录】Android Studio 编译报错 ( Could not determine java version from ‘11.0.8‘. ② | 升级 Gradle 版本 )
- 【错误记录】Android Studio 中 Gradle 配置报错 ( Can‘t determine type for tag ‘<item name=““ type=“String“>)
- 【Android Gradle 插件】LintOptions 配置 ⑪ ( textReport 属性配置 | textOutput 属性配置 )
- 【Android Gradle 插件】Android Library 依赖库混淆配置 ( ProductFlavor#consumerProguardFiles 配置 | 依赖库混淆配置 )
- 【Android Gradle 插件】Gradle 依赖管理 ④ ( Android Gradle 插件中注册的依赖分组 | implementation | api | compileOnly )
- 【Android Gradle 插件】Android Module 模块 build.gradle 构建脚本 Groovy 语法分析 ① ( Gradle 二进制插件引入 | Gradle依赖配置 )
- 【Android Gradle 插件】Gradle 扩展属性 ② ( 定义在根目录 build.gradle 中的扩展属性 | 使用 rootProject.扩展属性名访问 | 扩展属性示例 )
- 【Android Gradle 插件】Gradle 扩展属性 ④ ( 扩展属性访问方式 | 直接访问扩展属性 | 通过 ext 对象访问 | 在 gradle.properties 中定义扩展属性 )
- 【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ② ( java 和 groovy 插件自带文档任务 | 自定义文档打包任务 | 生成文档包 )
- 【Android Gradle 插件】Gradle 基础配置 ⑤ ( gradle-wrapper.properties 配置分析 | GRADLE_USER_HOME 目录 )
- 此应用程序可显示和控制通过USB(或通过TCP / IP)连接的Android设备