我在一個使用單獨庫模塊的 android 專案中發現了一個問題。該專案使用多種產品風格,這些風格反映在每個庫中。
其中一個庫使用該resValue函式根據風味生成不同的字串值。
但是,在組裝多種風格時會發生一個問題 - 似乎在第一個被分配第一個的資源值之后生成的 apk。
這是一個顯示問題的示例存盤庫
App gradle檔案的相關部分:
plugins {
id 'com.android.application'
id 'kotlin-android'
}
android {
flavorDimensions("environment")
defaultConfig {
dimension = "environment"
}
productFlavors {
create("dev")
create("ppe")
}
}
dependencies {
implementation(project(":testlib"))
}
庫gradle檔案的相關部分:
plugins {
id 'com.android.library'
id 'kotlin-android'
}
android {
flavorDimensions("environment")
defaultConfig {
dimension = "environment"
}
productFlavors {
create("dev") {
resValue("string", "aaa_lib_test_gradle", "dev")
}
create("ppe") {
resValue("string", "aaa_lib_test_gradle", "ppe")
}
}
}
有了這個配置,如果你運行./gradlew clean assemblePpeDebug assembleDevDebug和檢查生成APK開發你會注意到的值aaa_lib_test_gradle是PPE,不開發符合市場預期。
是什么導致了這種情況 - 是否缺少一些我不應該使用的 gradle 設定?作為參考,我使用 AGP 7.0.3 和 gradle 7.0.2
更新:我發現這僅在 gradle properties 中的快取設定為 true 時發生org.gradle.caching=true。將其設定為 false 會產生預期的結果。
更新 2:這顯然是此處跟蹤的 AGP 7.x 的問題:https : //issuetracker.google.com/issues/201930057
uj5u.com熱心網友回復:
顯然,這是舊版 AGP 7.0 的問題。它在 7.0.4 中得到解決。可以確認使用該版本時不會發生此問題。
與此相關的問題:https : //issuetracker.google.com/issues/201930057 https://issuetracker.google.com/issues/196852190
uj5u.com熱心網友回復:
我認為你需要使用
sourceSets {
dev {
res.srcDirs = ['src/dev/res']
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/378858.html
上一篇:gradle發布project-version-PLAIN.war檔案而不是project-version.war
下一篇:獲取APK/AAB安裝大小
