mirror of
https://github.com/beemdevelopment/Aegis.git
synced 2025-05-25 11:22:25 +00:00
This enables some minification and optimization options to shrink the size of our APK. A release APK would previously be 12 MB in size, but would now be 8.2 MB. To test, check if *all* of the functionality of the app still works, particularly parts that refer to dependencies. You'll know if ProGuard broke something when the app crashes with a ``ClassNotFoundException`` or similar exception. I think I've covered all of the cases where ProGuard removed too much in the rule file. Also, I was curious why our APK had gotten so large to begin with. I did some digging and found that this is caused by the SQLCipher dependency. The APK shrinks down to 2.7 MB without it! We should consider whether having support for importing from Authenticator Plus is worth the extra 5.5 MB in size.
110 lines
4 KiB
Groovy
110 lines
4 KiB
Groovy
apply plugin: 'com.android.application'
|
|
|
|
def getCmdOutput = { cmd ->
|
|
def stdout = new ByteArrayOutputStream()
|
|
exec {
|
|
commandLine cmd
|
|
standardOutput = stdout
|
|
}
|
|
return stdout.toString().trim()
|
|
}
|
|
|
|
def getGitHash = { -> return getCmdOutput(["git", "rev-parse", "--short", "HEAD"]) }
|
|
def getGitBranch = { -> return getCmdOutput(["git", "rev-parse", "--abbrev-ref", "HEAD"]) }
|
|
|
|
android {
|
|
compileSdkVersion 29
|
|
|
|
defaultConfig {
|
|
applicationId "com.beemdevelopment.aegis"
|
|
minSdkVersion 21
|
|
targetSdkVersion 29
|
|
versionCode 29
|
|
versionName "1.1.4"
|
|
multiDexEnabled true
|
|
buildConfigField "String", "GIT_HASH", "\"${getGitHash()}\""
|
|
buildConfigField "String", "GIT_BRANCH", "\"${getGitBranch()}\""
|
|
}
|
|
|
|
lintOptions {
|
|
abortOnError true
|
|
disable "MissingTranslation"
|
|
}
|
|
|
|
testOptions {
|
|
unitTests.all {
|
|
useJUnitPlatform()
|
|
|
|
ignoreFailures false
|
|
testLogging {
|
|
events "passed", "skipped", "failed", "standardOut", "standardError"
|
|
}
|
|
}
|
|
}
|
|
|
|
buildTypes {
|
|
debug {
|
|
applicationIdSuffix ".debug"
|
|
manifestPlaceholders = [title: "AegisDev", iconName: "ic_launcher_debug"]
|
|
resValue "bool", "pref_secure_screen_default", "false"
|
|
postprocessing {
|
|
removeUnusedCode true
|
|
removeUnusedResources true
|
|
obfuscate false
|
|
optimizeCode false
|
|
proguardFiles getDefaultProguardFile('proguard-defaults.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
release {
|
|
manifestPlaceholders = [title: "Aegis", iconName: "ic_launcher"]
|
|
resValue "bool", "pref_secure_screen_default", "true"
|
|
postprocessing {
|
|
removeUnusedCode true
|
|
removeUnusedResources true
|
|
obfuscate false
|
|
optimizeCode true
|
|
proguardFiles getDefaultProguardFile('proguard-defaults.txt'), 'proguard-rules.pro'
|
|
}
|
|
}
|
|
}
|
|
|
|
compileOptions {
|
|
targetCompatibility 1.8
|
|
sourceCompatibility 1.8
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
def libsuVersion = '2.5.1'
|
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
|
implementation 'androidx.appcompat:appcompat:1.1.0'
|
|
implementation "androidx.biometric:biometric:1.0.1"
|
|
implementation 'androidx.cardview:cardview:1.0.0'
|
|
implementation 'androidx.preference:preference:1.1.0'
|
|
implementation 'com.google.android.material:material:1.0.0'
|
|
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
|
implementation 'com.google.guava:guava:28.2-android'
|
|
implementation 'com.getbase:floatingactionbutton:1.10.1'
|
|
implementation 'com.github.apl-devs:appintro:5.1.0'
|
|
implementation 'com.github.avito-tech:krop:0.44'
|
|
implementation 'com.madgag.spongycastle:core:1.58.0.0'
|
|
implementation 'de.hdodenhof:circleimageview:3.0.1'
|
|
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
|
|
implementation "com.github.topjohnwu.libsu:core:${libsuVersion}"
|
|
implementation "com.github.topjohnwu.libsu:io:${libsuVersion}"
|
|
implementation 'com.github.bumptech.glide:annotations:4.10.0'
|
|
implementation 'com.github.bumptech.glide:glide:4.10.0'
|
|
implementation "com.mikepenz:iconics-core:3.2.5"
|
|
implementation 'com.mikepenz:material-design-iconic-typeface:2.2.0.5@aar'
|
|
implementation 'de.psdev.licensesdialog:licensesdialog:2.1.0'
|
|
implementation("com.github.bumptech.glide:recyclerview-integration:4.9.0") {
|
|
transitive = false
|
|
}
|
|
implementation 'net.zetetic:android-database-sqlcipher:4.3.0'
|
|
annotationProcessor 'androidx.annotation:annotation:1.1.0'
|
|
annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
|
|
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2'
|
|
testImplementation 'com.google.guava:guava:28.2-jre"'
|
|
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2'
|
|
}
|