在将Android Studio更新到1.0后,我看到了以下错误:
我按照建议更新了Gradle插件,但我不明白如何解决这个问题。
htrmnn0y1#
基于info:库项目中的ApplicationId不能使用applicationId自定义库项目的包。包名必须在库项目中固定(并在清单中指定为packageName)。Gradle插件之前没有强制执行此限制。从库的build.gradle文件中删除applicationId变量应该可以解决此问题。
build.gradle
57hvy0tb2#
**感谢Joel的正确答案:**我只需要从te .gradle文件中删除一行:
.gradle
defaultConfig { applicationId "com.super.app" <---- remove this line minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" }
成为
defaultConfig { minSdkVersion 15 targetSdkVersion 19 versionCode 1 versionName "1.0" }
androidmanifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.super.app"> ...
如果您不需要重命名应用程序的软件包名称,这是正确的解决方案。要重命名它,您需要使用“flavours”:
android { ... productFlavors { flavor1 { applicationId 'com.super.superapp' } }
jmo0nnb33#
库不能设置applicationId,如果你在一个多模块的项目中工作,并从一个单独的文件中获取flavors,上面的答案都不起作用。对于模块化的应用程序,您需要以下步骤-在项目根目录中创建flavors.gradle文件
applicationId
flavors
flavors.gradle
ext.flavorConfig = { // 1 flavorDimensions "pricing" productFlavors { free { dimension "pricing" ext.myApplicationIdSuffix = '.free' // 2 } paid { dimension "pricing" ext.myApplicationIdSuffix = '.paid' } } productFlavors.all { flavor -> // 3 if (flavor.hasProperty('myApplicationIdSuffix') && isApplicationProject()) { flavor.applicationIdSuffix = flavor.myApplicationIdSuffix } } } def isApplicationProject() { // 4 return project.android.class.simpleName.startsWith('BaseAppModuleExtension') }
剩下的就是在模块的build.gradle文件中使用这个闭包。例如,在应用程序模块中,它看起来像这样:
apply plugin: 'com.android.application' apply from: "${rootProject.projectDir}/flavors.gradle" android { // other config... with flavorConfig }
如果不清楚,可以查看this article以更好地理解。
l3zydbqr4#
只是以防万一,它可以帮助一些人:当我将一个Eclipse项目导入Android Studio时,我得到一个错误:
“错误:应用程序和测试应用程序ID不能相同”
奇怪的是,我查看了build.gradle,发现了两个占位符,一个用于application,另一个用于testapplication。我删除了testApplicationId,正如这篇文章中所建议的那样,这帮助我解决了这个问题。注意:此解释与此问题中发布的错误无关,但可能会帮助遇到类似错误的人。
bqujaahr5#
不能为库定义applicationId。但是如果你想在你的构建文件中使用一个标识符,它会给予你你的库包名,你可以为模块定义一个变量,然后根据需要使用这个值。例如:Library's build.gradle
apply plugin: 'com.android.library' def libraryGroupId = 'com.google.example' def libraryArtifactId = project.getName() def libraryVersion = '1.1'
此外,您可以根据需要在lib中的构建文件本身中使用下面的值。
android { compileSdkVersion 28 defaultConfig { minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "$libraryVersion" resValue "string", "Library", libraryGroupId" } }
kqlmhetl6#
如果您正在创建一个模块化应用程序,则applicationId变量应该位于主模块的build.gradle文件中,但applicationId不应该位于其他模块的build.gradle文件中。例如:主模块build.gradle
applicationId "com.example.exampleProject"
其他模块/ Modules build.gradle
group = 'com.example.exampleOtherModule'
6条答案
按热度按时间htrmnn0y1#
基于info:
库项目中的ApplicationId
不能使用applicationId自定义库项目的包。包名必须在库项目中固定(并在清单中指定为packageName)。Gradle插件之前没有强制执行此限制。
从库的
build.gradle
文件中删除applicationId变量应该可以解决此问题。57hvy0tb2#
**感谢Joel的正确答案:**我只需要从te
.gradle
文件中删除一行:成为
androidmanifest.xml
如果您不需要重命名应用程序的软件包名称,这是正确的解决方案。要重命名它,您需要使用“flavours”:
jmo0nnb33#
库不能设置
applicationId
,如果你在一个多模块的项目中工作,并从一个单独的文件中获取flavors
,上面的答案都不起作用。对于模块化的应用程序,您需要以下步骤-在项目根目录中创建
flavors.gradle
文件剩下的就是在模块的
build.gradle
文件中使用这个闭包。例如,在应用程序模块中,它看起来像这样:如果不清楚,可以查看this article以更好地理解。
l3zydbqr4#
只是以防万一,它可以帮助一些人:
当我将一个Eclipse项目导入Android Studio时,我得到一个错误:
“错误:应用程序和测试应用程序ID不能相同”
奇怪的是,我查看了build.gradle,发现了两个占位符,一个用于application,另一个用于testapplication。
我删除了testApplicationId,正如这篇文章中所建议的那样,这帮助我解决了这个问题。
注意:此解释与此问题中发布的错误无关,但可能会帮助遇到类似错误的人。
bqujaahr5#
不能为库定义applicationId。但是如果你想在你的构建文件中使用一个标识符,它会给予你你的库包名,你可以为模块定义一个变量,然后根据需要使用这个值。
例如:Library's build.gradle
此外,您可以根据需要在lib中的构建文件本身中使用下面的值。
kqlmhetl6#
如果您正在创建一个模块化应用程序,则
applicationId
变量应该位于主模块的build.gradle
文件中,但applicationId
不应该位于其他模块的build.gradle
文件中。例如:
主模块build.gradle
其他模块/ Modules build.gradle