Answers:
根据此信息:
图书馆项目中的ApplicationId
您不能使用applicationId来定制库项目的程序包。包名称必须在库项目中固定(并在清单中指定为packageName)。Gradle插件较早没有实施此限制。
从库build.gradle
文件中删除applicationId变量应该可以解决此问题。
感谢Joel的正确回答:我只需要从te .gradle
文件中删除1行:
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">
...
如果您不需要重命名应用程序的程序包名称,则这是正确的解决方案。要重命名它,您需要使用“味道”:
android {
...
productFlavors {
flavor1 {
applicationId 'com.super.superapp'
}
}
以防万一它有助于一些:
当我将eclipse项目导入android studio时,出现错误::
“错误:应用程序和测试应用程序ID不能相同”
虽然很奇怪,但是我查看了build.gradle,发现了两个占位符,一个占位符用于应用程序,另一个占位符用于testapplication。
我按照这篇文章中的建议从中删除了testApplicationId,这帮助我解决了问题。
注意:此说明与此问题中发布的错误无关,但可能会帮助遇到类似错误的人。
您不能为您的库定义applicationId。但是,如果要在构建文件中使用一个标识符,该标识符将为您提供库包名称,则可以为模块定义一个变量,然后根据需要使用该值。
例如:图书馆的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"
}
}