android studio - 如何制作两个自定义应用程序类

时间:2015-08-01 22:29:52

标签: android android-studio android-productflavors leakcanary

我想为我的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如果找不到,那是正确的吗?

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

2 个答案:

答案 0 :(得分:6)

如果您需要使用两个不同的类,则可以始终利用清单合并。在调试文件夹中,添加第二个应用程序类和仅包含新应用程序名称的清单

<manifest package="your.package"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <application
        android:name=".DebugExampleApplication"
        tools:replace="android:name"/>
</manifest>

答案 1 :(得分:3)

  

我似乎无法弄清楚如何在androidManifest中声明另一个应用程序。

清单中只有一个。

  

所以,如果我正确理解buildTypes然后如果我只有一个主文件夹,它用于释放和调试(默认/回退)但如果我指定一个调试文件夹然后如果我运行任何调试风味我可能会喜欢mockDebug,qaDebug等然后它将首先查看该文件的调试文件夹,然后转到main如果找不到,那是正确的吗?

假设mockDebugmock风格和debug构建类型(同样适用于qaDebug),那么是。

因此,您在Applicationdebug构建类型的同一Java包中拥有release类。清单和使用Application类的Java代码将在一个Java包中引用它。您获得的Application课程的哪个版本取决于您是在进行debug版本还是release版本。

  

另外,那我将如何在我的清单中声明使用哪一个?

与正常情况相同。

  

gradle文件是什么样的?

任何Gradle构建文件都不需要进行任何更改。

  

关于在gradle中查看bulidTypes的建议想象我为我的调试应用程序覆盖做了以下结构

不,至少我是如何查看项目树的。你会:

[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