build.gradle 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import java.security.MessageDigest
  2. apply plugin: 'com.android.application'
  3. android {
  4. compileSdkVersion 28
  5. defaultConfig {
  6. applicationId "com.baidu.paddlex.lite.demo"
  7. minSdkVersion 15
  8. targetSdkVersion 28
  9. versionCode 1
  10. versionName "1.0"
  11. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  12. }
  13. buildTypes {
  14. release {
  15. minifyEnabled false
  16. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
  17. }
  18. }
  19. }
  20. dependencies {
  21. implementation fileTree(include: ['*.aar'], dir: 'libs')
  22. implementation 'com.android.support:appcompat-v7:28.0.0'
  23. implementation 'com.android.support.constraint:constraint-layout:1.1.3'
  24. implementation 'com.android.support:design:28.0.0'
  25. testImplementation 'junit:junit:4.12'
  26. androidTestImplementation 'com.android.support.test:runner:1.0.2'
  27. androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
  28. }
  29. def paddlexAndroidSdk = 'https://bj.bcebos.com/paddlex/deploy/lite/paddlex_lite_11cbd50e.tar.gz'
  30. task downloadAndExtractPaddleXAndroidSdk(type: DefaultTask) {
  31. doFirst {
  32. println "Downloading and extracting PaddleX Android SDK"}
  33. doLast {
  34. // Prepare cache folder for sdk
  35. if (!file("cache").exists()) {
  36. mkdir "cache"
  37. }
  38. // Generate cache name for sdk
  39. MessageDigest messageDigest = MessageDigest.getInstance('MD5')
  40. messageDigest.update(paddlexAndroidSdk.bytes)
  41. String cacheName = new BigInteger(1, messageDigest.digest()).toString(32)
  42. // Download sdk
  43. if (!file("cache/${cacheName}.tar.gz").exists()) {
  44. ant.get(src: paddlexAndroidSdk, dest: file("cache/${cacheName}.tar.gz"))
  45. }
  46. // Unpack sdk
  47. copy {
  48. from tarTree("cache/${cacheName}.tar.gz")
  49. into "cache/${cacheName}"
  50. }
  51. // Copy sdk
  52. if (!file("libs/paddlex.aar").exists()) {
  53. copy {
  54. from "cache/${cacheName}/paddlex.aar"
  55. into "libs"
  56. }
  57. }
  58. }
  59. }
  60. preBuild.dependsOn downloadAndExtractPaddleXAndroidSdk
  61. def paddleXLiteModel = 'https://bj.bcebos.com/paddlex/deploy/lite/mobilenetv2_imagenet_lite2.6.1.tar.gz'
  62. task downloadAndExtractPaddleXLiteModel(type: DefaultTask) {
  63. doFirst {
  64. println "Downloading and extracting PaddleX Android SDK"}
  65. doLast {
  66. // Prepare cache folder for model
  67. if (!file("cache").exists()) {
  68. mkdir "cache"
  69. }
  70. // Generate cache name for model
  71. MessageDigest messageDigest = MessageDigest.getInstance('MD5')
  72. messageDigest.update(paddleXLiteModel.bytes)
  73. String cacheName = new BigInteger(1, messageDigest.digest()).toString(32)
  74. // Download sdk
  75. if (!file("cache/${cacheName}.tar.gz").exists()) {
  76. ant.get(src: paddleXLiteModel, dest: file("cache/${cacheName}.tar.gz"))
  77. }
  78. // Unpack model
  79. copy {
  80. from tarTree("cache/${cacheName}.tar.gz")
  81. into "cache/${cacheName}"
  82. }
  83. // Copy model.nb
  84. if (!file("src/main/assets/model/model.nb").exists()) {
  85. copy {
  86. from "cache/${cacheName}/model.nb"
  87. into "src/main/assets/model/"
  88. }
  89. }
  90. // Copy config file model.yml
  91. if (!file("src/main/assets/config/model.yml").exists()) {
  92. copy {
  93. from "cache/${cacheName}/model.yml"
  94. into "src/main/assets/config/"
  95. }
  96. }
  97. // Copy config file model.yml
  98. if (!file("src/main/assets/images/test.jpg").exists()) {
  99. copy {
  100. from "cache/${cacheName}/test.jpg"
  101. into "src/main/assets/images/"
  102. }
  103. }
  104. }
  105. }
  106. preBuild.dependsOn downloadAndExtractPaddleXLiteModel