mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-08-04 15:25:40 +00:00
39dd67ba94
Play rejects updates whose native libraries are not aligned for 16 KB memory pages, enforced since Nov 1 2025. Measuring the released bundle showed exactly one library short, and only on one ABI: arm64-v8a 7/7 aligned at 0x4000 x86_64 6/7 aligned; libpl_droidsonroids_gif.so at 0x1000 That library comes from pl.droidsonroids.gif:android-gif-drawable 1.2.19, inherited from upstream and never used here: no GifDrawable, GifImageView, GifTextView or pl.droidsonroids reference exists in any Kotlin, Java or XML file in the project. Removing it beats upgrading to 1.2.32 — an unused dependency should not be carried at any version, and this also drops roughly 175 KB of dead native code across four ABIs. Everything else in the bundle was already aligned, and jniLibs.useLegacyPackaging is already false, so nothing more is needed for the requirement.
341 lines
11 KiB
Groovy
341 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 {
|
|
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()}"
|
|
}
|
|
} |