Невозможно использовать конфигурацию запуска / отладки Android Studio с именем действия, установленным через ManifestPlaceholder - PullRequest
0 голосов
/ 30 октября 2019

ОК заголовок кажется немного запутанным. Давайте разберемся с ним.

У меня есть приложение с несколькими вариантами продуктов (demo, appOne, appTwo) и различными вариантами сборки (отладка, ночная версия, бета, выпуск).

Все варианты продукта,кроме одного, будет использоваться значение по умолчанию MainActivity, объявленное в main AndroidManifest.xml, все в каталоге main .

Исключением является demo один. Поэтому я создал DemoActivity, расположенный в исходном каталоге demo * 1016. *.

Я рассмотрел несколько решений, и только одно позволило мне достичь именно того, чего я хочу: manifestPlaceholder , чтобы узнать, что является запуском .

Мой уникальный AndroidManifest.xml

<application
    // usual configuration (although, appName is also set via a placeholder)

    <activity
            android:name="${launcherActivity}"
            android:screenOrientation="userPortrait"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

</application>

И в моем Gradle:

flavorDimensions "app"
    productFlavors {
        demo {
            versionName = "0.0.0"
            versionCode = 1

            applicationIdSuffix '.demo'

            manifestPlaceholders = [
                    appName: "Demo App",
                    launcherActivity: "com.mycompany.view.DemoActivity"
            ]
        }

        appOne {
            versionName = "1.0.2"
            versionCode = 7

            applicationIdSuffix '.appone'

            manifestPlaceholders = [
                    appName: "App ONE",
                    launcherActivity: "com.mycompany.view.main.MainActivity"
            ]
        }

        appTwo {
            versionName = "0.0.0"
            versionCode = 1

            applicationIdSuffix '.apptwo'

            manifestPlaceholders = [
                    appName: "App TWO",
                    launcherActivity: "com.mycompany.view.main.MainActivity"
            ]
        }
    }

В целом, это действительно работает. Если я просто установлю APK и коснусь значка запуска, он запустит правильные значения Activity, как и ожидалось.

Но Android Studio не удалось это сделать. Это проблема с инструментом Run/Debug Configuration:

Ошибка при выполнении: am start -n "com.mycompany.demo.debug / com.mycompany. \ $ {LauncherActivity}" -a android. intent.action.MAIN -c android.intent.category.LAUNCHER

Опять же, как я уже сказал, фактическая сборка APK работает без нареканий, просто Android Studio не способна запуститьDefault Activity.

Run/Debug basic configuration

Как настроить Android Studio? Спасибо за помощь.

...