android - 如何根据构建变体更改 AndroidManifest.xml 文件?

标签 android

我有一个具有多个构建变体的应用程序。这些变体用于为不同的公司构建同一应用程序的版本。所以,我有几个不同的变体来构建不同的应用程序:

  • com.acme.app1
  • com.schmoe.app2
  • com.yop.app3
  • 等...

build.gradle 文件处理得很好:

     productFlavors {
    app1 {
        applicationId "com.acme.app1"
    }

    app2 {
        applicationId "com.schmoe.app2"
    }

    app3 {
        applicationId "com.yop.app3"
    }

}

这是我的问题。我正在将 Dropbox 集成到我的应用程序中。必须为每个变体更改 AndroidManifest.xml 文件以包含适当的应用程序 key (存储在我的字符串文件中)。 Dropbox 在 list 文件中添加了以下内容:

         <activity
        android:name="com.dropbox.client2.android.AuthActivity"
        android:launchMode="singleTask"
        android:configChanges="orientation|keyboard">

        <intent-filter>
            <!-- Change this to be db- followed by your app key -->
            <data android:scheme="db-abcdef" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

每个构建变体都需要更改以下行:

 <data android:scheme="db-abcdef" />

为每个应用变体设置适当的值。换句话说,我需要根据构建变体替换上面的部分字符串。例如

应用1

 <data android:scheme="db-111111" />

应用2

 <data android:scheme="db-222222" />

应用3

 <data android:scheme="db-333333" />

对于直到文本“db-”的每个变体,该行都是相同的。

我需要的是用我的字符串文件中的字符串动态替换字符串的可变部分(x 值)“db-xxxxxx”。

我认为这可以用 gradle 脚本来完成,但我是 gradle 的新手。帮助!

如果您能提供帮助,请非常具体地说明我在 gradle 文件和脚本编写方面的表现不佳。提前致谢!

最佳答案

您也可以将字符串保存在 build.gradle 中:

productFlavors {
    app1 {
        applicationId "com.acme.app1"
        resValue "string", "my_app_key", "db-abc"
    }

    app2 {
        applicationId "com.schmoe.app2"
        resValue "string", "my_app_key", "db-def"
    }

    app3 {
        applicationId "com.yop.app3"
        resValue "string", "my_app_key", "db-ghi"
    }
}

然后像这样使用它:

<data android:scheme="@string/my_app_key" />

关于android - 如何根据构建变体更改 AndroidManifest.xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28077145/

相关文章:

javascript - 双击在 ios 和 android (PhoneJS) 上不起作用

android - 如何从扫描的 BLE 设备中读取原始数据?

android - SharedPreferences 字符串名称

android - 如何使用 Kivy for Android 以 root 身份读取/写入文件?

android - 单击编辑文本时上推内容

android - 从android中的<img>标签中提取图片src

java - 使用 Kimono Labs 的 Authorize Bearer header 的 GET 请求在 SSL 中的异常

java - 来自另一个类的多个 Activity 的 setContentView

android - Android React Native 中的多个可扩展 ListView

android - seekBar 和文本切换器