Android 在清单中使用变量

Android 在清单中使用变量,android,gradle,android-manifest,branch.io,Android,Gradle,Android Manifest,Branch.io,在Android中集成一些库,如分支io,需要在项目清单中定义元数据。其中一些变量类似于TestMode <meta-data android:name="io.branch.sdk.TestMode" android:value="true" /> 因此,当我们想要发布应用程序时,我们应该将其更改为False 有没有办法根据BuildType在某个地方定义一个变量,并将其分配给该变量的元数据?是的,您可以将构建变量从gradle注入清单,这是通过将变量添加到build

在Android中集成一些库,如
分支io
,需要在项目清单中定义元数据。其中一些变量类似于
TestMode

    <meta-data android:name="io.branch.sdk.TestMode" android:value="true" />

因此,当我们想要发布应用程序时,我们应该将其更改为False


有没有办法根据
BuildType
在某个地方定义一个变量,并将其分配给该变量的元数据?

是的,您可以将构建变量从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>

...
您可以阅读更多有关此操作的信息。

您可以通过向build.gradle文件中添加以下内容来完成此操作:

android {
    ...
    buildTypes {
        debug {
            manifestPlaceholders = [isBranchSdkInTestMode:"true"]
            ...
        }
        release {
            manifestPlaceholders = [isBranchSdkInTestMode:"false"]
            ...
        }
    }
    ...
}
AndroidManifest.xml中,您可以将其用作
${isBranchSdkInTestMode}