Создайте отдельный apk для отдельного варианта в Android для запуска на одном устройстве

Я уже задавал подобный вопрос, но не смог найти то, что ищу. Поэтому снова спрашиваю. Я хочу одновременно запускать отдельные APK-файлы на одном устройстве.

Я использовал build.gradle(app) для создания различных вариантов apk. Но установка разных версий одного и того же apk отменяет предыдущую. Я хочу создать разные apks для одновременного запуска на одном устройстве. Я хочу создать разные apk с разными приложениями, которые можно установить на одном устройстве и запускать одновременно. Любая ссылка или учебник или прямая помощь приветствуются.

Мой build.gradle выглядит следующим образом:

 productFlavors {
    production {
        applicationId
        "com.abc.def"
        buildConfigField 'String', 'HOST', '"http://example.com/api/"'
    }
    staging {
        applicationId
        "staging.com.abc.def"
        buildConfigField 'String', 'HOST', '"http://example.com/api/"'
    }
    backendtesting {
        applicationId
        "backendtesting.com.abc.def"
        buildConfigField 'String', 'HOST', '"http://example.com/api/"'
    }

}

person SimpleCoder    schedule 15.10.2015    source источник


Ответы (3)


Не ставьте разрывы строк между командой gradle и ее аргументом. Он будет читать каждую строку отдельно, поскольку разрывы строк являются разделителями команд для gradle (например, как ; для java)

Например, используйте:

applicationId "com.abc.def"

вместо

applicationId
"com.abc.def"
person SilverCorvus    schedule 25.10.2015

В этом сообщении объясняется шаг шаг за шагом, как настроить структуру каталогов и файл gradle.

Основные шаги:

  1. добавьте контейнер вкусов продукта в файл приложения build.gradle

    productFlavors { free { applicationId "antoniocappiello.com.buildvariantsexample.free" } paid { applicationId "antoniocappiello.com.buildvariantsexample.paid" } }

  2. создайте внутри src каталог с точным названием вкуса продукта, который вы хотите, чтобы он отличался от основного варианта, например, с конфигурацией на шаге 1 имя каталога может быть платным или бесплатным. И внутри этого каталога создайте подпапку res/drawable, куда вы собираетесь поместить новое приложение значок запуска.

Пример структуры каталогов

person Antonio Cappiello    schedule 25.10.2015

Вы можете установить разные applicationId для разных вкусов. Таким образом, разные версии будут рассматриваться как разные приложения и не будут перезаписывать друг друга при их установке на одном устройстве.

Например, следующий фрагмент кода создаст два варианта: prod и dev с разными пакетами приложений. Вы можете установить их вместе на устройство.

productFlavors {
        dev {
            applicationId "com.swagata.devbuild"
        }

        prod {
            applicationId "com.swagata.prodbuild"
        }
    }
person Swagata Acharyya    schedule 15.10.2015
comment
Я отредактировал вопрос с помощью фрагмента кода файла gradle. Я уже использовал этот подход. Но это не работает. пожалуйста, проверьте и предложите, если я что-то упустил. заранее спасибо. - person SimpleCoder; 15.10.2015
comment
@SimpleCoder Как вы создаете разные apk для разных вкусов? ./gradlew assemble создает разные apk, которые могут работать независимо, если вы будете следовать этому подходу. - person Swagata Acharyya; 18.10.2015