Как добавить более похожие задачи и настройки в Android-модуль Jan Berkel в SBT?

Я пытаюсь расширить Android-модуль Jan Berkel для Scala, который использует SBT .

У меня есть аналогичные действия и настройки, такие как уже установленный android:install-device и android:install-emulator .
Пусть они называются android:dev-install-device и android:dev-install-emulator .

Я добавил новые ключи в AndroidKeys.scala :

 val devInstallDevice = TaskKey[Unit]("dev-install-device") val devInstallEmulator = TaskKey[Unit]("dev-install-emulator") val devStartDevice = TaskKey[Unit]("dev-start-device", "Start package on device after installation") val devStartEmulator = TaskKey[Unit]("dev-start-emulator", "Start package on emulator after installation") 

Я также добавил вещи в AndroidLaunch.scala :

 lazy val settings: Seq[Setting[_]] = //AndroidInstall.settings ++ AndroidFastInstall.settings ++ inConfig(Android) (Seq ( devStartDevice <<= startTask(false), devStartEmulator <<= startTask(true), //startDevice <<= startTask(false), //startEmulator <<= startTask(true), devStartDevice <<= devStartDevice dependsOn devInstallDevice, devStartEmulator <<= devStartEmulator dependsOn devInstallEmulator //startDevice <<= startDevice dependsOn installDevice, //startEmulator <<= startEmulator dependsOn installEmulator )) 

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

Есть ли что-то, что я пропускаю?


Обновить:
Я пробовал разные настройки.

Когда AndroidFastInstall появляется перед AndroidInstall , AndroidInstall выполняется независимо от того, я вызываю android:install-device или android:dev-install-device .

  lazy val settings: Seq[Setting[_]] = AndroidFastInstall.settings ++ inConfig(Android) (Seq ( devStartDevice <<= devStartTask(false), devStartEmulator <<= devStartTask(true), devStartDevice <<= devStartDevice dependsOn devInstallDevice, devStartEmulator <<= devStartEmulator dependsOn devInstallEmulator ))++ AndroidInstall.settings ++ inConfig(Android) (Seq ( startDevice <<= startTask(false), startEmulator <<= startTask(true), startDevice <<= startDevice dependsOn installDevice, startEmulator <<= startEmulator dependsOn installEmulator )) 

Когда AndroidInstall поставляется до AndroidFastInstall , AndroidFastInstall выполняется независимо от того, я вызываю android:install-device или android:dev-install-device .

  lazy val settings: Seq[Setting[_]] = AndroidInstall.settings ++ inConfig(Android) (Seq ( startDevice <<= startTask(false), startEmulator <<= startTask(true), startDevice <<= startDevice dependsOn installDevice, startEmulator <<= startEmulator dependsOn installEmulator )) ++ AndroidFastInstall.settings ++ inConfig(Android) (Seq ( devStartDevice <<= devStartTask(false), devStartEmulator <<= devStartTask(true), devStartDevice <<= devStartDevice dependsOn devInstallDevice, devStartEmulator <<= devStartEmulator dependsOn devInstallEmulator )) 

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

Этот вопрос нуждается в дополнительной информации.

Вот полный исходный код: https://github.com/ioreskovic/android-plugin

По-видимому, вы скопировали settings из AndroidInstall в devSettings в AndroidFastInstall . Затем вы добавили новые клавиши задач в AndroidLaunch .

Проблема, с которой вы сталкиваетесь, заключается в том, что, по-видимому, вызов dev-install-device делает то же самое, что и install-device . Это не потому, что один охватывает видимость другого (они оба видны, просто они делают то же самое). Проблема в том, что они оба зависят от одного и того же набора других ключей задач, и вы дважды меняете эти клавиши задач – последнее изменение затеняет предыдущее.

В частности, ваша проблема здесь:

 lazy val settings: Seq[Setting[_]] = AndroidFastInstall.devSettings ++ ... AndroidInstall.settings ++ ... 

Посмотрите, что находится внутри этих settings и последовательностей devSettings :

AndroidFastInstall :

 lazy val devSettings: Seq[Setting[_]] = inConfig(Android) (devInstallerTasks ++ Seq ( uninstallEmulator <<= devUninstallTask(emulator = true), uninstallDevice <<= devUninstallTask(emulator = false), ... >>> proguard <<= proguardTask <<< 

AndroidInstall :

 lazy val settings: Seq[Setting[_]] = inConfig(Android) (installerTasks ++ Seq ( uninstallEmulator <<= uninstallTask(emulator = true), uninstallDevice <<= uninstallTask(emulator = false), ... >>> proguard <<= proguardTask <<< 

Здесь вы переопределяете ключ задачи, называемый proguard которого proguard как dev-install-device и install-device . Первый метод proguardTask находится в AndroidFastInstall , второй – в AndroidInstall и они делают разные вещи. Поскольку вы называете второе последним, он переопределяет то, что proguard задача proguard .

proguard внимание на proguard задачи proguard от которого proguard как proguard dev-install-device и install-device , но есть другие примеры таких ключей задач в settings и devSettings .)

Чтобы понять это лучше, вы должны понять, какие настройки и задачи действительно и как они работают:

См. «Определение ключа» для примеров того, как объявить ключ задачи.

См. «Реализация задачи» и «Вычисление значения на основе значений других ключей: << =» для примеров того, как реализовать задачу.

Это его суть – ключ задачи сначала объявляется и реализуется позже через := и <<= . <<= можно назвать несколько раз – каждый вызов <<= повторяет ключ задачи.

Чтобы ваши проблемы исчезли, создайте отдельные ключи proguard для dev и регулярных версий ваших задач. И делайте то же самое для противоречащих друг другу задач, кроме proguard .

Intereting Posts
Служба Google Play перестает работать, когда я совершаю покупку с помощью android.test.purchased MotionEvent GetY () и getX () возвращают неверные значения Как узнать, загружено ли приложение в первый раз или много раз с рынка? Окно курсора не может быть создано из связующего Как получить доступ к существующей базе данных sqlite в Android Emulator? Значок приложения Android не меняется на телефоне, несмотря на перезагрузку, удаление и переустановку Как конвертировать android.net.Uri в java.net.URL? Post id facebook share dialog всегда возвращает null в Android Как просмотреть кеш приложения, специфичного для Android? Пример проекта Android не работает из-за: Срок действия сертификата отладки Как применяются методы патчей AndFix? Как перехватить все события касания? Android java.lang.NoClassDefFoundError: R $ string Установите onClickListener в LinearLayout, заполненный пользовательским адаптером Как заставить Proguard сохранять файл ресурсов .xml?