2016-04-19 4 views
2

Ich freue mich, meine Gradle Build mit einem Aufruf an ein externes Tool zu erweitern. Das Problem besteht darin, dass ich die aktuelle CPU-Architektur bereitstellen muss, die gerade anvisiert wird, z. B. armeabi oder arm64-v8a, wenn der Benutzer sich für die Bereitstellung auf einem physischen Gerät entschieden hat. Ich habe Probleme, einen Weg zu finden, diese Information in der Gradel-Build-Datei zu bestimmen.Android-Implementierungsziel von Gradle-Build-Datei erkennen

Derzeit führe ich diese Aktion in einer benutzerdefinierten Aufgabe, die vor preBuild, ähnlich wie this solution ausgeführt wird. Gibt es eine Möglichkeit, die CPU-Architektur zu diesem Zeitpunkt zu erkennen?

task customTask(type: Exec) { 
    commandLine "myTool.exe", "-architecture=$something" 
} 

preBuild.dependsOn customTask 

Ich bin mit dem experimental plugin 0.7.0-beta3.

Dank

Antwort

1

Sie können die CPU-Architektur (ABI) des angeschlossenen Gerätes mit einem ADB Shell-Befehl erhalten:

adb shell getprop ro.product.cpu.abi 

Für ein Nexus 5 diese armeabi-v7a als Beispiel zurückkehren würde.

Nun müssen wir diesen Befehl in eine gradle Methode wickeln:

def getDeviceAbi() { 
    return "adb shell getprop ro.product.cpu.abi".execute().text.trim() 
} 

Dann können Sie einfach diese Methode von Ihrer Aufgabe nennen:

task customTask(type: Exec) { 
    commandLine "myTool.exe", "-architecture=" + getDeviceAbi() 
} 
preBuild.dependsOn customTask 
+0

Dies funktioniert gut für mich, vielen Dank für Ihre Hilfe! – blyn