apply plugin: 'com.android.library' apply plugin: 'maven-publish' def jniLibsDir = System.properties['jniLibsDir'] def buildDir = System.properties['buildDir'] def publishDir = System.properties['publishDir'] def minSdkVer = System.properties['minSdkVer'] def targetSdkVer = System.properties['targetSdkVer'] // Since Android requires a higher numbers indicating more recent versions // This function assume ORT version number will be in formart of A.B.C such as 1.7.0 // We generate version code A[0{0,1}]B[0{0,1}]C, // for example '1.7.0' -> 10700, '1.6.15' -> 10615 def getVersionCode(String version){ String[] codes = version.split('\\.'); // This will have problem if we have 3 digit [sub]version number, such as 1.7.199 // but it is highly unlikely to happen String versionCodeStr = String.format("%d%02d%02d", codes[0] as int, codes[1] as int, codes[2] as int); return versionCodeStr as int; } project.buildDir = buildDir project.version = rootProject.file('../VERSION_NUMBER').text.trim() project.group = "com.microsoft.onnxruntime" def mavenArtifactId = project.name + '-mobile' buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } android { compileSdkVersion 29 buildToolsVersion "29.0.2" defaultConfig { minSdkVersion minSdkVer targetSdkVersion targetSdkVer versionCode = getVersionCode(project.version) versionName = project.version testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } android { lintOptions { abortOnError false } } buildTypes { release { minifyEnabled false debuggable false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } sourceSets { main { jniLibs.srcDirs = [jniLibsDir] } } } task sourcesJar(type: Jar) { classifier "sources" from android.sourceSets.main.java.srcDirs } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } artifacts { archives javadocJar archives sourcesJar } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' testImplementation 'com.google.protobuf:protobuf-java:3.10.0' } publishing { publications { maven(MavenPublication) { groupId = project.group artifactId = mavenArtifactId version = project.version // Three artifacts, the `aar`, the sources and the javadoc artifact("$buildDir/outputs/aar/${project.name}-release.aar") artifact javadocJar artifact sourcesJar pom { name = 'onnx-runtime' description = 'ONNX Runtime Mobile package is a size optimized inference library for executing ' + 'ONNX (Open Neural Network Exchange) models. This package is built from the open source ' + 'inference engine targeting reduced disk footprint for mobile platforms.' url = 'https://microsoft.github.io/onnxruntime/' licenses { license { name = 'MIT License' url = 'https://opensource.org/licenses/MIT' } } organization { name = 'Microsoft' url = 'http://www.microsoft.com' } scm { connection = 'scm:git:git://github.com:microsoft/onnxruntime.git' developerConnection = 'scm:git:ssh://github.com/microsoft/onnxruntime.git' url = 'http://github.com/microsoft/onnxruntime' } developers { developer { id = 'onnxruntime' name = 'ONNX Runtime' email = 'onnxruntime@microsoft.com' } } } } } //publish to filesystem repo repositories{ maven { url "$publishDir" } } }