Android使用不同的应用程序构建风格

时间:2015-03-05 14:18:05

标签: android android-productflavors stetho

我正在尝试在我的应用中分离调试和发布功能。例如,我正在使用Stetho和Mortar库。它们都需要重写Application类。但我希望Stetho只能在调试版本中访问。至少有两种方法:

在发布和调试版本中使用不同代码的MyApplication类。但在这种情况下,应该是发布版本中的用户的代码是重复的。

MyDebugApplication扩展MyApplication并且仅包含与调试相关的内容。在这种情况下,需要两个Manifest文件并合并一些文件。

所以我想知道哪种方法更有效率?

2 个答案:

答案 0 :(得分:1)

我采取了不同的方法。我使用config来确定打开的内容..这是一个简单的版本:

   if (BuildConfig.DEBUG) {
      Stetho.initialize(Stetho.newInitializerBuilder(app)
              .enableDumpapp(Stetho.defaultDumperPluginsProvider(app))
              .enableWebKitInspector(Stetho.defaultInspectorModulesProvider(app))
              .build());
      Timber.d("Stetho configured");
    }

但是想象一下,使用布尔资源而不仅仅是BuildConfig.DEBUG:

app.getResources().getBoolean(R.bool.stetho_enabled)

使用:

<bool name="wallet_production">true</bool>

settings.xml资源文件中,或某些东西......你甚至可以获得更高级的优势,并获得Optimizely live变量等支持。

我更喜欢这个,因为如果我需要在发布版本中打开Stetho或日志或其他内容,它就像更改xml文件一样简单。

答案 1 :(得分:0)

您完全应该在发行版和调试版中使用两个基类MyBaseApplication类,然后在主范围上扩展MyApplication类。

这样就可以复制逻辑,并且您在调试和发布时会有两种不同的行为。