我想为我的 android 项目设计两个自定义应用程序。自定义应用程序是一种扩展应用程序的应用程序。我希望我的发布版本有一个自定义应用程序,而调试版本有另一个。 LeakCanary 站点在标记为“自定义和使用无操作依赖项”的部分中讨论了这个 here

我似乎无法弄清楚如何在 androidManifest 中声明另一个应用程序。现在我已将其设置为使用这样的单个自定义应用程序:

public class MyFirstCustomApplication extends Application {

@Override public void onCreate() {
    super.onCreate();
    LeakCanary.install(this);
}
}

我如何制作上述代码仅用于调试?

和 androidManifest 覆盖看起来像这样:
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name="org.somesite.cool.MyFirstCustomApplication">

我将如何发布另一个 MySecondCustomApplication ?

更新:关于在 gradle 中查看 bulidTypes 的建议,想象一下我为我的调试应用程序覆盖做了以下结构:
[Project Root]
  -[Module]
    -src
      -main
        -ExampleApplication
        -res

      -debug
        -DebugExampleApplication
        -res

所以如果我正确理解 buildTypes 那么如果我只有一个主文件夹用于发布和调试(它的默认/回退)但是如果我指定一个调试文件夹那么如果我运行任何调试风格我可能有像 mockDebug,qaDebug等然后它会首先在调试文件夹中查找文件,然后如果没有找到则转到 main,对吗?

另外,那么我将如何在 list 中声明要使用哪一个? gradle 文件会是什么样子?

最佳答案



list 中只有一个。



假设 mockDebugmock 风格和 debug 构建类型(对于 qaDebug 也是如此),那么是的。

因此,您的 Application 类位于 debugrelease 构建类型的同一个 Java 包中。 list 以及使用 Application 类的 Java 代码将在该 Java 包中引用它。您获得的 Application 类的哪个版本取决于您是在进行 debug 构建还是 release 构建。



和正常一样。



为此,任何 Gradle 构建文件都不需要更改。



不,至少我将如何查看项目树。你将会拥有:

[Project Root]
  -[Module]
    -src
      -main
        -java
          - your.package.here
            - Things.java
            - ThatAre.java
            - NotYourCustomApplication.java
            - ButOtherwiseAreCommon.java
            - ForAllBuildTypes.java
        -res

      -debug
        -java
          - your.package.here
            - YourCustomApplication.java
        -res

      -release
        -java
          - your.package.here
            - YourCustomApplication.java
        -res

请注意,在每个特定于构建类型的源集中,它是相同的 your.package.here 和相同的 YourCustomApplication.java

10-07 19:45
查看更多