0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 03:52:15 +02:00
Anki-Android/api/build.gradle
David Allison 7471cd084a chore(api): extract constants to build.gradle
These values will be changed when enabling API tests for 'com.ichi2.anki.debug'
2023-01-14 12:15:12 +02:00

142 lines
4.6 KiB
Groovy

plugins {
id 'maven-publish'
id 'com.android.library'
id 'kotlin-android'
}
group = "com.ichi2.anki"
version = "2.0.0"
repositories {
google()
mavenCentral()
}
android {
compileSdkVersion 33
defaultConfig {
minSdkVersion 16
//noinspection OldTargetApi
targetSdkVersion 29
buildConfigField "String", "READ_WRITE_PERMISSION", '"com.ichi2.anki.permission.READ_WRITE_DATABASE"'
buildConfigField "String", "AUTHORITY", '"com.ichi2.anki.flashcards"'
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
// enable explicit api mode for additional checks related to the public api
// see https://kotlinlang.org/docs/whatsnew14.html#explicit-api-mode-for-library-authors
freeCompilerArgs += '-Xexplicit-api=strict'
}
}
apply from: "../lint.gradle"
dependencies {
implementation 'androidx.annotation:annotation:1.5.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
testImplementation "org.junit.jupiter:junit-jupiter:$junit_version"
testImplementation "org.junit.vintage:junit-vintage-engine:$junit_version"
testImplementation "org.robolectric:robolectric:$robolectric_version"
testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
lintChecks project(":lint-rules")
}
task androidSourcesJar(type: Jar) {
archiveClassifier.set('sources')
// For Android libraries
from android.sourceSets.main.java.srcDirs
}
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'
if (JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
}
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
archiveClassifier.set('javadoc')
from androidJavadocs.destinationDir
}
publishing {
publications {
mavenJava(MavenPublication) {
artifactId = "api"
artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
artifact androidSourcesJar
artifact androidJavadocsJar
versionMapping {
usage('java-api') {
fromResolutionOf('runtimeClasspath')
}
usage('java-runtime') {
fromResolutionResult()
}
}
pom {
name = 'AnkiDroid API'
description = 'A programmatic API exported by AnkiDroid'
url = 'https://github.com/ankidroid/Anki-Android/tree/main/api'
licenses {
license {
name = 'GNU LESSER GENERAL PUBLIC LICENSE, v3'
url = 'https://github.com/ankidroid/Anki-Android/blob/main/api/COPYING.LESSER'
}
}
scm {
connection = 'scm:git:git://github.com/ankidroid/Anki-Android.git'
url = 'https://github.com/ankidroid/Anki-Android'
}
}
}
}
repositories {
maven {
// change URLs to point to your repos, e.g. http://my.org/repo
def releasesRepoUrl = layout.buildDirectory.dir('repos/releases')
def snapshotsRepoUrl = layout.buildDirectory.dir('repos/snapshots')
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
}
}
}
task zipRelease(type: Zip) {
from layout.buildDirectory.dir('repos/releases')
destinationDirectory = buildDir
archiveFileName = "${buildDir}/release-${archiveVersion.get()}.zip"
}
// Use this task to make a release you can send to someone
// You may like `./gradlew :api:publishToMavenLocal for development
task generateRelease {
doLast {
println "Release ${version} can be found at ${buildDir}/repos/releases/"
println "Release ${version} zipped can be found ${buildDir}/release-${version}.zip"
}
}
publishMavenJavaPublicationToMavenRepository.dependsOn(assemble)
publish.dependsOn(assemble)
generateRelease.dependsOn(publish)
generateRelease.dependsOn(zipRelease)