How to retrieve path to ADB in build.gradle

前端 未结 6 1324
無奈伤痛
無奈伤痛 2021-02-05 13:01

I trying to start application via gradle task.


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

task run(type: Exec) {
comm         


        
相关标签:
6条回答
  • 2021-02-05 13:24

    The problem was solved.
    The variable must contain

    def adb = "$System.env.ANDROID_HOME/platform-tools/adb"
    

    And complete task looks like

    
    task run(type: Exec) {
        def adb = "$System.env.ANDROID_HOME/platform-tools/adb"
        commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity'
    }
    

    UPD
    Another way without using ANDROID_HOME

    
    task run(type: Exec) {
        def rootDir = project.rootDir
        def localProperties = new File(rootDir, "local.properties")
        if (localProperties.exists()) {
            Properties properties = new Properties()
            localProperties.withInputStream { 
                instr -> properties.load(instr)
            }
            def sdkDir = properties.getProperty('sdk.dir')
            def adb = "$sdkDir/platform-tools/adb"
            commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity'
        }
    }
    
    0 讨论(0)
  • 2021-02-05 13:25

    In Windows you can just register an application path for adb.exe with the following .reg file:

    REGEDIT4
    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\adb.exe]
    @="D:\\android\\android-studio\\sdk\\platform-tools\\adb.exe"
    "Path"="D:\\android\\android-studio\\sdk\\platform-tools"
    

    and just keep your original commandline

    0 讨论(0)
  • 2021-02-05 13:25

    we can get if from android extension.

    android.adbExe

    0 讨论(0)
  • 2021-02-05 13:28
    def androidPlugin = project.plugins.findPlugin("android")
    def adb = androidPlugin.sdkHandler.sdkInfo?.adb
    
    0 讨论(0)
  • 2021-02-05 13:30

    My default solution for this issue is to add adb to your path variable so you can use the adb command from every path.
    You can set it e.g. from the console like this:

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

    Alternative you can set it via the UI. See also this explanation on java.com.

    0 讨论(0)
  • 2021-02-05 13:40

    You should use the logic that the Android Gradle plugin already has for finding the SDK and adb locations to ensure your script is using the same ones.

    # 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()
    
    0 讨论(0)
提交回复
热议问题