Home | History | Annotate | Download | only in app
      1 
      2 // Set when building only part of the abis in the apk.
      3 def abiFiltersForWrapScript = []
      4 
      5 android {
      6     buildTypes {
      7         profiling {
      8             initWith debug
      9             externalNativeBuild {
     10                 cmake {
     11                     // cmake Debug build type uses -O0, which makes the code slow.
     12                     arguments "-DCMAKE_BUILD_TYPE=Release"
     13                 }
     14             }
     15             packagingOptions {
     16                 // Contain debug info in the libraries.
     17                 doNotStrip "**.so"
     18 
     19                 // Exclude wrap.sh for architectures not built.
     20                 if (abiFiltersForWrapScript) {
     21                     def exclude_abis = ["armeabi", "armeabi-v7a", "arm64-v8a",
     22                                         "x86", "x86_64", "mips", "mips64"]
     23                             .findAll{ !(it in abiFiltersForWrapScript) }
     24                             .collect{ "**/" + it + "/wrap.sh" }
     25                     excludes += exclude_abis
     26                 }
     27             }
     28 
     29             // Add lib/xxx/wrap.sh in the apk. This is to enable java profiling on Android O
     30             // devices.
     31             sourceSets {
     32                 profiling {
     33                     resources {
     34                         srcDir {
     35                             "profiling_apk_add_dir"
     36                         }
     37                     }
     38                 }
     39             }
     40         }
     41     }
     42 }
     43 
     44 def writeWrapScriptToFullyCompileJavaApp(wrapFile) {
     45     wrapFile.withWriter { writer ->
     46         writer.write('#!/system/bin/sh\n')
     47         writer.write('\$@\n')
     48     }
     49 }
     50 
     51 task createProfilingApkAddDir {
     52     for (String abi : ["armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64", "mips", "mips64"]) {
     53         def dir = new File("app/profiling_apk_add_dir/lib/" + abi)
     54         dir.mkdirs()
     55         def wrapFile = new File(dir, "wrap.sh")
     56         writeWrapScriptToFullyCompileJavaApp(wrapFile)
     57         println "write file " + wrapFile.path
     58     }
     59 }
     60 
     61