15

経由でアプリケーションを起動しようとしていますgradle task


task runDebug(dependsOn: ['installDebug', 'run']) {
}

task run(type: Exec) {
commandLine 'adb', 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity'
}

しかし、このコードは機能せず、エラーが発生します。
a problem occurred starting process 'command 'adb''

ただし、adb へのパスを明示的に指定すると、アプリケーションが開始されます。


task run(type: Exec) {
    commandLine 'D:\\android\\android-studio\\sdk\\platform-tools\\adb', 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity'
}

では、パスを含む変数を取得して転送するにはどうすればよいcommandLineですか?

4

6 に答える 6

30

Android Gradle プラグインが SDK と adb の場所を見つけるために既に持っているロジックを使用して、スクリプトが同じ場所を使用していることを確認する必要があります。

# Android Gradle >= 1.1.0
File sdk = android.getSdkDirectory()
File adb = android.getAdbExe()

# Android Gradle < 1.1.0
File sdk = android.plugin.getSdkFolder()
File adb = android.plugin.extension.getAdbExe()
于 2014-11-06T03:09:18.193 に答える
7
def androidPlugin = project.plugins.findPlugin("android")
def adb = androidPlugin.sdkHandler.sdkInfo?.adb
于 2014-11-13T15:23:47.850 に答える
0

Android 拡張機能から if を取得できます。

android.adbExe

于 2016-02-15T11:36:33.490 に答える
0

この問題に対する私のデフォルトの解決策は、パス変数に adb を追加して、すべてのパスから adb コマンドを使用できるようにすることです。
たとえば、次のようにコンソールから設定できます。

set path=%path%;x:\path\to\adb

別の方法として、UI から設定することもできます。java.com のこの説明も参照してください。

于 2015-09-28T09:54:23.640 に答える