gpt4 book ai didi

Android Gradle 将包名称替换为 list 中的值

转载 作者:IT王子 更新时间:2023-10-29 00:03:41 25 4
gpt4 key购买 nike

我正在使用带有产品风格的 Gradle,我为每个风格设置了不同的包名称。

productFlavors {

appone {
packageName "com.dg.app1"
}

apptwo {
packageName "com.dg.app2"
}

appthree {
packageName "com.dg.app3"
}

appfour {
packageName "com.dg.app4"
}

}

我需要能够为每个相应的应用替换 list 中的包名称。

我的 list 有这个:

<receiver android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />

<category android:name="com.dg.example" />
</intent-filter>
</receiver>

所以我需要为每个应用风格的包名称替换 com.dg.example。最好的方法是什么?

最佳答案

Gradle 插件 v0.12 及更高版本:

使用 ${applicationId}而不是 ${packageName} .

Gradle 插件 v0.11 及更高版本:

从 v0.11 开始,您不再需要指定不使用旧的 list 合并。

Gradle 插件 v0.10 及更高版本:

假设您使用的是 0.10 或更高版本,现在正式支持:

buildscript {
repositories {
mavenCentral()
}
dependencies {
// Make sure this is at least 0.10.+
classpath 'com.android.tools.build:gradle:0.10.+'
}
}

从 v0.10 开始,您还必须手动启用新的 manifest merger ,尽管我希望只要新合并成为默认版本,该要求就会在一两个版本中消失:

android {
useOldManifestMerger false
}

然后,只需使用 ${packageName} AndroidManifest.xml 中的任何地方您通常会硬编码包名称。例如:

<category android:name="my.package.name"/>

会变成

<category android:name="${packageName}"/>


Gradle 插件 v0.9 及以下版本:

所以,引用 this post ,看来这还没有通过 Gradle 正式支持。一个简单的解决方法如下:

  1. 用自定义标签替换包名(例如 <category android:name="my.package.name"/> 变为 <category android:name="_PACKAGENAME_"/>
  2. 将以下内容添加到您的 build.gradle ,在 android 下范围:

applicationVariants.all { variant ->
// After processing the manifest, replace all instances of your tag
// with the variant's actual package name.
variant.processManifest << {
def manifestOutFile = variant.processManifest.manifestOutputFile
def newFileContents = manifestOutFile.getText('UTF-8').replace("_PACKAGENAME_", variant.packageName)
manifestOutFile.write(newFileContents, 'UTF-8')
}
}

关于Android Gradle 将包名称替换为 list 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21109019/

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