在清单中使用变量

Posted

技术标签:

【中文标题】在清单中使用变量【英文标题】: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在某处定义一个变量并将其分配给元数据?

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于在清单中使用变量的主要内容,如果未能解决你的问题,请参考以下文章

如何编写yaml格式的Ansible主机清单(inventory)及清单变量使用Demo

如何编写yaml格式的Ansible主机清单(inventory)及清单变量使用Demo

如何在数组中使用多个变量

将 API 密钥放在哪里?清单中的资源、元数据还是静态变量? [复制]

如何从应用程序的(布局)XML 变量中获取清单版本号?

如何从应用程序的(布局)XML 变量中获取清单版本号?