質問の本当の意味-コマンドラインを介してgradlewするコマンドを直接発行して、デバイスをビルド、パッケージ化、展開できますか?
$ gradle installDebug
これにより、デバッグビルドapkがデバイスにプッシュされますが、アプリケーションを手動で起動する必要があります。
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のみに追加しますが、アクティビティはそのままにします。
'com.example.debug/com.example.MyActivity'
1。プロジェクトのビルド、生成されたapkのデバイスへのインストール
# at the root dir of project
$ gradle installDebug
2。デバイスでアプリを開く
$ adb Shell am start -n yourpackagename/.activityname
一行文:
プロジェクトをビルドし、生成されたapkをインストールし、デバイスでアプリを開く
$ ./gradlew installDebug && adb Shell am start -n com.example/.activities.MainActivity
これを達成するための3つのコマンドがあります。
./gradlew assembleDebug #To build the project
adb install -r ./app/build/outputs/apk/app-debug.apk #To install it to the device
adb Shell am start -n $PACKAGE/$PACKAGE.$ACTIVITY #To launch the application in the device
、ここで$ PACKAGEは開発パッケージ、$ ACTIVITYは起動するアクティビティ(ランチャーアクティビティ)です。
私は これを行うためのbashスクリプト を他のいくつかの機能とともに書いています。
より柔軟な方法は、monkeyを使用することです。
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がパス上にある必要はなく、local.properties
で指定されたSDKのadbバージョンを使用します。monkey
ツールを使用すると、ランチャーのインテントを送信できるため、アクティビティの名前を知る必要はありません。task appStart(type: Exec, dependsOn: 'installDebug') {
commandLine Android.adbExe, 'Shell', 'am', 'start', '-n', 'com.example/.MyActivity'
}
このタスクは、デバイスにアプリケーションをインストールして開くこともできるように作成しました。異なるアプリケーションIDを持つ複数の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}
既に持っているタスク。
ビルド->古いバージョンのアンインストール->新しいバージョンのインストール->アプリケーションの実行。
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]