// Set when building only part of the abis in the apk.
def abiFiltersForWrapScript = []
android {
buildTypes {
profiling {
initWith debug
externalNativeBuild {
cmake {
// cmake Debug build type uses -O0, which makes the code slow.
arguments "-DCMAKE_BUILD_TYPE=Release"
}
}
packagingOptions {
// Exclude wrap.sh for architectures not built.
if (abiFiltersForWrapScript) {
def exclude_abis = ["armeabi", "armeabi-v7a", "arm64-v8a",
"x86", "x86_64", "mips", "mips64"]
.findAll{ !(it in abiFiltersForWrapScript) }
.collect{ "**/" + it + "/wrap.sh" }
excludes += exclude_abis
}
}
// Add lib/xxx/wrap.sh in the apk. This is to enable java profiling on Android O
// devices.
sourceSets {
profiling {
resources {
srcDir {
"profiling_apk_add_dir"
}
}
}
}
}
}
}
def writeWrapScriptToFullyCompileJavaApp(wrapFile) {
wrapFile.withWriter { writer ->
writer.write('#!/system/bin/sh\n')
writer.write('\$@\n')
}
}
task createProfilingApkAddDir {
for (String abi : ["armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64"]) {
def dir = new File("app/profiling_apk_add_dir/lib/" + abi)
dir.mkdirs()
def wrapFile = new File(dir, "wrap.sh")
writeWrapScriptToFullyCompileJavaApp(wrapFile)
println "write file " + wrapFile.path
}
}