【问题标题】: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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 2022-11-20
        • 2012-01-04
        • 2018-06-02
        • 2017-12-12
        相关资源
        最近更新 更多