Можете ли вы развернуть устройство с помощью Gradle из командной строки

В чем действительно говорит вопрос - можете ли вы выдавать какие-либо команды непосредственно в gradlew через командную строку для сборки, упаковки и развертывания на устройстве?

Ответ 1

$ gradle installDebug

Это приведет к отладке apk для устройства, но вы должны вручную запустить приложение.

Ответ 2

Поскольку вы используете Gradle, вы можете просто добавить свою собственную задачу в build.gradle

task appStart(type: Exec, dependsOn: 'installDebug') {
    // linux 
    commandLine 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'

    // windows
    // commandLine 'cmd', '/c', 'adb', 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'      
}

затем назовите его в корневом каталоге проекта

$ gradle appStart

Update:

Если вы используете applicationIdSuffix ".debug", добавьте .debug в appId только, но оставьте действие нетронутым:

'com.example.debug/com.example.MyActivity'

Ответ 3

1. Построить проект, установить сгенерированный apk на устройство

# at the root dir of project
$ gradle installDebug

2. Откройте приложение на устройстве

$ adb shell am start -n yourpackagename/.activityname

Ответ 4

Одно предложение:

Создать проект и установить сгенерированное приложение apk и Open на устройстве

$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity

Ответ 5

Для этого есть три команды:

  1. ./gradlew assembleDebug #To build the project

  2. adb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the device

  3. adb shell am start -n $PACKAGE/$PACKAGE.$ACTIVITY #To launch the application in the device, где $ PACKAGE - это пакет разработки, а $ ACTIVITY - запускаемое действие (действие запуска).

Я писал bash-скрипт для этого, с некоторыми другими функциями.

Ответ 6

Более гибкий способ сделать это - использовать обезьяну:

task runDebug (type: Exec, dependsOn: 'installDebug') {
    commandLine android.getAdbExe().toString(), "shell",
        "monkey",
        "-p", "your.package.name.debugsuffix",
        "-c", "android.intent.category.LAUNCHER", "1"
}

Некоторые преимущества этого метода:

  • getAdbExe не требует, чтобы adb находился на пути и использует версию adb из sdk, на которую указывает local.properties.
  • Инструмент monkey позволяет вам отправить намерение запуска, поэтому вам не требуется знать имя вашей деятельности.

Ответ 7

task appStart(type: Exec, dependsOn: 'installDebug') {
    commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'
}

Ответ 8

Я написал эту задачу, чтобы иметь возможность устанавливать и открывать приложение на устройстве. Поскольку у меня было несколько buildTypes и flavors с разными идентификаторами приложений, было трудно реализовать код имени пакета. Поэтому я написал это следующим образом:

android.applicationVariants.all { variant ->
    task "open${variant.name.capitalize()}" {
        dependsOn "install${variant.name.capitalize()}"

        doLast {
            exec {
                commandLine "adb shell monkey -p ${variant.applicationId} -c android.intent.category.LAUNCHER 1".split(" ")
            }
        }
    }
}

Это даст вам open{variant} для каждой задачи install{variant}, которую вы уже имеете.

Ответ 9

Сборка → удалить старую версию → установить новую версию → запустить приложение.

echo "Build application" && ./gradlew clean build && 
echo "Uninstall application" && adb uninstall [application package] && 
echo "Install application" && adb -d install app/build/outputs/apk/<build type>/[apk name].apk echo "Run application" && 
adb shell am start -n [application package]/.[application name]

Или если вы хотите установить и запустить приложение в режиме отладки.

./gradlew installDebug && adb shell am start -n [application package]/.[application name]