我正在尝试在我的应用中分离调试和发布功能。例如,我正在使用Stetho和Mortar库。它们都需要重写Application类。但我希望Stetho只能在调试版本中访问。至少有两种方法:
在发布和调试版本中使用不同代码的MyApplication
类。但在这种情况下,应该是发布版本中的用户的代码是重复的。
MyDebugApplication
扩展MyApplication
并且仅包含与调试相关的内容。在这种情况下,需要两个Manifest文件并合并一些文件。
所以我想知道哪种方法更有效率?
答案 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
类。
这样就可以复制逻辑,并且您在调试和发布时会有两种不同的行为。