summaryrefslogtreecommitdiff
path: root/wallet/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/build.gradle')
-rw-r--r--wallet/build.gradle134
1 files changed, 77 insertions, 57 deletions
diff --git a/wallet/build.gradle b/wallet/build.gradle
index e5da3a3..f78d919 100644
--- a/wallet/build.gradle
+++ b/wallet/build.gradle
@@ -13,18 +13,13 @@
* You should have received a copy of the GNU General Public License along with
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
-
-import com.android.build.gradle.tasks.MergeResources
-
plugins {
id "com.android.application"
id "kotlin-android"
id "kotlinx-serialization"
- id "de.undercouch.download"
}
-def walletCoreVersion = "v0.9.0-dev.1"
-def walletCoreSha256 = "4c7add4ef814974fe129f8c06c4ebb08876c95cd689ee8629fa0ac0109320021"
+def qtart_version = "0.10.1"
static def versionCodeEpoch() {
return (new Date().getTime() / 1000).toInteger()
@@ -39,18 +34,16 @@ def gitCommit = { ->
}
android {
- compileSdkVersion 30
- //noinspection GradleDependency
- buildToolsVersion "$build_tools_version"
+ namespace 'net.taler.wallet'
+ compileSdk 34
defaultConfig {
applicationId "net.taler.wallet"
- minSdkVersion 21
- targetSdkVersion 30
- versionCode 11
- versionName "v0.9.0-dev.1"
+ minSdkVersion 24
+ targetSdkVersion 33
+ versionCode 39
+ versionName "0.9.4+p2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- buildConfigField "String", "WALLET_CORE_VERSION", "\"$walletCoreVersion\""
}
buildTypes {
release {
@@ -62,11 +55,13 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
- flavorDimensions "distributionChannel"
+ flavorDimensions = ["distributionChannel"]
productFlavors {
fdroid {
dimension "distributionChannel"
applicationIdSuffix ".fdroid"
+ // version codes get multiplied by 10 and an ABI suffix gets added to the code
+ // if 'splitApk' property is set
}
google {
dimension "distributionChannel"
@@ -80,47 +75,74 @@ android {
}
compileOptions {
- sourceCompatibility = 1.8
- targetCompatibility = 1.8
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
// Flag to enable support for the new language APIs for zxing
coreLibraryDesugaringEnabled true
}
kotlinOptions {
- jvmTarget = "1.8"
+ jvmTarget = "17"
}
- buildFeatures {
- viewBinding = true
+ composeOptions {
+ kotlinCompilerExtensionVersion "1.5.7"
}
+ buildFeatures {
+ buildConfig true
+ viewBinding true
+ compose true
+ }
packagingOptions {
- exclude("META-INF/*.kotlin_module")
+ jniLibs {
+ keepDebugSymbols += ['**/*.so']
+ }
+ resources {
+ excludes += ['META-INF/*.kotlin_module']
+ }
+ }
+ splits {
+ abi {
+ // can not be defined per flavor, so we use a property to turn this on for F-Droid
+ enable project.hasProperty('splitApk')
+ reset() // Resets the list of ABIs to remove all included by default
+ include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
+ universalApk false
+ }
}
- lintOptions {
+ lint {
abortOnError true
ignoreWarnings false
- // TODO remove once com.google.android.material fixed this
- // https://github.com/material-components/material-components-android/issues/504
- ignore "WrongConstant"
}
}
dependencies {
implementation project(":taler-kotlin-android")
- implementation project(":anastasis-ui")
- implementation 'net.taler:akono:0.2'
+ implementation "net.taler:qtart:$qtart_version@aar"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
- implementation 'androidx.preference:preference-ktx:1.1.1'
+ implementation 'androidx.preference:preference-ktx:1.2.1'
implementation "com.google.android.material:material:$material_version"
implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version"
+ implementation "androidx.browser:browser:1.7.0"
+
+ // Compose
+ implementation platform('androidx.compose:compose-bom:2023.10.01')
+ implementation 'androidx.compose.material3:material3'
+ implementation 'androidx.compose.material:material-icons-extended'
+ implementation "androidx.compose.runtime:runtime-livedata"
+ implementation "androidx.lifecycle:lifecycle-viewmodel-compose"
+ implementation "com.google.accompanist:accompanist-themeadapter-material3:0.28.0"
+ implementation 'androidx.activity:activity-compose:1.8.2'
+ implementation 'androidx.compose.ui:ui-tooling-preview'
+ debugImplementation 'androidx.compose.ui:ui-tooling'
// Lists and Selection
- implementation "androidx.recyclerview:recyclerview:1.2.1"
+ implementation "androidx.recyclerview:recyclerview:1.3.2"
implementation "androidx.recyclerview:recyclerview-selection:1.1.0"
// Navigation Library
@@ -131,47 +153,45 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// QR codes
- implementation 'com.journeyapps:zxing-android-embedded:4.0.2@aar'
+ implementation 'com.journeyapps:zxing-android-embedded:4.3.0@aar'
// needed to support zxing library in taler-kotlin-android on API < 24
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
+ coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
// Nicer ProgressBar
implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1'
// Markdown rendering
- final def markwon_version = '4.6.0'
+ final def markwon_version = '4.6.2'
implementation "io.noties.markwon:core:$markwon_version"
implementation "io.noties.markwon:ext-tables:$markwon_version"
implementation "io.noties.markwon:recycler:$markwon_version"
+ // Java Native access for qtart
+ implementation "net.java.dev.jna:jna:5.13.0@aar"
+
testImplementation "junit:junit:$junit_version"
- testImplementation 'org.json:json:20200518'
- androidTestImplementation 'androidx.test:runner:1.4.0'
- androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+ testImplementation 'org.json:json:20220320'
}
-def walletLibraryDir = "src/main/assets"
-def walletDestFile = "${walletLibraryDir}/taler-wallet-embedded-${walletCoreVersion}.js"
-task downloadWalletLibrary(type: Download, dependsOn: preBuild) {
- src "https://git.taler.net/wallet-core.git/plain/${walletCoreVersion}/taler-wallet-embedded.js?h=prebuilt"
- dest walletDestFile
- onlyIfModified true
- overwrite false
- doFirst {
- new File(walletLibraryDir).mkdirs()
- if (!file(dest).exists()) { // delete old versions before fetching new one
- delete fileTree(walletLibraryDir) {
- include 'taler-wallet-embedded-*.js'
- }
- }
+tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
+ kotlinOptions {
+ freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
}
}
-task verifyWalletLibrary(type: Verify, dependsOn: downloadWalletLibrary) {
- src walletDestFile
- algorithm 'SHA-256'
- checksum walletCoreSha256
-}
-tasks.withType(MergeResources) {
- inputs.dir walletLibraryDir
- dependsOn verifyWalletLibrary
+
+// Map for the version code that gives each ABI a value.
+ext.abiCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, x86: 3, x86_64: 4]
+// For each APK output variant, override versionCode with a combination of ext.abiCodes + variant.versionCode.
+android.applicationVariants.configureEach { variant ->
+ // Assigns a different version code for each output APK
+ variant.outputs.each { output ->
+ // Stores the value of ext.abiCodes that is associated with the ABI for this variant.
+ def baseAbiVersionCode =
+ // Determines the ABI for this variant and returns the mapped value.
+ project.ext.abiCodes.get(output.getFilter(com.android.build.OutputFile.ABI))
+ if (baseAbiVersionCode != null) {
+ output.versionCodeOverride = 10 * variant.versionCode + baseAbiVersionCode
+ }
+ // leaves version code alone of there's no baseAbiVersionCode
+ }
}