活动仅包含在特定的构建变体中

时间:2016-10-14 17:45:17

标签: android

假设我有以下构建变体:debugqarelease。是否可以在debugqa的源集中设置一个活动,但不包括在release中?

2 个答案:

答案 0 :(得分:3)

我想出了如何做到这一点。首先,将YourActivity.java从src/main/移至src/debug/ AND src/qa/。确保保持活动在src/main/中具有的相同目录结构。

您还将从src/main/AndroidManifest.xml中删除活动代码。然后使用Android Studio的清单合并,使用新文件src/debug/AndroidManifest.xmlsrc/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 (...) {
  ...
}