mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-01 03:40:51 +01:00
d3a23fe5c2
This decreases our APK size by a few megabytes. Most of the reduction is from Java libraries that we only use small parts of. Code shrinking gets rid of all the unused code from these libraries from the APK. Because I highly value the ability to get stack traces that make sense, I have specifically disabled obfuscation (automatic renaming of symbols to short incomprehensible names). I've only enabled code shrinking for release builds, purely because I feel like the extra build time (30 seconds on my machine) would be annoying when you want to make debug builds rapidly.
143 lines
4.4 KiB
Groovy
143 lines
4.4 KiB
Groovy
apply plugin: 'com.android.application'
|
|
|
|
android {
|
|
compileSdkVersion 30
|
|
ndkVersion "23.0.7599858"
|
|
|
|
compileOptions {
|
|
// Flag to enable support for the new language APIs
|
|
coreLibraryDesugaringEnabled true
|
|
|
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
}
|
|
|
|
lintOptions {
|
|
// This is important as it will run lint but not abort on error
|
|
// Lint has some overly obnoxious "errors" that should really be warnings
|
|
abortOnError false
|
|
|
|
//Uncomment disable lines for test builds...
|
|
//disable 'MissingTranslation'
|
|
//disable 'ExtraTranslation'
|
|
}
|
|
|
|
defaultConfig {
|
|
// TODO If this is ever modified, change application_id in strings.xml
|
|
applicationId "org.dolphinemu.dolphinemu"
|
|
minSdkVersion 21
|
|
targetSdkVersion 30
|
|
|
|
versionCode(getBuildVersionCode())
|
|
|
|
versionName "${getVersion()}"
|
|
}
|
|
|
|
signingConfigs {
|
|
release {
|
|
if (project.hasProperty('keystore')) {
|
|
storeFile file(project.property('keystore'))
|
|
storePassword project.property('storepass')
|
|
keyAlias project.property('keyalias')
|
|
keyPassword project.property('keypass')
|
|
}
|
|
}
|
|
}
|
|
|
|
// Define build types, which are orthogonal to product flavors.
|
|
buildTypes {
|
|
// Signed by release key, allowing for upload to Play Store.
|
|
release {
|
|
signingConfig signingConfigs.release
|
|
|
|
minifyEnabled true
|
|
shrinkResources true
|
|
proguardFiles getDefaultProguardFile(
|
|
'proguard-android-optimize.txt'),
|
|
'proguard-rules.pro'
|
|
}
|
|
|
|
// Signed by debug key disallowing distribution on Play Store.
|
|
// Attaches 'debug' suffix to version and package name, allowing installation alongside the release build.
|
|
debug {
|
|
// TODO If this is ever modified, change application_id in debug/strings.xml
|
|
applicationIdSuffix ".debug"
|
|
versionNameSuffix '-debug'
|
|
jniDebuggable true
|
|
}
|
|
}
|
|
|
|
externalNativeBuild {
|
|
cmake {
|
|
path "../../../CMakeLists.txt"
|
|
version "3.18.1"
|
|
}
|
|
}
|
|
|
|
defaultConfig {
|
|
externalNativeBuild {
|
|
cmake {
|
|
arguments "-DANDROID_STL=c++_static", "-DCMAKE_BUILD_TYPE=RelWithDebInfo"
|
|
// , "-DENABLE_GENERIC=ON"
|
|
abiFilters "arm64-v8a", "x86_64" //, "armeabi-v7a", "x86"
|
|
|
|
// Remove the line below if you want to build the C++ unit tests
|
|
targets "main"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
|
|
|
|
implementation 'androidx.appcompat:appcompat:1.3.1'
|
|
implementation 'androidx.exifinterface:exifinterface:1.3.2'
|
|
implementation 'androidx.cardview:cardview:1.0.0'
|
|
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
|
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.3.1'
|
|
implementation 'androidx.fragment:fragment:1.3.6'
|
|
implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0-alpha03"
|
|
implementation 'com.google.android.material:material:1.4.0'
|
|
|
|
// Android TV UI libraries.
|
|
implementation 'androidx.leanback:leanback:1.0.0'
|
|
implementation 'androidx.tvprovider:tvprovider:1.0.0'
|
|
|
|
// For REST calls
|
|
implementation 'com.android.volley:volley:1.2.0'
|
|
|
|
// For loading huge screenshots from the disk.
|
|
implementation 'com.squareup.picasso:picasso:2.71828'
|
|
|
|
implementation 'com.nononsenseapps:filepicker:4.2.1'
|
|
}
|
|
|
|
def getVersion() {
|
|
def versionNumber = '0.0'
|
|
|
|
try {
|
|
versionNumber = 'git describe --always --long'.execute([], project.rootDir).text
|
|
.trim()
|
|
.replaceAll(/(-0)?-[^-]+$/, "")
|
|
} catch (Exception e) {
|
|
logger.error(e + ': Cannot find git, defaulting to dummy version number')
|
|
}
|
|
|
|
return versionNumber
|
|
}
|
|
|
|
|
|
def getBuildVersionCode() {
|
|
try {
|
|
def versionNumber = 'git rev-list --first-parent --count HEAD'.execute([], project.rootDir).text
|
|
.trim()
|
|
return Integer.valueOf(versionNumber)
|
|
} catch (Exception e) {
|
|
logger.error(e + ': Cannot find git, defaulting to dummy version number')
|
|
}
|
|
|
|
return 1
|
|
}
|