gpt4 book ai didi

java - 为什么Android Studio尝试在调试包而不是主要包中定位资源?

转载 作者:行者123 更新时间:2023-12-03 04:26:30 25 4
gpt4 key购买 nike

我有一个具有4种不同构建类型的应用程序:调试和发布(普通的),以及alpha和beta。我在build.gradle中声明以下类型:

buildTypes {
// The release (or "live") variant. Application id is app.myapp.live
release {
minifyEnabled true
shrinkResources true
debuggable false

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

applicationIdSuffix ".live"

ext.enableCrashlytics = true

// Build config fields
buildConfigField("boolean", "RELEASE", "true")
}

// The debug variant. Application id is app.myapp.debug
debug {
minifyEnabled false
shrinkResources false
debuggable true

applicationIdSuffix ".debug"
versionNameSuffix '-DEBUG'

ext.enableCrashlytics = false
}

// The alpha variant. Application id is app.myapp.alpha
alpha {
initWith release
debuggable true

applicationIdSuffix ".alpha"
versionNameSuffix '-ALPHA'
}

// The beta variant. Closer to live. Application id is app.myapp.beta
beta {
initWith release
debuggable true

applicationIdSuffix ".beta"
versionNameSuffix '-BETA'
}
}

我的文件夹结构正确,并且在不同的构建变体中唯一覆盖的是strings.xml(其中应用程序名称不同)。这一切都正常工作。

现在,在调试时选作构建变量,我尝试引用资源布局文件,我得到如下所示:

Error:(16) No resource identifier found for attribute 'arc1Color' in package 'app.myapp.debug'



为什么在“app.myapp.debug”中查找? Java软件包应保持相同,只有在构建时合并 list 中的软件包ID(和应用程序ID)应该不同。还是我的想法错了?

我正在使用'com.android.tools.build:gradle:2.3.3'并运行AS 2.3.1

最佳答案

不要将Java软件包与软件包名称和应用程序ID混淆。

When you create a new project in Android Studio, the applicationId exactly matches the Java-style package name you chose during setup. However, the application ID and package name are independent of each other beyond this point. You can change your code's package name (your code namespace) and it will not affect the application ID, and vice versa



和:

Although you may have a different name for the manifest package and the Gradle applicationId, the build tools copy the application ID into your APK's final manifest file at the end of the build. So if you inspect your AndroidManifest.xml file after a build, don't be surprised that the package attribute has changed



更多 details here

由于您正在使用:
debug {
applicationIdSuffix ".debug"
}

您的软件包变为 'app.myapp.debug',但您的类的Java软件包未更改。

Error:(16) No resource identifier found for attribute 'arc1Color'



这意味着在 调试构建类型中,您没有定义 arc1Color属性(可能是在其他构建类型内部的资源中定义的)。检查您的资源文件。

关于java - 为什么Android Studio尝试在调试包而不是主要包中定位资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46163981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com