2016-03-18 9 views
3

私はAndroid Studioを使用してAndroidのホームアプリを開発しています。 アプリは特別なアプリです.APMファイルをインストールする前に、adbシェルコマンドでアンドロイドデバイスを変更する必要があります。 これをアーカイブするために、私はbuild.gradleファイルにgradleタスクを書いてから、bashスクリプトファイルを実行します。 この方法は、1つのデバイスだけが接続されている場合を除いては問題ありません。Android Studioの構築プロセスでAndroidデバイスIDを知る方法

複数のAndroid端末が接続されている場合、アンドロイド端末IDを指定できないため、シェルスクリプトが機能しません。

質問はです。Android Studioを使用してbuild.graldeファイルにアンドロイドデバイスIDを取得する方法はありますか?

build.gradle

task clearHome(type: Exec) { 

    Properties properties = new Properties() 
    properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
    def sdkDir = properties.getProperty('sdk.dir') 

    // I'd like to know <android device id> that I selected using Android Stdio. 
    commandLine file('../beforeInstall.sh').absolutePath, sdkDir <android device id> 
} 

tasks.withType(JavaCompile) { 
    compileTask -> compileTask.dependsOn clearHome 
} 

beforeInstall.sh

#!/bin/bash 

ADB=$1/platform-tools/adb 
ADB_SHELL="$ADB -s $2 shell" 

$ADB_SHELL pm enable com.android.launcher 
$ADB_SHELL am start -n com.android.launcher/com.android.launcher2.Launcher 
+0

)あなたは 'adbのシェルsqlite3のの/data/data/com.android.providers.settings/を試してみましたデータベース/ settings.db "安全な値からのSELECT値WHERE name = 'android_id'" " – haifzhan

+0

接続されたデバイスは常に同じではありません。 – wf9a5m75

+0

あなたのデバイスをリセットしましたか? – haifzhan

答えて

0

ない、私は問題を理解している場合確認ができますが、コマンドラインでのGradleスクリプトを実行している場合、あなたはいつもそれに財産を渡すことができます.. ie:

gradle somegradletask -P**propertyDeviceId=123456789** 

まず、adbシェルからIDを取得し、それをgradleスクリプトに渡すだけです。 その後、Gradleのスクリプト内propertyDeviceId

androidDeviceId = propertyDevicecId; 
commandLine file('../beforeInstall.sh').absolutePath, sdkDir <androidDeviceId> 

コーディング(またはハッキング)ハッピーを使用します。

+0

ええと、deviceIDは常に異なっています。 Androidスタジオのターゲット選択ダイアログで、どのデバイスを選択するかを知りたい。 – wf9a5m75

関連する問題