| |
| // 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 |
| } |
| } |
| |