在我的应用程序中运行不同的App类(用于调试)

时间:2016-02-26 13:24:25

标签: android gradle

我想在我的应用程序中调试一些依赖项,只有在我调试我的应用程序时,例如我只想将Stetho用于调试,而不是在最终版本中,我该如何实现?

我尝试创建另一个名为debug的文件夹,并创建DebugApp从我的应用程序扩展但我不知道如何运行此DebugApp,也许我应该在Gradle中添加一些东西?

public class DebugApp extends App {
    @Override
    protected void init() {
        super.init();
        DebugAppInitializer.initStetho(this);
        DebugAppInitializer.initCrashczyk(this);
    }
}

如果我可以将它链接到我的productFlavors

那就太棒了

2 个答案:

答案 0 :(得分:8)

您可以像这样输入代码:

if(BuildConfig.DEBUG){
... //debug init
} else {
....//release init
}

1)创建这样的项目结构:

enter image description here

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)在两个项目之间切换开发模式:

enter image description here

答案 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>