build.gradle 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. apply plugin: 'com.android.application'
  2. repositories {
  3. mavenCentral()
  4. maven {
  5. url "https://oss.sonatype.org/content/repositories/snapshots"
  6. }
  7. flatDir {
  8. dirs 'aars'
  9. }
  10. }
  11. android {
  12. configurations {
  13. extractForNativeBuild
  14. }
  15. compileOptions {
  16. sourceCompatibility 1.8
  17. targetCompatibility 1.8
  18. }
  19. compileSdkVersion rootProject.compileSdkVersion
  20. buildToolsVersion rootProject.buildToolsVersion
  21. defaultConfig {
  22. applicationId "org.pytorch.testapp"
  23. minSdkVersion rootProject.minSdkVersion
  24. targetSdkVersion rootProject.targetSdkVersion
  25. versionCode 1
  26. versionName "1.0"
  27. ndk {
  28. abiFilters ABI_FILTERS.split(",")
  29. }
  30. externalNativeBuild {
  31. cmake {
  32. abiFilters ABI_FILTERS.split(",")
  33. arguments "-DANDROID_STL=c++_shared"
  34. }
  35. }
  36. buildConfigField("String", "MODULE_ASSET_NAME", "\"frcnn_mnetv3.pt\"")
  37. buildConfigField("String", "LOGCAT_TAG", "@string/app_name")
  38. buildConfigField("long[]", "INPUT_TENSOR_SHAPE", "new long[]{3, 96, 96}")
  39. addManifestPlaceholders([APP_NAME: "@string/app_name", MAIN_ACTIVITY: "org.pytorch.testapp.MainActivity"])
  40. }
  41. buildTypes {
  42. debug {
  43. minifyEnabled false
  44. debuggable true
  45. }
  46. release {
  47. minifyEnabled false
  48. }
  49. }
  50. flavorDimensions "model", "activity", "build"
  51. productFlavors {
  52. frcnnMnetv3 {
  53. dimension "model"
  54. applicationIdSuffix ".frcnnMnetv3"
  55. buildConfigField("String", "MODULE_ASSET_NAME", "\"frcnn_mnetv3.pt\"")
  56. addManifestPlaceholders([APP_NAME: "TV_FRCNN_MNETV3"])
  57. buildConfigField("String", "LOGCAT_TAG", "\"pytorch-frcnn-mnetv3\"")
  58. }
  59. camera {
  60. dimension "activity"
  61. addManifestPlaceholders([APP_NAME: "TV_CAMERA_FRCNN"])
  62. addManifestPlaceholders([MAIN_ACTIVITY: "org.pytorch.testapp.CameraActivity"])
  63. }
  64. base {
  65. dimension "activity"
  66. }
  67. aar {
  68. dimension "build"
  69. }
  70. local {
  71. dimension "build"
  72. }
  73. }
  74. packagingOptions {
  75. doNotStrip '**.so'
  76. pickFirst '**.so'
  77. }
  78. // Filtering for CI
  79. if (!testAppAllVariantsEnabled.toBoolean()) {
  80. variantFilter { variant ->
  81. def names = variant.flavors*.name
  82. if (names.contains("aar")) {
  83. setIgnore(true)
  84. }
  85. }
  86. }
  87. }
  88. tasks.all { task ->
  89. // Disable externalNativeBuild for all but nativeBuild variant
  90. if (task.name.startsWith('externalNativeBuild')
  91. && !task.name.contains('NativeBuild')) {
  92. task.enabled = false
  93. }
  94. }
  95. dependencies {
  96. implementation 'com.android.support:appcompat-v7:28.0.0'
  97. implementation 'com.facebook.soloader:nativeloader:0.8.0'
  98. localImplementation project(':ops')
  99. implementation "org.pytorch:pytorch_android:$pytorchAndroidVersion"
  100. implementation "org.pytorch:pytorch_android_torchvision:$pytorchAndroidVersion"
  101. aarImplementation(name: 'pytorch_android-release', ext: 'aar')
  102. aarImplementation(name: 'pytorch_android_torchvision-release', ext: 'aar')
  103. def camerax_version = "1.0.0-alpha05"
  104. implementation "androidx.camera:camera-core:$camerax_version"
  105. implementation "androidx.camera:camera-camera2:$camerax_version"
  106. implementation 'com.google.android.material:material:1.0.0-beta01'
  107. }
  108. task extractAARForNativeBuild {
  109. doLast {
  110. configurations.extractForNativeBuild.files.each {
  111. def file = it.absoluteFile
  112. copy {
  113. from zipTree(file)
  114. into "$buildDir/$file.name"
  115. include "headers/**"
  116. include "jni/**"
  117. }
  118. }
  119. }
  120. }
  121. tasks.whenTaskAdded { task ->
  122. if (task.name.contains('externalNativeBuild')) {
  123. task.dependsOn(extractAARForNativeBuild)
  124. }
  125. }