假设我有以下构建变体:debug
,qa
和release
。是否可以在debug
和qa
的源集中设置一个活动,但不包括在release
中?
答案 0 :(得分:3)
我想出了如何做到这一点。首先,将YourActivity.java从src/main/
移至src/debug/
AND src/qa/
。确保保持活动在src/main/
中具有的相同目录结构。
您还将从src/main/AndroidManifest.xml
中删除活动代码。然后使用Android Studio的清单合并,使用新文件src/debug/AndroidManifest.xml
和src/qa/AndroidManifest.xml
中的以下代码将活动代码添加到原始清单:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.example">
<application
android:name="MyApplication">
<activity android:name=".fq_domain.YourActivity"/>
</application>
</manifest>
最后,模糊对该Activity的所有调用,如下所示:
try {
Intent intent = new Intent(this, Class.forName("com.example.example.fq_domain.YourActivity"));
startActivity(intent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
这是release
版本的情况,它不应该崩溃,因为它没有在清单中定义活动。
答案 1 :(得分:-2)
是的,这是可能的。您可以创建临时活动并检查构建变体。
在MainActivity中:
if (BuildConfig.DEBUG) {
startActivity(DebugAcivity)
} else if (BuildConfig.QA) {
startActivity(QaActivity)
} else if (...) {
...
}