我想在我的应用程序中调试一些依赖项,只有在我调试我的应用程序时,例如我只想将Stetho
用于调试,而不是在最终版本中,我该如何实现?
我尝试创建另一个名为debug的文件夹,并创建DebugApp
从我的应用程序扩展但我不知道如何运行此DebugApp
,也许我应该在Gradle中添加一些东西?
public class DebugApp extends App {
@Override
protected void init() {
super.init();
DebugAppInitializer.initStetho(this);
DebugAppInitializer.initCrashczyk(this);
}
}
如果我可以将它链接到我的productFlavors
那就太棒了答案 0 :(得分:8)
您可以像这样输入代码:
if(BuildConfig.DEBUG){
... //debug init
} else {
....//release init
}
或强>
1)创建这样的项目结构:
2)Gradle风味:
productFlavors {
driver {
applicationId "android.com.driver"
versionName "1.0"
buildConfigField "Boolean", "DRIVER_SESSION", "true"
minSdkVersion 16
targetSdkVersion 23
}
passenger {
applicationId "android.com.passenger"
versionName "1.0"
buildConfigField "Boolean", "DRIVER_SESSION", "false"
minSdkVersion 16
targetSdkVersion 23
}
}
sourceSets {
passenger {
manifest.srcFile 'src/passenger/AndroidManifest.xml'
}
driver {
manifest.srcFile 'src/driver/AndroidManifest.xml'
}
}
3)需要创建不同的类并为每个清单文件放置应用程序名称:
在驱动程序包中显示 - >
<application
android:name=".application.YourFirstAppInDriverPackage"
...
>
在乘客包装中显示 - &gt;
<application
android:name=".application.YourSecondAppInPassengerPackage"
...
>
4)在两个项目之间切换开发模式:
答案 1 :(得分:3)
我相信你正在寻找:https://www.littlerobots.nl/blog/stetho-for-android-debug-builds-only/
TL; DR:为了激活您的DebugApp,您需要覆盖debug
文件夹中的清单,如下所示:
<manifest
package="com.mycompany"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:name"
android:name=".DebugApp"/>
</manifest>