summaryrefslogtreecommitdiff
path: root/wallet/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/build.gradle')
-rw-r--r--wallet/build.gradle113
1 files changed, 56 insertions, 57 deletions
diff --git a/wallet/build.gradle b/wallet/build.gradle
index 737a1de..93f4a49 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" version "5.3.0"
}
-def walletCoreVersion = "v0.9.1"
-def walletCoreSha256 = "99fd96fb897c6954710728820369949090bff84d06728f04b29c6cb067c8f9d4"
+def qtart_version = "0.10.6"
static def versionCodeEpoch() {
return (new Date().getTime() / 1000).toInteger()
@@ -40,17 +35,15 @@ def gitCommit = { ->
android {
namespace 'net.taler.wallet'
- compileSdkVersion 33
- buildToolsVersion "$build_tools_version"
+ compileSdk 34
defaultConfig {
applicationId "net.taler.wallet"
- minSdkVersion 21
- targetSdkVersion 32
- versionCode 21
- versionName walletCoreVersion
+ minSdkVersion 24
+ targetSdkVersion 33
+ versionCode 41
+ versionName "0.10.2"
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,22 +75,23 @@ 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"
}
composeOptions {
- kotlinCompilerExtensionVersion "1.3.2"
+ kotlinCompilerExtensionVersion "1.5.7"
}
buildFeatures {
+ buildConfig true
viewBinding true
compose true
}
@@ -107,6 +103,15 @@ android {
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
+ }
+ }
lint {
abortOnError true
@@ -116,27 +121,28 @@ android {
dependencies {
implementation project(":taler-kotlin-android")
- 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.2.0'
+ 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.4.0"
+ implementation "androidx.browser:browser:1.7.0"
// Compose
- implementation 'androidx.activity:activity-compose:1.6.1'
- implementation "androidx.compose.animation:animation:$compose_version"
- implementation "androidx.compose.ui:ui-tooling:$compose_version"
- implementation "androidx.compose.material:material:1.3.1"
- implementation "androidx.compose.material3:material3:1.0.1"
- implementation "androidx.compose.material:material-icons-extended:1.3.1"
- implementation "androidx.lifecycle:lifecycle-viewmodel-compose:$lifecycle_version"
+ 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
@@ -149,7 +155,7 @@ dependencies {
// QR codes
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'
@@ -160,39 +166,32 @@ dependencies {
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: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'
- }
- }
- }
-}
-task verifyWalletLibrary(type: Verify, dependsOn: downloadWalletLibrary) {
- src walletDestFile
- algorithm 'SHA-256'
- checksum walletCoreSha256
-}
-
-tasks.withType(MergeResources) {
- inputs.dir walletLibraryDir
- dependsOn verifyWalletLibrary
-}
-
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
}
}
+
+// 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
+ }
+}