build.gradle 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import java.security.MessageDigest
  2. apply plugin: 'com.android.library'
  3. android {
  4. compileSdkVersion 28
  5. buildToolsVersion "29.0.2"
  6. defaultConfig {
  7. minSdkVersion 15
  8. targetSdkVersion 28
  9. versionCode 1
  10. versionName "1.0"
  11. testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  12. consumerProguardFiles 'consumer-rules.pro'
  13. }
  14. buildTypes {
  15. release {
  16. minifyEnabled false
  17. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
  18. }
  19. }
  20. }
  21. dependencies {
  22. implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
  23. implementation 'com.android.support:appcompat-v7:28.0.0'
  24. implementation 'com.android.support.constraint:constraint-layout:1.1.3'
  25. implementation 'com.android.support:design:28.0.0'
  26. testImplementation 'junit:junit:4.12'
  27. androidTestImplementation 'androidx.test.ext:junit:1.1.1'
  28. androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
  29. }
  30. def paddleLiteLibs = 'https://bj.bcebos.com/paddlex/deploy/lite/paddle_lite_version_11cbd50e.tar.gz'
  31. task downloadAndExtractPaddleLiteLibs(type: DefaultTask) {
  32. doFirst {
  33. println "Downloading and extracting Paddle Lite libs"
  34. }
  35. doLast {
  36. // Prepare cache folder for libs
  37. if (!file("cache").exists()) {
  38. mkdir "cache"
  39. }
  40. // Generate cache name for libs
  41. MessageDigest messageDigest = MessageDigest.getInstance('MD5')
  42. messageDigest.update(paddleLiteLibs.bytes)
  43. String cacheName = new BigInteger(1, messageDigest.digest()).toString(32)
  44. // Download libs
  45. if (!file("cache/${cacheName}.tar.gz").exists()) {
  46. ant.get(src: paddleLiteLibs, dest: file("cache/${cacheName}.tar.gz"))
  47. }
  48. // Unpack libs
  49. copy {
  50. from tarTree("cache/${cacheName}.tar.gz")
  51. into "cache/${cacheName}"
  52. }
  53. // Copy PaddlePredictor.jar
  54. if (!file("libs/PaddlePredictor.jar").exists()) {
  55. copy {
  56. from "cache/${cacheName}/PaddlePredictor.jar"
  57. into "libs"
  58. }
  59. }
  60. // Copy libpaddle_lite_jni.so for armeabi-v7a and arm64-v8a
  61. if (!file("src/main/jniLibs/armeabi-v7a/libpaddle_lite_jni.so").exists()) {
  62. copy {
  63. from "cache/${cacheName}/libs/armeabi-v7a/"
  64. into "src/main/jniLibs/armeabi-v7a"
  65. }
  66. }
  67. if (!file("src/main/jniLibs/arm64-v8a/libpaddle_lite_jni.so").exists()) {
  68. copy {
  69. from "cache/${cacheName}/libs/arm64-v8a/"
  70. into "src/main/jniLibs/arm64-v8a"
  71. }
  72. }
  73. }
  74. }
  75. preBuild.dependsOn downloadAndExtractPaddleLiteLibs
  76. def snakeYamlLibs = 'https://bj.bcebos.com/paddlex/deploy/lite/snakeyaml-1.18-android.tar.gz'
  77. task downloadAndExtractSnakeYamlLibs(type: DefaultTask) {
  78. doFirst {
  79. println "Downloading and extracting snake yaml sdk"
  80. }
  81. doLast {
  82. // Prepare cache folder for sdk
  83. if (!file("cache").exists()) {
  84. mkdir "cache"
  85. }
  86. // Generate cache name for sdk
  87. MessageDigest messageDigest = MessageDigest.getInstance('MD5')
  88. messageDigest.update(snakeYamlLibs.bytes)
  89. String cacheName = new BigInteger(1, messageDigest.digest()).toString(32)
  90. // Download libs
  91. if (!file("cache/${cacheName}.tar.gz").exists()) {
  92. ant.get(src: snakeYamlLibs, dest: file("cache/${cacheName}.tar.gz"))
  93. }
  94. // Unpack libs
  95. copy {
  96. from tarTree("cache/${cacheName}.tar.gz")
  97. into "cache/${cacheName}"
  98. }
  99. // Copy .jar
  100. if (!file("libs/snakeyaml-1.18-android.jar").exists()) {
  101. copy {
  102. from "cache/${cacheName}/snakeyaml-1.18-android.jar"
  103. into "libs"
  104. }
  105. }
  106. }
  107. }
  108. preBuild.dependsOn downloadAndExtractSnakeYamlLibs
  109. def opencvLibs = 'https://bj.bcebos.com/paddlex/deploy/lite/opencv-3.4.6-android.tar.gz'
  110. task downloadAndExtractOpencvLibs(type: DefaultTask) {
  111. doFirst {
  112. println "Downloading and extracting opencv sdk"
  113. }
  114. doLast {
  115. // Prepare cache folder for sdk
  116. if (!file("cache").exists()) {
  117. mkdir "cache"
  118. }
  119. // Generate cache name for sdk
  120. MessageDigest messageDigest = MessageDigest.getInstance('MD5')
  121. messageDigest.update(opencvLibs.bytes)
  122. String cacheName = new BigInteger(1, messageDigest.digest()).toString(32)
  123. // Download libs
  124. if (!file("cache/${cacheName}.tar.gz").exists()) {
  125. ant.get(src: opencvLibs, dest: file("cache/${cacheName}.tar.gz"))
  126. }
  127. // Unpack libs
  128. copy {
  129. from tarTree("cache/${cacheName}.tar.gz")
  130. into "cache/${cacheName}"
  131. }
  132. // Copy .jar
  133. if (!file("libs/opencv346.jar").exists()) {
  134. copy {
  135. from "cache/${cacheName}/opencv346.jar"
  136. into "libs"
  137. }
  138. }
  139. // Copy .so for armeabi-v7a and arm64-v8a
  140. if (!file("src/main/jniLibs/armeabi-v7a/libopencv_java3.so").exists()) {
  141. copy {
  142. from "cache/${cacheName}/libs/armeabi-v7a/"
  143. into "src/main/jniLibs/armeabi-v7a"
  144. }
  145. }
  146. if (!file("src/main/jniLibs/arm64-v8a/libopencv_java3.so").exists()) {
  147. copy {
  148. from "cache/${cacheName}/libs/arm64-v8a/"
  149. into "src/main/jniLibs/arm64-v8a"
  150. }
  151. }
  152. }
  153. }
  154. preBuild.dependsOn downloadAndExtractOpencvLibs