| apply plugin: 'com.android.library' |
| apply plugin: 'maven' |
| |
| android { |
| compileSdkVersion rootProject.compileSdkVersion |
| buildToolsVersion rootProject.buildToolsVersion |
| |
| defaultConfig { |
| minSdkVersion rootProject.minSdkVersion |
| targetSdkVersion rootProject.targetSdkVersion |
| versionCode 0 |
| versionName "0.1" |
| |
| testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" |
| ndk { |
| abiFilters ABI_FILTERS.split(",") |
| } |
| externalNativeBuild { |
| cmake { |
| if(System.env.BUILD_LITE_INTERPRETER == '0') { |
| arguments "-DANDROID_STL=c++_shared", "-DBUILD_LITE_INTERPRETER=OFF", "-DUSE_LITE_INTERPRETER_PROFILER=OFF" |
| } else { |
| arguments "-DANDROID_STL=c++_shared", "-DUSE_LITE_INTERPRETER_PROFILER=OFF" |
| } |
| } |
| } |
| } |
| buildTypes { |
| debug { |
| minifyEnabled false |
| debuggable true |
| } |
| release { |
| minifyEnabled false |
| } |
| } |
| sourceSets { |
| main { |
| java { |
| if(System.env.BUILD_LITE_INTERPRETER == '0') { |
| println 'Build pytorch_jni' |
| exclude 'org/pytorch/LiteModuleLoader.java' |
| exclude 'org/pytorch/LiteNativePeer.java' |
| } else { |
| println 'Build pytorch_jni_lite' |
| } |
| } |
| jniLibs.srcDirs = ['src/main/jniLibs'] |
| manifest.srcFile 'src/main/AndroidManifest.xml' |
| } |
| androidTest { |
| java { |
| if(System.env.BUILD_LITE_INTERPRETER == '0') { |
| println 'Build test for full jit (pytorch_jni)' |
| exclude 'org/pytorch/PytorchHostTests.java' |
| exclude 'org/pytorch/PytorchLiteInstrumentedTests.java' |
| exclude 'org/pytorch/suite/PytorchLiteInstrumentedTestSuite.java' |
| } else { |
| println 'Build test for lite interpreter (pytorch_jni_lite)' |
| exclude 'org/pytorch/PytorchHostTests.java' |
| exclude 'org/pytorch/PytorchInstrumentedTests.java' |
| exclude 'org/pytorch/suite/PytorchInstrumentedTestSuite.java' |
| } |
| } |
| } |
| } |
| externalNativeBuild { |
| cmake { |
| path "CMakeLists.txt" |
| } |
| } |
| |
| packagingOptions { |
| if (nativeLibsDoNotStrip.toBoolean()) { |
| doNotStrip "**/*.so" |
| logger.warn('WARNING: nativeLibsDoNotStrip==true; debug symbols included') |
| } |
| } |
| |
| useLibrary 'android.test.runner' |
| useLibrary 'android.test.base' |
| useLibrary 'android.test.mock' |
| } |
| |
| dependencies { |
| implementation 'com.facebook.fbjni:fbjni-java-only:' + rootProject.fbjniJavaOnlyVersion |
| implementation 'com.facebook.soloader:nativeloader:' + rootProject.soLoaderNativeLoaderVersion |
| |
| testImplementation 'junit:junit:' + rootProject.junitVersion |
| testImplementation 'androidx.test:core:' + rootProject.coreVersion |
| |
| androidTestImplementation 'junit:junit:' + rootProject.junitVersion |
| androidTestImplementation 'androidx.test:core:' + rootProject.coreVersion |
| androidTestImplementation 'androidx.test.ext:junit:' + rootProject.extJUnitVersion |
| androidTestImplementation 'androidx.test:rules:' + rootProject.rulesVersion |
| androidTestImplementation 'androidx.test:runner:' + rootProject.runnerVersion |
| } |
| |
| apply from: rootProject.file('gradle/release.gradle') |
| |
| task sourcesJar(type: Jar) { |
| from android.sourceSets.main.java.srcDirs |
| classifier = 'sources' |
| } |
| |
| def getLibtorchHeadersDir() { |
| def abi = ABI_FILTERS.split(",")[0] |
| return "$rootDir/pytorch_android/src/main/cpp/libtorch_include/$abi" |
| } |
| |
| afterEvaluate { |
| if (POM_PACKAGING == 'aar') { |
| android.libraryVariants.all { variant -> |
| variant.outputs.each { output -> |
| File f = output.outputFile |
| if (f.name.endsWith(".aar")) { |
| output.assemble.finalizedBy addFolderToAarTask( |
| "addHeadersToAar" + variant.name, |
| f.path, |
| getLibtorchHeadersDir(), |
| "headers") |
| } |
| } |
| } |
| } |
| } |
| |
| tasks.whenTaskAdded { task -> |
| if (task.name.startsWith("bundle") && task.name.endsWith("Aar")) { |
| doLast { |
| addFolderToAar("addHeadersTo" + task.name, task.archivePath, getLibtorchHeadersDir(), 'headers') |
| } |
| } |
| } |
| |
| def addFolderToAarTask(taskName, aarPath, folderPath, folderPathInAar) { |
| return tasks.register(taskName) { |
| doLast { |
| addFolderToAar(taskName, aarPath, folderPath, folderPathInAar) |
| } |
| } |
| } |
| |
| def addFolderToAar(taskName, aarPath, folderPath, folderPathInAar) { |
| def tmpDir = file("${buildDir}/${taskName}") |
| tmpDir.mkdir() |
| def tmpDirFolder = file("${tmpDir.path}/${folderPathInAar}") |
| tmpDirFolder.mkdir() |
| copy { |
| from zipTree(aarPath) |
| into tmpDir |
| } |
| copy { |
| from fileTree(folderPath) |
| into tmpDirFolder |
| } |
| ant.zip(destfile: aarPath) { |
| fileset(dir: tmpDir.path) |
| } |
| delete tmpDir |
| } |
| |
| artifacts.add('archives', sourcesJar) |