【问题标题】:Use variables in manifest在清单中使用变量
【发布时间】:2019-09-23 15:48:51
【问题描述】:
在Android中集成Branch-io等一些库需要在项目清单中定义元数据。其中一些变量就像TestMode
<meta-data android:name="io.branch.sdk.TestMode" android:value="true" />
因此,当我们要发布应用程序时,我们应该将其更改为 False。
有没有办法根据BuildType在某处定义一个变量并将其分配给元数据?
【问题讨论】:
标签:
android
gradle
android-manifest
branch.io
【解决方案1】:
您可以通过将 manifestPlaceholders 添加到您的 build.gradle 文件中来做到这一点:
android {
...
buildTypes {
debug {
manifestPlaceholders = [isBranchSdkInTestMode:"true"]
...
}
release {
manifestPlaceholders = [isBranchSdkInTestMode:"false"]
...
}
}
...
}
在AndroidManifest.xml中,可以使用${isBranchSdkInTestMode}:
<meta-data android:name="io.branch.sdk.TestMode" android:value="${isBranchSdkInTestMode}" />
【解决方案2】:
是的,您可以将构建变量从 gradle 注入到清单中,这是通过将变量添加到 build.gradle 来完成的:
android {
defaultConfig {
manifestPlaceholders = [hostName:"www.example.com"]
}
deployConfg {
manifestPlaceholders = [hostName:"www.prod-server.com"]
}
...
}
然后在您的清单中,您可以通过以下方式获取它:
<intent-filter ... >
<data android:scheme="http" android:host="${hostName}" ... />
...
</intent-filter>
你可以阅读更多关于它是如何工作的here。