gpt4 book ai didi

android - 使用 Gradle 覆盖库项目 list 中的 applicatoinID

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:31:53 24 4
gpt4 key购买 nike

我有一个引用库项目的主项目。它们都是用 Gradle 编译的。

这是主项目 gradle 文件的默认配置:

defaultConfig {
applicationId "com.example.app"
minSdkVersion 15
targetSdkVersion 21
versionCode 2
versionName "1.0"
}

这是库项目 gradle 文件的默认配置:

defaultConfig {
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}

如您所见,我没有在库中声明任何 applicationId。

我在我的项目中定义了一个权限,如下所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.library">

<permission android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature" />

当我构建项目时,applicationId 被替换为 com.example.library(库包名称)。那不是我想要的。我希望将其替换为 com.example.app,因为它是我应用的 applicationId

如果我将 ${applicationID} 占位符放在应用程序的 list 文件中,一切正常。

有谁知道这是否可以实现以及如何实现?

最佳答案

我看到了以下解决方案:

项目build.gradle

ext {
applicationId = "com.yourproject"
}

应用构建.gradle

defaultConfig {
applicationId rootProject.applicationId
}

库 build.gradle

buildTypes {
release {
buildConfigField 'String', 'ROOT_APPLICATION_ID', rootProject.applicationId
}
debug {
buildConfigField 'String', 'ROOT_APPLICATION_ID', "\"" + rootProject.applicationId + ".dev\""
}
}

此外,如果您想在 Manifest 中使用变量,请使用以下方式:

库 build.gradle

android {

defaultConfig {
manifestPlaceholders = [ROOT_APPLICATION_ID:rootProject.applicationId]
}

buildTypes {
release {
buildConfigField 'String', 'ROOT_APPLICATION_ID', "\"" + manifestPlaceholders.get("ROOT_APPLICATION_ID")+ "\""
}
debug {
manifestPlaceholders.put("ROOT_APPLICATION_ID", rootProject.applicationId + ".dev");
buildConfigField 'String', 'ROOT_APPLICATION_ID', "\"" + manifestPlaceholders.get("ROOT_APPLICATION_ID")+ "\""
}
}

}

defaultConfig 中的变量将在 mainfest 中可用,而 buildTypes 中的变量将在代码中可用。

list

<provide android:name="com.lazada.core.storage.db.LazadaContentProvider"
android:authorities="${ROOT_APPLICATION_ID}.authority"
android:exported="false" />

关于android - 使用 Gradle 覆盖库项目 list 中的 applicatoinID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27988186/

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