mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-11-04 01:41:12 +00:00
The app module named no NDK, so AGP expected its default 27.0 against the 26.1 that CI installs, could not strip any native library and made no native-debug-symbols.zip for Play. Pin 26.1 in the app. The light client now keeps line tables for that symbol file; the packaged library is still stripped to 8.6 MB. Also adds an XCM encoding test for PezkuwiChain networks. This commit points WESTEND at Zagros to check that the test fails against that change.
345 lines
11 KiB
Groovy
345 lines
11 KiB
Groovy
apply plugin: 'com.google.gms.google-services'
|
|
apply plugin: 'kotlin-parcelize'
|
|
apply plugin: 'com.google.firebase.appdistribution'
|
|
apply plugin: "com.github.triplet.play"
|
|
apply from: "../scripts/versions.gradle"
|
|
apply from: "../scripts/secrets.gradle"
|
|
|
|
android {
|
|
// The NDK that CI installs and the bindings build with. Without it AGP expects its default NDK,
|
|
// cannot strip the native libraries: they ship with their debug sections and no native-debug-symbols.zip is made.
|
|
ndkVersion "26.1.10909125"
|
|
|
|
defaultConfig {
|
|
applicationId rootProject.applicationId
|
|
versionCode computeVersionCode()
|
|
versionName computeVersionName()
|
|
|
|
}
|
|
signingConfigs {
|
|
dev {
|
|
storeFile file('develop_key.jks')
|
|
storePassword readRawSecretOrNull('CI_KEYSTORE_PASS')
|
|
keyAlias readRawSecretOrNull('CI_KEYSTORE_KEY_ALIAS')
|
|
keyPassword readRawSecretOrNull('CI_KEYSTORE_KEY_PASS')
|
|
}
|
|
market {
|
|
storeFile file('market_key.jks')
|
|
storePassword readRawSecretOrNull('CI_MARKET_KEYSTORE_PASS')
|
|
keyAlias readRawSecretOrNull('CI_MARKET_KEYSTORE_KEY_ALIAS')
|
|
keyPassword readRawSecretOrNull('CI_MARKET_KEYSTORE_KEY_PASS')
|
|
}
|
|
github {
|
|
storeFile file('github_key.jks')
|
|
storePassword readRawSecretOrNull('CI_GITHUB_KEYSTORE_PASS')
|
|
keyAlias readRawSecretOrNull('CI_GITHUB_KEYSTORE_KEY_ALIAS')
|
|
keyPassword readRawSecretOrNull('CI_GITHUB_KEYSTORE_KEY_PASS')
|
|
}
|
|
}
|
|
buildTypes {
|
|
debug {
|
|
applicationIdSuffix '.debug'
|
|
versionNameSuffix '-debug'
|
|
// androidTest is only ever compiled against this build type (AGP's testBuildType
|
|
// defaults to "debug" and is not overridden anywhere in this project), so this is the
|
|
// only place a testInstrumentationRunner override actually takes effect - the identical
|
|
// override on the instrumentialTest build type below is unreachable dead config.
|
|
defaultConfig.testInstrumentationRunner "io.qameta.allure.android.runners.AllureAndroidJUnitRunner"
|
|
|
|
buildConfigField "String", "BuildType", "\"debug\""
|
|
}
|
|
debugLocal {
|
|
initWith buildTypes.debug
|
|
matchingFallbacks = ['debug']
|
|
signingConfig signingConfigs.debug
|
|
}
|
|
release {
|
|
minifyEnabled true
|
|
shrinkResources true
|
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
|
|
|
buildConfigField "String", "BuildType", "\"release\""
|
|
}
|
|
releaseTest {
|
|
initWith buildTypes.release
|
|
matchingFallbacks = ['release']
|
|
signingConfig signingConfigs.debug
|
|
|
|
versionNameSuffix '-releaseTest'
|
|
applicationIdSuffix '.releaseTest'
|
|
|
|
buildConfigField "String", "BuildType", "\"releaseTest\""
|
|
}
|
|
releaseMarket {
|
|
initWith buildTypes.release
|
|
matchingFallbacks = ['release']
|
|
signingConfig signingConfigs.market
|
|
ndk { debugSymbolLevel 'FULL' }
|
|
|
|
buildConfigField "String", "BuildType", "\"releaseMarket\""
|
|
}
|
|
releaseGithub {
|
|
initWith buildTypes.release
|
|
matchingFallbacks = ['release']
|
|
signingConfig signingConfigs.github
|
|
|
|
buildConfigField "String", "BuildType", "\"releaseGithub\""
|
|
}
|
|
develop {
|
|
signingConfig signingConfigs.dev
|
|
matchingFallbacks = ['debug']
|
|
versionNameSuffix '-develop'
|
|
applicationIdSuffix '.dev'
|
|
//Init firebase
|
|
def localReleaseNotes = releaseNotes()
|
|
def localFirebaseGroup = firebaseGroup()
|
|
firebaseAppDistribution {
|
|
releaseNotes = localReleaseNotes
|
|
groups = localFirebaseGroup
|
|
}
|
|
|
|
buildConfigField "String", "BuildType", "\"develop\""
|
|
}
|
|
instrumentialTest {
|
|
initWith buildTypes.debug
|
|
matchingFallbacks = ['debug']
|
|
|
|
buildConfigField "String", "BuildType", "\"instrumentalTest\""
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
releaseGithub {
|
|
res.srcDirs = ['src/release/res']
|
|
}
|
|
releaseMarket {
|
|
res.srcDirs = ['src/release/res']
|
|
}
|
|
releaseTest {
|
|
res.srcDirs = ['src/release/res']
|
|
}
|
|
}
|
|
|
|
bundle {
|
|
language {
|
|
enableSplit = false
|
|
}
|
|
}
|
|
|
|
applicationVariants.all { variant ->
|
|
String name = variant.buildType.name
|
|
if (name != "release" && name.startsWith("release")) {
|
|
createBindReleaseFileTask(variant.buildType.name)
|
|
}
|
|
}
|
|
|
|
packagingOptions {
|
|
resources.excludes.add("META-INF/versions/9/previous-compilation-data.bin")
|
|
resources.excludes.add("META-INF/DEPENDENCIES")
|
|
resources.excludes.add("META-INF/NOTICE.md")
|
|
// Use 16KB-aligned libsqlcipher.so from jniLibs instead of AAR's 4KB-aligned version
|
|
jniLibs.pickFirsts.add("**/libsqlcipher.so")
|
|
// Store native libs uncompressed and 16KB-aligned for Android 15+ compatibility
|
|
jniLibs.useLegacyPackaging = false
|
|
}
|
|
|
|
buildFeatures {
|
|
viewBinding true
|
|
}
|
|
namespace 'io.novafoundation.nova.app'
|
|
}
|
|
|
|
void createBindReleaseFileTask(String destination) {
|
|
String taskName = "bind${destination.capitalize()}GithubGoogleServicesToRelease"
|
|
|
|
Task task = task(taskName, type: Copy) {
|
|
description = "Switches to RELEASE google-services.json for ${destination}"
|
|
from "src/release"
|
|
include "google-services.json"
|
|
into "src/${destination}"
|
|
}
|
|
|
|
afterEvaluate {
|
|
def capitalizedDestination = destination.capitalize()
|
|
def dependentTasks = [
|
|
"process${capitalizedDestination}GoogleServices".toString(),
|
|
"merge${capitalizedDestination}JniLibFolders".toString(),
|
|
"merge${capitalizedDestination}StartupProfile".toString(),
|
|
"merge${capitalizedDestination}Shaders".toString(),
|
|
"merge${capitalizedDestination}ArtProfile".toString()
|
|
]
|
|
|
|
dependentTasks.forEach {
|
|
tasks.getByName(it).dependsOn(task)
|
|
}
|
|
}
|
|
}
|
|
|
|
play {
|
|
serviceAccountCredentials = file(System.env.CI_PLAY_KEY ?: "../key/fake.json")
|
|
track = "production"
|
|
releaseStatus = "completed"
|
|
}
|
|
|
|
dependencies {
|
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
implementation project(':core-db')
|
|
implementation project(':common')
|
|
|
|
implementation playReview
|
|
implementation playAppUpdate
|
|
implementation project(':feature-splash')
|
|
|
|
implementation project(':feature-onboarding-api')
|
|
implementation project(':feature-onboarding-impl')
|
|
|
|
implementation project(':feature-ledger-api')
|
|
implementation project(':feature-ledger-core')
|
|
implementation project(':feature-ledger-impl')
|
|
|
|
implementation project(':feature-account-api')
|
|
implementation project(':feature-account-impl')
|
|
|
|
implementation project(':feature-account-migration')
|
|
|
|
implementation project(':feature-wallet-api')
|
|
implementation project(':feature-wallet-impl')
|
|
|
|
implementation project(':runtime')
|
|
implementation project(':web3names')
|
|
|
|
implementation project(':feature-staking-api')
|
|
implementation project(':feature-staking-impl')
|
|
|
|
implementation project(':feature-crowdloan-api')
|
|
implementation project(':feature-crowdloan-impl')
|
|
|
|
implementation project(':feature-dapp-api')
|
|
implementation project(':feature-dapp-impl')
|
|
|
|
implementation project(':feature-nft-api')
|
|
implementation project(':feature-nft-impl')
|
|
|
|
implementation project(':feature-currency-api')
|
|
implementation project(':feature-currency-impl')
|
|
|
|
implementation project(':feature-governance-api')
|
|
implementation project(':feature-governance-impl')
|
|
|
|
implementation project(':feature-assets')
|
|
|
|
implementation project(':feature-vote')
|
|
|
|
implementation project(':feature-versions-api')
|
|
implementation project(':feature-versions-impl')
|
|
|
|
implementation project(':caip')
|
|
|
|
implementation project(':feature-external-sign-api')
|
|
implementation project(':feature-external-sign-impl')
|
|
|
|
implementation project(':feature-wallet-connect-api')
|
|
implementation project(':feature-wallet-connect-impl')
|
|
|
|
implementation project(':feature-proxy-api')
|
|
implementation project(':feature-proxy-impl')
|
|
|
|
implementation project(':feature-settings-api')
|
|
implementation project(':feature-settings-impl')
|
|
|
|
implementation project(":feature-swap-core")
|
|
implementation project(':feature-swap-api')
|
|
implementation project(':feature-swap-impl')
|
|
|
|
implementation project(":feature-buy-api")
|
|
implementation project(":feature-buy-impl")
|
|
|
|
implementation project(':feature-push-notifications')
|
|
implementation project(':feature-deep-linking')
|
|
|
|
implementation project(':feature-cloud-backup-api')
|
|
implementation project(':feature-cloud-backup-impl')
|
|
|
|
implementation project(':feature-banners-api')
|
|
implementation project(':feature-banners-impl')
|
|
|
|
implementation project(':feature-ahm-api')
|
|
implementation project(':feature-ahm-impl')
|
|
|
|
implementation project(':feature-gift-api')
|
|
implementation project(':feature-gift-impl')
|
|
|
|
implementation project(':bindings:metadata_shortener')
|
|
implementation project(':bindings:sr25519-bizinikiwi')
|
|
|
|
implementation project(":feature-xcm:impl")
|
|
|
|
implementation project(":feature-multisig:operations")
|
|
|
|
implementation project(':test-shared')
|
|
|
|
implementation kotlinDep
|
|
|
|
implementation biometricDep
|
|
|
|
|
|
implementation androidDep
|
|
implementation constraintDep
|
|
|
|
implementation zXingEmbeddedDep
|
|
|
|
implementation navigationFragmentDep
|
|
implementation navigationUiDep
|
|
|
|
implementation roomDep
|
|
|
|
implementation substrateSdkDep
|
|
|
|
implementation daggerDep
|
|
ksp daggerCompiler
|
|
|
|
implementation lifecycleDep
|
|
ksp lifecycleCompiler
|
|
|
|
implementation lifeCycleKtxDep
|
|
|
|
implementation retrofitDep
|
|
implementation gsonConvertedDep
|
|
|
|
|
|
compileOnly wsDep
|
|
|
|
implementation coroutinesDep
|
|
|
|
testImplementation project(':test-shared')
|
|
|
|
implementation insetterDep
|
|
|
|
implementation liveDataKtxDep
|
|
|
|
implementation platform(firebaseBomDep)
|
|
implementation firestoreDep
|
|
implementation firebaseCloudMessagingDep
|
|
implementation firebaseAppCheck
|
|
|
|
implementation walletConnectCoreDep, withoutTransitiveAndroidX
|
|
implementation walletConnectWalletDep, withoutTransitiveAndroidX
|
|
|
|
kspAndroidTest daggerCompiler
|
|
|
|
androidTestImplementation androidTestRunnerDep
|
|
androidTestImplementation androidTestRulesDep
|
|
androidTestImplementation androidJunitDep
|
|
androidTestImplementation scalarsConverterDep
|
|
|
|
androidTestImplementation allureKotlinModel
|
|
androidTestImplementation allureKotlinCommons
|
|
androidTestImplementation allureKotlinJunit4
|
|
androidTestImplementation allureKotlinAndroid
|
|
}
|
|
|
|
task printVersion {
|
|
doLast {
|
|
println "versionName:${computeVersionName()}"
|
|
}
|
|
} |