diff options
Diffstat (limited to 'wallet/build.gradle')
-rw-r--r-- | wallet/build.gradle | 134 |
1 files changed, 77 insertions, 57 deletions
diff --git a/wallet/build.gradle b/wallet/build.gradle index 9a5f8ef..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" } -def walletCoreVersion = "v0.8.2" -def walletCoreSha256 = "185ee051101968fb8e01e8dcc70b2017bbb99c92bc31c97330b2be16baf043e9" +def qtart_version = "0.10.6" 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 10 - versionName "v0.8.2" + 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,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 + } } |