android build获取ext,顶级build.gradle文件中的ext属性

在开发Android应用程序时遇到一个问题,根项目的'dependencies.gradle'文件定义了kotlinVersion,但在根'build.gradle'文件中无法访问该属性。错误提示为:Could not get unknown property 'kotlinVersion'。在根'build.gradle'文件中尝试引用kotlinVersion时出现问题,可能是因为导入或变量作用域的问题。解决方案可能涉及到正确导入和使用外部文件中的变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在开发一个android应用程序。我在根项目中有一个“dependencies.gradle”文件:

ext {

// Android

kotlinVersion = '1.2.51'

gradleVersion = '3.1.3'

}

问题是,我可以在App'build.gradle'文件中使用此属性,但不能在根'build.gradle'文件中使用,因此出现以下错误:

Could not get unknown property 'kotlinVersion' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

这是我的“根构建梯度”:

apply from: 'dependencies.gradle'

buildscript {

repositories {

google()

jcenter()

}

dependencies {

classpath "com.android.tools.build:gradle:3.1.3"

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"

}

}

allprojects {

repositories {

google()

jcenter()

}

}

task clean(type: Delete) {

delete rootProject.buildDir

}

这是我的“App Build Gradle”:

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {

compileSdkVersion 27

defaultConfig {

applicationId "com.shimibox.client"

minSdkVersion 18

targetSdkVersion 27

versionCode 1

versionName "1.0"

testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

}

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

dependencies {

implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"

implementation 'com.android.support:appcompat-v7:27.1.1'

implementation 'com.android.support.constraint:constraint-layout:1.1.2'

testImplementation 'junit:junit:4.12'

androidTestImplementation 'com.android.support.test:runner:1.0.2'

androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

### Android Studio 项目缺少 `build.gradle` 文件的原因分析 在某些情况下,开发者可能会发现项目的根目录或模块下缺失了重要的构建配置文件——即 `build.gradle` 文件。这可能是由于多种因素引起的: - 版本控制系统操作失误导致重要文件未被提交到仓库中[^1]。 - 自动化脚本误删或是手动清理缓存时不慎移除了必要的构建配置文件[^2]。 ### 解决方案概述 为了恢复丢失的 `build.gradle` 文件并使项目能够正常工作,可以采取以下措施来解决问题: #### 方法一:从版本控制历史记录中找回 如果项目使用 Git 或其他版本控制系统管理源码,则可以从历史记录中检索之前的 `build.gradle` 文件副本。具体做法如下所示: ```bash git checkout HEAD -- path/to/build.gradle ``` 此命令会尝试将指定路径下的 `build.gradle` 文件还原至最近一次提交的状态。 #### 方法二:创建新的 `build.gradle` 文件模板 当无法通过上述方式获取旧版文件时,可以根据官方文档中的指导重新编写一份标准格式的 `build.gradle` 文件。对于大多数 Android 应用程序而言,其结构通常类似于下面的例子: ```groovy // Project-level build.gradle plugins { id 'com.android.application' version '7.0.0' apply false } allprojects { repositories { google() mavenCentral() } } ``` 以及应用级别的 `build.gradle`: ```groovy // Module (app)-level build.gradle plugins { id 'com.android.application' } android { compileSdkVersion 30 defaultConfig { applicationId "com.example.myfirstapplication" minSdkVersion 21 targetSdkVersion 30 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } } dependencies { implementation 'androidx.appcompat:appcompat:1.3.1' implementation 'com.google.android.material:material:1.4.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.0' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } ``` 请注意替换其中的应用 ID 和 SDK 版本号等参数以匹配实际需求。 #### 方法三:同步 Gradle 配置 完成新 `build.gradle` 文件的创建之后,应该立即点击工具栏上的 Sync Now 按钮让 IDE 加载最新的设置信息。这样不仅可以验证语法正确性,还能自动下载所需的库依赖关系。 ### 后续建议 为了避免将来再次发生类似的意外情况,强烈推荐定期备份项目数据,并确保所有更改都已妥善保存于版本控制系统之中。此外,保持良好的编码习惯也有助于减少人为错误的发生几率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值