首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控件清单元-来自gradle构建的数据

控件清单元-来自gradle构建的数据
EN

Stack Overflow用户
提问于 2015-04-10 07:12:26
回答 1查看 839关注 0票数 1

我需要构建两个版本的Android应用程序-一个用于测试人员(开发模式开启)和一个为用户(开发模式关闭)。怎么做?现在我有了清单中的元数据值,并在代码中使用它,但是在生成之前必须手动更改这个值。有可能通过gradle改变这一点吗?

清单

代码语言:javascript
复制
<meta-data android:name="developer.mode" android:value="true" />

代码

代码语言:javascript
复制
public class App extends Application {

    public static boolean DEVELOPER_MODE = false;

    ...

    private void loadMetaData() {
        try {
            ApplicationInfo ai = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
            DEVELOPER_MODE = ai.metaData.getBoolean("developer.mode");
        } catch (PackageManager.NameNotFoundException e) {
        }
    }
}

...

if(App.DEVELOPER_MODE) { ... }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-10 07:26:00

这是一个常见的情况有这样的转变。您可以使用元标记和清单合并来实现这一点,但我认为大多数开发人员都是为此目的使用BuildConfig的。您可以用自己的值扩展它:

代码语言:javascript
复制
buildTypes {
        debug {
            buildConfigField "boolean", "DEV_MODE", "true"
        }

        release {
            buildConfigField "boolean", "DEV_MODE", "false"
        }
}

或者检查已经由android插件提供的默认插件。

代码语言:javascript
复制
public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "com.stackoverflow.question.debug";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "flavor1";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "v1.0.1";
  // Fields from build type: debug
  public static final boolean DEV_MODE = true;
}

然后,您可以从应用程序java代码中引用此值。

代码语言:javascript
复制
if (BuildConfig.DEV_MODE) {
   // do developer things
}

BuildConfig是自动生成的文件,它将在每个构建变体组装任务上重新创建。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29555455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档