您可以从命令行通过Gradle部署到设备

时间:2013-06-26 16:59:17

标签: android gradle android-studio gradlew

问题实际上是什么 - 您可以通过命令行直接向gradlew发出任何命令来构建,打包和部署到设备吗?

9 个答案:

答案 0 :(得分:90)

$ gradle installDebug

这会将调试构建apk推送到设备,但您必须手动启动应用程序。

答案 1 :(得分:73)

由于您使用的是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'

答案 2 :(得分:63)

<强> 1。构建项目,将生成的apk安装到设备

# at the root dir of project
$ gradle installDebug

<强> 2。在设备上打开应用

$ adb shell am start -n yourpackagename/.activityname

答案 3 :(得分:6)

一句话:

建设项目&amp;安装生成的apk&amp;在设备上打开应用

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

答案 4 :(得分: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是要启动的活动(启动器活动)。

  4. 我一直在写bash script to do this,还有其他一些功能。

答案 5 :(得分:3)

更灵活的方法是使用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工具允许您发送启动器意图,因此您无需知道活动的名称。

答案 6 :(得分:2)

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

答案 7 :(得分:1)

我写了这个任务是为了能够安装并在设备上打开应用程序。由于我有多个buildTypesflavors具有不同的应用程序ID,因此对软件包名称进行硬编码是不可行的。所以我这样写了:

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}

答案 8 :(得分:1)

构建 - &gt;卸载旧版本 - &gt;安装新版本 - &gt;运行应用程序。

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]