Ви можете розгорнути на пристрій за допомогою градієнта з командного рядка

Те, що дійсно відповідає на запитання - чи можна видати будь-які команди безпосередньо для gradlew через командний рядок для створення, пакетування та розгортання на пристрої?

81
Командний рядок не є специфічним IDE, тобто. цей спосіб буде працювати з Android Studio або Eclipse-based IDE
додано Автор Paul Verest, джерело
градація завдань допомагає переглянути завдання поза вікна, що включає встановлення (але не починаючи, як вказано нижче)
додано Автор Dori, джерело

9 Відповіді

$ gradle installDebug

Це призведе до налагодження налагоджувальної apk для пристрою, але вам доведеться вручну запустити програму.

89
додано
дякую за відповідь
додано Автор Mona, джерело
Чи можна запустити цю команду у встановленому Gradle Plugin на Eclipse? Я отримую цю помилку: завдання 'installDebug' не знайдено у кореневому проекті 'blahblah'.
додано Автор Mr.Hyde, джерело
Я б сказала: /gradelew iD замість gradle iD
додано Автор irudyak, джерело
@ durka42 Це лише випадку, якщо ви використовуєте ароматизатори
додано Автор Mathijs Segers, джерело
Як зазначено нижче, його було перейменовано на "gradle installDefaultFlavorDebug"
додано Автор durka42, джерело

Оскільки ви використовуєте 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

Оновлення:

Якщо ви використовуєте applicationIdSuffix ".debug" , додайте .debug до appId only , але не залишайте активність:

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

71
додано
Як запустити тестування?
додано Автор ssk, джерело
Окрім того, останній параметр має бути 'com.your.packagename/.path.relative.to.your.packagename.MyA & cronity замість ' com.example/.MyActivity ', якщо ваша активність не знаходиться в корені вашого пакета.
додано Автор Light, джерело

1. Побудувати проект, встановити згенерований APK для пристрою

# at the root dir of project
$ gradle installDebug

2. Відкрийте програму на пристрої

$ adb shell am start -n yourpackagename/.activityname
63
додано
alias arun = "./ gradlew installDebug && adb shell start -n com.example.package/.LauncherActivity" # Runs step2 Лише коли успіх кроку 1
додано Автор Thamme Gowda, джерело
Я не можу вибрати installdebug в градусах. Відповідного завдання немає. Чи було його перейменовано?
додано Автор Jonas Gröger, джерело
@ rps_deepan Не могли б ви перейменувати завдання, оскільки його було перейменовано?
додано Автор Jonas Gröger, джерело
псевдонім arun = "gradle installDebug; shell shell start -n com.example.app/.activity.MainActivity"
додано Автор Dominic Bartl, джерело
Варто зазначити, що завдання може бути різним, якщо у вас є варіанти побудови (як показано в нижньому лівому куті Android Studio). Для мене команда була ./ gradlew installDevDebug . Це також може змінити пакет: am start -n com.example.example_dev/com.example.example.MainActivity . Це трохи втрутило мене.
додано Автор bmaddy, джерело
@ Йонас Грёгер, здається, був перейменований на installDefaultFlavorDebug
додано Автор durka42, джерело

Однорядкове речення:

Build project & Install generated apk & Open app on device

$ ./gradlew installDebug && adb shell am start -n com.example/.activities.MainActivity
6
додано

Для цього виконано три команди:

  1. ./ gradlew assembleDebug # Щоб побудувати проект

  2. adb install -r ./app/build/outputs/apk/app-debug.apk # Щоб встановити його на пристрій

  3. adb shell start -n $ PACKAGE/$ PACKAGE. $ ACTIVITY # Для запуску програми на пристрої , де $ PACKAGE - це пакет розробки, а $ ACTIVITY - це активність бути запущено (діяльність пускової установки).

Я написав скрипт баш, щоб зробити це , з іншими небагатьма функціями.

4
додано

Більш гнучким способом це зробити, використовуючи мавпу:

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

Деякі переваги цього методу:

  • getAdbExe doesn't require adb to be on the path and uses the adb version from the sdk pointed to in local.properties.
  • The monkey tool allows you to send a launcher intent, so you aren't required to know the name of your activity.
3
додано
Тоді ви не повинні писати файл збірки.
додано Автор kevr, джерело
@ 0xcaff, використовуючи android.intent.category.LAUNCHER 1 вам не потрібно знати активність.
додано Автор erm3nda, джерело
Але що робити, якщо ви не знаєте назви своєї діяльності?
додано Автор 0xcaff, джерело
Замість цього ви можете виконати команду adb shell start your.package.name.debugsuffix \ .Activity
додано Автор Vikram Bodicherla, джерело
Я думаю, що його дійсно погана ідея для файлу збірки явно вказує на те, яку активність запустити ... здається, що щось відокремлення проблем виявляється проти. Одна проста причина - якщо ви перейменуєте/переміщуєте файл активності, то тепер потрібно змінити файл збірки. Крім того, наміри виглядають як краще API, щоб бігти, ніж файл - я міг написати градледове розширення, яке додає стандартні наміри та способи їх запуску, його версію, і ніколи не потрібно знати імена класів будь-кого. Жорстке кодування ніколи не є правильною відповіддю.
додано Автор smaudet, джерело
Ця відповідь також не має способу знайти кореневий пакет - я також хотів би позбутися назви пакета - наприклад, Відкрийте це замість маніфесту.
додано Автор smaudet, джерело
task appStart(type: Exec, dependsOn: 'installDebug') {
    commandLine android.adbExe, 'shell', 'am', 'start', '-n', 'com.example/.MyActivity'
}
2
додано
Найкраще рішення пробігу
додано Автор Orgatres, джерело

Я написав це завдання, щоб мати можливість встановлювати, а також відкривати додаток на пристрої. Оскільки у мене було декілька buildTypes та ароматизаторів з різними ідентифікаторами програми, було неможливо жорстко кодувати назву пакета. Тому я написав це так:

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} .

1
додано

Build -> uninstall old verion -> install new version -> run application.

echo "Build application" && ./gradlew clean build && 
echo "Uninstall application" && adb uninstall [application package] && 
echo "Install application" && adb -d install app/build/outputs/apk//[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]
1
додано
Дякую. @ Александр-Поломодов
додано Автор Goffity, джерело
android_jobs_ua
android_jobs_ua
120 учасників

Публикуем вакансии и запросы на поиск работы по направлению Android. Здесь всё: full-time, part-time, remote и разовые подработки.

Mobile Dev Jobs UA
Mobile Dev Jobs UA
20 учасників

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin, RN и т.д.