[英]Android studio uses wrong file path to apk when I use custom build.gradle file
[英]How can I rewrite build.gradle files when I use Android Studio Chipmunk?
我創建了一個基於 Android Studio Chipmunk 的向導Empty Compose Activity的項目 | 2021.2.1補丁1,向導生成兩個build.gradle文件,可以看到Code A和Code B。
代碼 C 和代碼 D 是來自舊項目的兩個 build.gradle 文件。
1:代碼A id 'com.android.library' version '7.2.0' apply false
apply false
的apply false是什么意思?
2:我發現插件部分同時存在代碼A和代碼B,它們的代碼幾乎相同,為什么?
3:我發現代碼C中有一個依賴部分,它已經過時了嗎?
4:代碼 C 中的存儲庫部分是否已過時?
代碼 A:樣品 build.gradle(項目)
buildscript {
ext {
compose_version = '1.1.0-beta01'
}
}
plugins {
id 'com.android.application' version '7.2.0' apply false
id 'com.android.library' version '7.2.0' apply false
id 'org.jetbrains.kotlin.android' version '1.5.31' apply false
}
代碼 B:樣品 build.gradle(模塊)
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
compileSdk 32
defaultConfig {
applicationId "info.dodata.myapplication"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion compose_version
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version"
...
}
代碼 C:我的 build.gradle(項目)
buildscript {
ext {
compose_version = '1.2.0'
hilt_version = '2.42'
}
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.0"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
}
}
代碼 D:build.gradle(模塊)
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
id 'kotlin-parcelize'
}
android {
compileSdk 32
flavorDimensions "default"
namespace 'info.dodata.soundmeter'
defaultConfig {
applicationId "info.dodata.soundmeter"
minSdk 23
targetSdk 32
versionCode 3
versionName "1.03"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
allWarningsAsErrors = false
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion compose_version
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.8.0'
...
Android Studio Chipmunk creates a different structure for Gradle files, with a settings.gradle
for repositories and a build.gradle
(project level) for plugins. 簡而言之,這種新結構只是讓Gradle files
更干凈。
對於Gradle
,通常會看到 2 種(或更多)方法來做同樣的事情。 將code A
與code C
進行比較就是一個很好的例子。 兩種代碼都做同樣的事情,但代碼和文件的結構不同。
現在談論apply false
,基本上是字面意思。 您聲明了一個帶有版本的插件,並說不要立即應用它(在整個項目中,因為它是來自項目的 build.gradle)。 但是你只在你將要使用這個插件的模塊中應用你需要的東西,例如,在app module
的build.gradle
中。
您可以在此處查看完整說明。
回到 Android Studio 使用插件生成的“新結構”,有時您需要在buildscript
中創建一個dependencies
項塊以使用“舊” classpath
而不是plugin id
,因為目前並非所有庫都有要使用的插件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.