0

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

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

MyDebugApplication扩展MyApplication并仅包含与调试相关的内容。在这种情况下,需要两个清单文件并以某种方式合并。

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

4

2 回答 2

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 实时变量等支持它。

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

于 2015-05-06T20:34:53.700 回答
0

您完全应该MyBaseApplication在发布和调试风格中使用两个基类,然后MyApplication在您的主范围内扩展该类。

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

于 2015-03-05T14:28:44.460 回答