You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
task setpEpJNIAdapterArchs {
|
|
|
|
description = "Prepare pEpJNIAdapter to build with the first archs of each connected device."
|
|
|
|
doLast {
|
|
def serialNos = getConnectedDevicesIds()
|
|
println("Connected devices: $serialNos")
|
|
def abis = serialNos.collect { serialNo ->
|
|
convertAbiName(execCommand("adb -s ${serialNo} shell getprop ro.product.cpu.abilist", true).trim().split(",")[0])
|
|
}.toSet()
|
|
def sb = new StringBuilder()
|
|
for (String s : abis) {
|
|
sb.append(s)
|
|
sb.append(" ")
|
|
}
|
|
if (!abis.isEmpty()) {
|
|
project.archsToCompile = sb.toString().trim()
|
|
println("got archs to compile: ${project.archsToCompile}")
|
|
}
|
|
}
|
|
}
|
|
|
|
private List<String> getConnectedDevicesIds(boolean verbose = false) {
|
|
def lines = execCommand("adb devices", true, verbose).readLines()
|
|
lines.removeIf { it.trim().isEmpty() }
|
|
lines.remove(0)
|
|
if (lines.isEmpty()) return lines
|
|
return lines.collect { line ->
|
|
line.substring(0, line.indexOf("device")).trim()
|
|
}
|
|
}
|
|
|
|
static String convertAbiName(name) {
|
|
if (name == "armeabi-v7a") return "arm"
|
|
else if (name == "arm64-v8a") return "arm64"
|
|
else return name
|
|
}
|
|
|
|
private String execCommand(String command, boolean captureOutput = false, boolean verbose = false) {
|
|
def stdout = captureOutput ? new ByteArrayOutputStream() : null
|
|
exec {
|
|
if (verbose) {
|
|
println("running command: $command")
|
|
}
|
|
commandLine command.split(' ')
|
|
if (stdout != null) {
|
|
standardOutput = stdout
|
|
}
|
|
}
|
|
String out = null
|
|
if (stdout != null) {
|
|
out = stdout.toString()
|
|
stdout.close()
|
|
}
|
|
return out
|
|
}
|
|
|