我想为我的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文件会是什么样的?
答案 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如果找不到,那是正确的吗?
假设mockDebug
是mock
风格和debug
构建类型(同样适用于qaDebug
),那么是。
因此,您在Application
和debug
构建类型的同一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
。