187 lines
6.2 KiB
Groovy
187 lines
6.2 KiB
Groovy
import org.apache.tools.ant.taskdefs.condition.Os
|
|
|
|
apply plugin: 'com.android.library'
|
|
apply plugin: 'maven-publish'
|
|
apply plugin: 'signing'
|
|
|
|
android {
|
|
compileSdkVersion 30
|
|
|
|
defaultConfig {
|
|
minSdkVersion 14
|
|
targetSdkVersion 30
|
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
|
|
|
// The following argument makes the Android Test Orchestrator run its
|
|
// "pm clear" command after each test invocation. This command ensures
|
|
// that the app's state is completely cleared between tests.
|
|
testInstrumentationRunnerArguments clearPackageData: 'true'
|
|
|
|
buildConfigField "String", "OLM_VERSION", "\"${project.getProperties().getOrDefault("VERSION_NAME", "0.0.0")}\""
|
|
}
|
|
buildTypes {
|
|
debug {
|
|
resValue "string", "git_olm_revision", "\"${gitRevision()}\""
|
|
resValue "string", "git_olm_revision_unix_date", "\"${gitRevisionUnixDate()}\""
|
|
resValue "string", "git_olm_revision_date", "\"${gitRevisionDate()}\""
|
|
}
|
|
|
|
release {
|
|
resValue "string", "git_olm_revision", "\"${gitRevision()}\""
|
|
resValue "string", "git_olm_revision_unix_date", "\"${gitRevisionUnixDate()}\""
|
|
resValue "string", "git_olm_revision_date", "\"${gitRevisionDate()}\""
|
|
|
|
minifyEnabled false
|
|
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
sourceSets.main {
|
|
jniLibs.srcDir 'src/main/libs'
|
|
jni.srcDirs = []
|
|
}
|
|
|
|
task buildJavaDoc(type: Javadoc) {
|
|
source = android.sourceSets.main.java.srcDirs
|
|
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
|
|
destinationDir = file("./doc/")
|
|
options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PRIVATE
|
|
failOnError false
|
|
}
|
|
|
|
task ndkBuildNativeRelease(type: Exec, description: 'NDK building..') {
|
|
println 'ndkBuildNativeRelease starts..'
|
|
workingDir file('src/main')
|
|
commandLine getNdkBuildCmd(), 'NDK_DEBUG=0'
|
|
}
|
|
|
|
task ndkBuildNativeDebug(type: Exec, description: 'NDK building..') {
|
|
println 'ndkBuildNativeDebug starts..'
|
|
workingDir file('src/main')
|
|
commandLine getNdkBuildCmd(), 'NDK_DEBUG=1'
|
|
}
|
|
|
|
task cleanNative(type: Exec, description: 'Clean NDK build') {
|
|
workingDir file('src/main')
|
|
commandLine getNdkBuildCmd(), 'clean'
|
|
}
|
|
|
|
tasks.withType(JavaCompile) {
|
|
compileTask ->
|
|
if (compileTask.name.startsWith('compileDebugJava')) {
|
|
println 'test compile: Debug'
|
|
compileTask.dependsOn ndkBuildNativeDebug
|
|
} else if (compileTask.name.startsWith('compileReleaseJava')) {
|
|
println 'test compile: Release'
|
|
compileTask.dependsOn ndkBuildNativeRelease
|
|
}
|
|
compileTask.dependsOn buildJavaDoc
|
|
}
|
|
|
|
task androidJavadocs(type: Javadoc) {
|
|
source = android.sourceSets.main.java.srcDirs
|
|
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
|
|
android.libraryVariants.all { variant ->
|
|
if (variant.name == 'release') {
|
|
owner.classpath += variant.javaCompileProvider.get().classpath
|
|
}
|
|
}
|
|
exclude '**/R.html', '**/R.*.html', '**/index.html'
|
|
}
|
|
|
|
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
|
|
archiveClassifier.set('javadoc')
|
|
from androidJavadocs.destinationDir
|
|
}
|
|
|
|
task androidSourcesJar(type: Jar) {
|
|
archiveClassifier.set('sources')
|
|
from android.sourceSets.main.java.srcDirs
|
|
}
|
|
|
|
clean.dependsOn cleanNative
|
|
|
|
|
|
libraryVariants.all { variant ->
|
|
variant.outputs.each { output ->
|
|
def outputFile = output.outputFileName
|
|
if (outputFile != null && outputFile.endsWith('.aar')) {
|
|
output.outputFileName = outputFile.replace(".aar", "-${version}.aar")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
def getNdkFolder() {
|
|
Properties properties = new Properties()
|
|
properties.load(project.rootProject.file('local.properties').newDataInputStream())
|
|
def ndkFolder = properties.getProperty('ndk.dir', null)
|
|
if (ndkFolder == null)
|
|
throw new GradleException("NDK location missing. Define it with ndk.dir in the local.properties file")
|
|
|
|
return ndkFolder
|
|
}
|
|
|
|
def getNdkBuildCmd() {
|
|
def ndkBuildCmd = getNdkFolder() + "/ndk-build"
|
|
if (Os.isFamily(Os.FAMILY_WINDOWS))
|
|
ndkBuildCmd += ".cmd"
|
|
|
|
return ndkBuildCmd
|
|
}
|
|
|
|
def gitRevision() {
|
|
def cmd = "git rev-parse --short HEAD"
|
|
return cmd.execute().text.trim()
|
|
}
|
|
|
|
def gitRevisionUnixDate() {
|
|
def cmd = "git show -s --format=%ct HEAD^{commit}"
|
|
return cmd.execute().text.trim()
|
|
}
|
|
|
|
def gitRevisionDate() {
|
|
def cmd = "git show -s --format=%ci HEAD^{commit}"
|
|
return cmd.execute().text.trim()
|
|
}
|
|
|
|
dependencies {
|
|
testImplementation 'junit:junit:4.13.2'
|
|
androidTestImplementation 'junit:junit:4.13.2'
|
|
|
|
androidTestImplementation 'androidx.test:core:1.3.0'
|
|
androidTestImplementation 'androidx.test:runner:1.3.0'
|
|
androidTestImplementation 'androidx.test:rules:1.3.0'
|
|
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
|
}
|
|
|
|
project.afterEvaluate {
|
|
publishing {
|
|
publications {
|
|
release(MavenPublication) {
|
|
from components.release
|
|
artifact androidJavadocsJar
|
|
artifact androidSourcesJar
|
|
groupId = project.getProperties().getOrDefault("GROUP", "org.matrix.android")
|
|
artifactId = project.getProperties().getOrDefault("ARTIFACT_ID", "olm")
|
|
version = project.getProperties().getOrDefault("VERSION_NAME", "0.0.0")
|
|
}
|
|
}
|
|
repositories {
|
|
maven {
|
|
url "https://gitlab.matrix.org/api/v4/projects/27/packages/maven"
|
|
credentials(HttpHeaderCredentials) {
|
|
name = "Deploy-Token"
|
|
value = matrixOrgPrivateToken
|
|
}
|
|
authentication {
|
|
header(HttpHeaderAuthentication)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
signing {
|
|
useGpgCmd()
|
|
sign publishing.publications.release
|
|
}
|
|
}
|