mentat/sdks/android/Mentat/library/build.gradle
Nick Alexander 6898bac83d [sdks/android] DO NOT LAND - Build libmentat_ffi.so as part of Gradle build.
This uses a very rudimentary Gradle plugin, `rust-android-gradle`,
with custom fixes and extensions.  It works pretty well for what it
is!
2018-07-19 16:07:24 -07:00

116 lines
3.4 KiB
Groovy

apply plugin: 'com.android.library'
apply plugin: 'com.nishtahir.rust-android'
apply plugin: 'kotlin-android'
apply plugin: 'com.jfrog.bintray'
// Simply applying this plugin gets bintray to publish a pom file.
apply plugin: 'com.github.dcendents.android-maven'
android {
compileSdkVersion rootProject.ext.build['compileSdkVersion']
defaultConfig {
minSdkVersion rootProject.ext.build['minSdkVersion']
targetSdkVersion rootProject.ext.build['targetSdkVersion']
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
versionCode 0
versionName "0.7"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
androidTest.assets.srcDirs += '../../../../fixtures'
}
// TODO silences:
// [InvalidPackage]: not included in Android: java.awt. Referenced from com.sun.jna.Native.AWT.
lintOptions {
abortOnError false
}
}
cargo {
module = '../../../../ffi'
targetDirectory = '../../../../target'
targetInclude = 'libmentat_ffi.so'
targets = ['x86']
}
dependencies {
androidTestImplementation 'com.android.support:support-annotations:27.1.1'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
testImplementation 'junit:junit:4.12'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'net.java.dev.jna:jna:4.5.1'
}
repositories {
mavenCentral()
}
afterEvaluate {
// The `cargoBuild` tasks isn't available until after evaluation.
android.libraryVariants.all { variant ->
def productFlavor = ""
variant.productFlavors.each {
productFlavor += "${it.name.capitalize()}"
}
def buildType = "${variant.buildType.name.capitalize()}"
tasks["generate${productFlavor}${buildType}Assets"].dependsOn(tasks["cargoBuild"])
}
}
// Publishing to jcenter/bintray.
def libGroupId = properties.libGroupId
def libRepoName = properties.libRepositoryName
def libProjectName = properties.libProjectName
def libProjectDescription = properties.libProjectDescription
def libUrl = properties.libUrl
def libVcsUrl = properties.libVcsUrl
def libLicense = properties.libLicense
Properties localProperties = null
if (project.rootProject.file('local.properties').canRead()) {
localProperties = new Properties()
localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
}
version = rootProject.ext.library['version']
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
artifacts {
archives sourcesJar
}
group = libGroupId
archivesBaseName = libProjectName
bintray {
user = localProperties != null ? localProperties.getProperty("bintray.user") : ""
key = localProperties != null ? localProperties.getProperty("bintray.apikey") : ""
configurations = ['archives']
pkg {
repo = libRepoName
name = libProjectName
userOrg = "grisha" // Temporary org name until package is on jcenter. Issue #725.
desc = libProjectDescription
websiteUrl = libUrl
vcsUrl = libVcsUrl
licenses = [libLicense]
publish = true
publicDownloadNumbers = true
}
}