prepare release: staking config, proguard fixes, icons and build cleanup
- Add subquery endpoints for staking-rewards, history, staking APIs - Add identityChain, stakingWiki, pushSupport to chain config - Remove versionNameSuffix/applicationIdSuffix from releaseMarket build - Fix privacy/terms URLs to use .html extension - Strengthen proguard rules for Retrofit, SR25519, Substrate SDK, WalletConnect, Google Drive, Navigation and crypto classes - Update launcher icons for debug and release variants
@@ -70,9 +70,6 @@ android {
|
||||
matchingFallbacks = ['release']
|
||||
signingConfig signingConfigs.market
|
||||
|
||||
versionNameSuffix "-${releaseApplicationSuffix}"
|
||||
applicationIdSuffix ".${releaseApplicationSuffix}"
|
||||
|
||||
buildConfigField "String", "BuildType", "\"releaseMarket\""
|
||||
}
|
||||
releaseGithub {
|
||||
|
||||
@@ -24,16 +24,35 @@
|
||||
-dontwarn kotlinx.coroutines.**
|
||||
|
||||
# ============================================================
|
||||
# Retrofit & OkHttp
|
||||
# Retrofit & OkHttp (Strict rules for generic type preservation)
|
||||
# ============================================================
|
||||
-dontwarn okhttp3.**
|
||||
-dontwarn okio.**
|
||||
-dontwarn javax.annotation.**
|
||||
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
|
||||
|
||||
# Keep Retrofit library
|
||||
-keep class retrofit2.** { *; }
|
||||
-keepclassmembers class retrofit2.** { *; }
|
||||
|
||||
# Essential attributes for reflection
|
||||
-keepattributes Signature
|
||||
-keepattributes Exceptions
|
||||
-keepclasseswithmembers class * {
|
||||
-keepattributes InnerClasses
|
||||
-keepattributes EnclosingMethod
|
||||
-keepattributes RuntimeVisibleAnnotations
|
||||
-keepattributes RuntimeInvisibleAnnotations
|
||||
-keepattributes RuntimeVisibleParameterAnnotations
|
||||
-keepattributes RuntimeInvisibleParameterAnnotations
|
||||
-keepattributes AnnotationDefault
|
||||
|
||||
# Keep ALL interfaces with Retrofit annotations - NO allowshrinking/allowobfuscation
|
||||
-keep interface * {
|
||||
@retrofit2.http.* <methods>;
|
||||
}
|
||||
|
||||
# Keep the method signatures including generic types
|
||||
-keepclasseswithmembers interface * {
|
||||
@retrofit2.http.* <methods>;
|
||||
}
|
||||
|
||||
@@ -61,7 +80,8 @@
|
||||
# ============================================================
|
||||
# Native JNI Bindings (Rust)
|
||||
# ============================================================
|
||||
# SR25519 signing
|
||||
# SR25519 signing - keep the native methods and the class
|
||||
-keep class io.novafoundation.nova.sr25519.BizinikiwSr25519 { *; }
|
||||
-keep class io.novafoundation.nova.** { native <methods>; }
|
||||
-keepclasseswithmembernames class * {
|
||||
native <methods>;
|
||||
@@ -70,12 +90,41 @@
|
||||
# Keep all JNI related classes
|
||||
-keep class io.parity.** { *; }
|
||||
|
||||
# Runtime signers
|
||||
-keep class io.novafoundation.nova.runtime.extrinsic.signer.** { *; }
|
||||
|
||||
# ============================================================
|
||||
# Substrate SDK
|
||||
# ============================================================
|
||||
-keep class jp.co.soramitsu.** { *; }
|
||||
-dontwarn jp.co.soramitsu.**
|
||||
|
||||
# Nova Substrate SDK (io.novasama)
|
||||
-keep class io.novasama.substrate_sdk_android.** { *; }
|
||||
-keepclassmembers class io.novasama.substrate_sdk_android.** { *; }
|
||||
-dontwarn io.novasama.substrate_sdk_android.**
|
||||
|
||||
# XXHash library (used by Substrate SDK hashing)
|
||||
-keep class net.jpountz.** { *; }
|
||||
-keepclassmembers class net.jpountz.** { *; }
|
||||
-dontwarn net.jpountz.**
|
||||
|
||||
# Keep Schema objects and their delegated properties
|
||||
-keep class * extends io.novasama.substrate_sdk_android.scale.Schema { *; }
|
||||
-keepclassmembers class * extends io.novasama.substrate_sdk_android.scale.Schema {
|
||||
<fields>;
|
||||
<methods>;
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# Secrets & Crypto Classes
|
||||
# ============================================================
|
||||
-keep class io.novafoundation.nova.common.data.secrets.** { *; }
|
||||
-keepclassmembers class io.novafoundation.nova.common.data.secrets.** { *; }
|
||||
-keep class io.novafoundation.nova.feature_account_impl.data.secrets.** { *; }
|
||||
-keep class io.novafoundation.nova.feature_account_impl.data.repository.datasource.** { *; }
|
||||
-keep class io.novafoundation.nova.feature_account_impl.data.repository.addAccount.** { *; }
|
||||
|
||||
# ============================================================
|
||||
# Firebase
|
||||
# ============================================================
|
||||
@@ -116,6 +165,8 @@
|
||||
-keep class io.novafoundation.nova.**.response.** { *; }
|
||||
-keep class io.novafoundation.nova.**.request.** { *; }
|
||||
-keep class io.novafoundation.nova.**.dto.** { *; }
|
||||
-keep class io.novafoundation.nova.**.*Remote { *; }
|
||||
-keep class io.novafoundation.nova.**.*Remote$* { *; }
|
||||
|
||||
# ============================================================
|
||||
# Parcelable
|
||||
@@ -153,18 +204,63 @@
|
||||
# WalletConnect
|
||||
# ============================================================
|
||||
-keep class com.walletconnect.** { *; }
|
||||
-keepclassmembers class com.walletconnect.** { *; }
|
||||
-dontwarn com.walletconnect.**
|
||||
|
||||
# ============================================================
|
||||
# Google API Client (Google Drive)
|
||||
# ============================================================
|
||||
-keep class com.google.api.** { *; }
|
||||
-keepclassmembers class com.google.api.** { *; }
|
||||
-keep class com.google.api.client.** { *; }
|
||||
-keepclassmembers class com.google.api.client.** { *; }
|
||||
-keep class com.google.api.services.** { *; }
|
||||
-keepclassmembers class com.google.api.services.** { *; }
|
||||
-dontwarn com.google.api.**
|
||||
|
||||
# ============================================================
|
||||
# Navigation Component
|
||||
# ============================================================
|
||||
-keep class * extends androidx.navigation.Navigator { *; }
|
||||
-keep @androidx.navigation.Navigator.Name class * { *; }
|
||||
-keepnames class * extends androidx.navigation.Navigator
|
||||
-keepattributes *Annotation*
|
||||
-keep class androidx.navigation.** { *; }
|
||||
-keep class * implements androidx.navigation.NavArgs { *; }
|
||||
-keep class androidx.navigation.fragment.** { *; }
|
||||
-keep class io.novafoundation.nova.**.navigation.** { *; }
|
||||
-keep class * extends androidx.navigation.NavDestination { *; }
|
||||
|
||||
# Keep all Nova foundation classes (prevent aggressive obfuscation)
|
||||
-keep class io.novafoundation.nova.** { *; }
|
||||
-keepnames class io.novafoundation.nova.**
|
||||
|
||||
# ============================================================
|
||||
# Optimization settings
|
||||
# ============================================================
|
||||
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*
|
||||
-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/*,!method/inlining/*
|
||||
-optimizationpasses 5
|
||||
-allowaccessmodification
|
||||
|
||||
# Don't optimize or obfuscate Retrofit interfaces - critical for type reflection
|
||||
-keepnames,includedescriptorclasses interface * {
|
||||
@retrofit2.http.* <methods>;
|
||||
}
|
||||
|
||||
# ============================================================
|
||||
# Don't warn about missing classes that we don't use
|
||||
# ============================================================
|
||||
-dontwarn org.conscrypt.**
|
||||
-dontwarn org.slf4j.**
|
||||
-dontwarn javax.naming.**
|
||||
-dontwarn org.w3c.dom.traversal.**
|
||||
-dontwarn org.apache.xerces.**
|
||||
-dontwarn org.apache.xml.**
|
||||
-dontwarn org.apache.xalan.**
|
||||
-dontwarn org.ietf.jgss.**
|
||||
-dontwarn org.apache.http.**
|
||||
|
||||
# ByteBuddy (test dependency)
|
||||
-dontwarn net.bytebuddy.**
|
||||
-dontwarn com.sun.jna.**
|
||||
-dontwarn edu.umd.cs.findbugs.annotations.**
|
||||
|
||||
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 1012 B After Width: | Height: | Size: 177 B |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 830 B After Width: | Height: | Size: 172 B |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 180 B |
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 187 B |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 36 KiB |
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@mipmap/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 177 B |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 9.3 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 172 B |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 180 B |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 187 B |
|
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 123 KiB After Width: | Height: | Size: 197 B |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 66 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 36 KiB |
@@ -5,8 +5,8 @@ android {
|
||||
defaultConfig {
|
||||
|
||||
buildConfigField "String", "WEBSITE_URL", "\"https://pezkuwichain.io\""
|
||||
buildConfigField "String", "PRIVACY_URL", "\"https://pezkuwichain.io/privacy\""
|
||||
buildConfigField "String", "TERMS_URL", "\"https://pezkuwichain.io/terms\""
|
||||
buildConfigField "String", "PRIVACY_URL", "\"https://pezkuwichain.io/privacy.html\""
|
||||
buildConfigField "String", "TERMS_URL", "\"https://pezkuwichain.io/terms.html\""
|
||||
buildConfigField "String", "GITHUB_URL", "\"https://github.com/pezkuwichain\""
|
||||
buildConfigField "String", "TELEGRAM_URL", "\"https://t.me/pezkuwichain\""
|
||||
buildConfigField "String", "TWITTER_URL", "\"https://twitter.com/pezkuwichain\""
|
||||
|
||||
|
Before Width: | Height: | Size: 160 KiB After Width: | Height: | Size: 179 KiB |
@@ -2,7 +2,7 @@
|
||||
{
|
||||
"chainId": "bb4a61ab0c4b8c12f5eab71d0c86c482e03a275ecdafee678dea712474d33d75",
|
||||
"name": "Pezkuwi",
|
||||
"icon": "HEZ.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/HEZ.svg",
|
||||
"addressPrefix": 42,
|
||||
"options": [
|
||||
"crowdloans",
|
||||
@@ -32,8 +32,24 @@
|
||||
}
|
||||
],
|
||||
"externalApi": {
|
||||
"history": [],
|
||||
"staking": []
|
||||
"staking": [
|
||||
{
|
||||
"type": "subquery",
|
||||
"url": "https://subquery.pezkuwichain.io"
|
||||
}
|
||||
],
|
||||
"staking-rewards": [
|
||||
{
|
||||
"type": "subquery",
|
||||
"url": "https://subquery.pezkuwichain.io"
|
||||
}
|
||||
],
|
||||
"history": [
|
||||
{
|
||||
"type": "subquery",
|
||||
"url": "https://subquery.pezkuwichain.io"
|
||||
}
|
||||
]
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
@@ -44,7 +60,7 @@
|
||||
"priceId": "hezkurd",
|
||||
"staking": null,
|
||||
"type": "native",
|
||||
"icon": "HEZ.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/HEZ.svg",
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": null
|
||||
@@ -55,55 +71,24 @@
|
||||
"defaultBlockTimeMillis": 6000,
|
||||
"feeViaRuntimeCall": true,
|
||||
"disabledCheckMetadataHash": true,
|
||||
"stakingMaxElectingVoters": 22500
|
||||
}
|
||||
},
|
||||
{
|
||||
"chainId": "96eb58af1bb7288115b5e4ff1590422533e749293f231974536dc6672417d06f",
|
||||
"name": "Zagros Testnet",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/chains/Pezkuwi.png",
|
||||
"addressPrefix": 42,
|
||||
"options": [
|
||||
"testnet"
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"url": "wss://zagros-rpc.pezkuwichain.io",
|
||||
"name": "Zagros Node"
|
||||
}
|
||||
],
|
||||
"assets": [
|
||||
{
|
||||
"assetId": 0,
|
||||
"symbol": "HEZ",
|
||||
"precision": 12,
|
||||
"name": "HEZkurd",
|
||||
"priceId": "hezkurd",
|
||||
"staking": [
|
||||
"relaychain"
|
||||
],
|
||||
"type": "native",
|
||||
"icon": "HEZ.png"
|
||||
}
|
||||
],
|
||||
"additional": {
|
||||
"themeColor": "#009639",
|
||||
"feeViaRuntimeCall": true,
|
||||
"disabledCheckMetadataHash": true
|
||||
"stakingMaxElectingVoters": 22500,
|
||||
"identityChain": "58269e9c184f721e0309332d90cafc410df1519a5dc27a5fd9b3bf5fd2d129f8",
|
||||
"stakingWiki": "https://wiki.pezkuwichain.io/staking"
|
||||
}
|
||||
},
|
||||
{
|
||||
"chainId": "00d0e1d0581c3cd5c5768652d52f4520184018b44f56a2ae1e0dc9d65c00c948",
|
||||
"parentId": "bb4a61ab0c4b8c12f5eab71d0c86c482e03a275ecdafee678dea712474d33d75",
|
||||
"name": "Pezkuwi Asset Hub",
|
||||
"icon": "PEZ.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/PEZ.svg",
|
||||
"addressPrefix": 42,
|
||||
"options": [
|
||||
"swap-hub",
|
||||
"assethub-fees",
|
||||
"proxy",
|
||||
"multisig",
|
||||
"fullSyncByDefault"
|
||||
"fullSyncByDefault",
|
||||
"pushSupport"
|
||||
],
|
||||
"nodeSelectionStrategy": "roundRobin",
|
||||
"nodes": [
|
||||
@@ -120,7 +105,26 @@
|
||||
"event": "https://explorer.pezkuwichain.io/asset-hub/event/{value}"
|
||||
}
|
||||
],
|
||||
"externalApi": {},
|
||||
"externalApi": {
|
||||
"staking-rewards": [
|
||||
{
|
||||
"type": "subquery",
|
||||
"url": "https://subquery.pezkuwichain.io"
|
||||
}
|
||||
],
|
||||
"staking": [
|
||||
{
|
||||
"type": "subquery",
|
||||
"url": "https://subquery.pezkuwichain.io"
|
||||
}
|
||||
],
|
||||
"history": [
|
||||
{
|
||||
"type": "subquery",
|
||||
"url": "https://subquery.pezkuwichain.io"
|
||||
}
|
||||
]
|
||||
},
|
||||
"assets": [
|
||||
{
|
||||
"assetId": 0,
|
||||
@@ -133,7 +137,7 @@
|
||||
"nomination-pools"
|
||||
],
|
||||
"type": "native",
|
||||
"icon": "HEZ.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/HEZ.svg",
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": null
|
||||
@@ -146,7 +150,7 @@
|
||||
"priceId": "pezkuwi",
|
||||
"staking": null,
|
||||
"type": "statemine",
|
||||
"icon": "PEZ.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/PEZ.svg",
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": {
|
||||
@@ -161,7 +165,7 @@
|
||||
"priceId": "tether",
|
||||
"staking": null,
|
||||
"type": "statemine",
|
||||
"icon": "wUSDT.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/wUSDT.svg",
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": {
|
||||
@@ -221,7 +225,10 @@
|
||||
"disabledCheckMetadataHash": true,
|
||||
"relaychainAsNative": true,
|
||||
"stakingMaxElectingVoters": 22500,
|
||||
"timelineChain": "bb4a61ab0c4b8c12f5eab71d0c86c482e03a275ecdafee678dea712474d33d75"
|
||||
"identityChain": "58269e9c184f721e0309332d90cafc410df1519a5dc27a5fd9b3bf5fd2d129f8",
|
||||
"timelineChain": "bb4a61ab0c4b8c12f5eab71d0c86c482e03a275ecdafee678dea712474d33d75",
|
||||
"defaultBlockTime": 6000,
|
||||
"stakingWiki": "https://wiki.pezkuwichain.io/staking"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -260,7 +267,7 @@
|
||||
"priceId": "hezkurd",
|
||||
"staking": null,
|
||||
"type": "native",
|
||||
"icon": "HEZ.png",
|
||||
"icon": "https://raw.githubusercontent.com/pezkuwichain/pezkuwi-wallet-utils/main/icons/tokens/colored/HEZ.svg",
|
||||
"buyProviders": {},
|
||||
"sellProviders": {},
|
||||
"typeExtras": null
|
||||
@@ -9271,5 +9278,34 @@
|
||||
"noSubstrateRuntime",
|
||||
"testnet"
|
||||
]
|
||||
},
|
||||
{
|
||||
"chainId": "4b5f95eefedf0d0fb514339edc24d2d411310520f687b4146145bcedb99885b9",
|
||||
"parentId": "91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",
|
||||
"name": "Acurast",
|
||||
"assets": [
|
||||
{
|
||||
"assetId": 0,
|
||||
"symbol": "ACU",
|
||||
"precision": 12,
|
||||
"priceId": "acurast",
|
||||
"icon": "cACU.svg"
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"url": "wss://public-archive.mainnet.acurast.com",
|
||||
"name": "Acurast node"
|
||||
}
|
||||
],
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Acurast Monitoring Bot",
|
||||
"extrinsic": "https://acurastbot.com/explorer/extrinsics/{hash}",
|
||||
"account": "https://acurastbot.com/explorer/address/{address}"
|
||||
}
|
||||
],
|
||||
"icon": "https://raw.githubusercontent.com/novasamatech/nova-utils/master/icons/chains/gradient/Acurast.svg",
|
||||
"addressPrefix": 42
|
||||
}
|
||||
]
|
||||
|
||||