apply plugin: 'com.android.application' android { compileSdkVersion 33 ndkVersion "25.0.8775105" viewBinding.enabled = true compileOptions { // Flag to enable support for the new language APIs coreLibraryDesugaringEnabled true sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } lint { // 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 33 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 { if (project.hasProperty('keystore')) { 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" } } namespace 'org.dolphinemu.dolphinemu' 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.5.0' implementation 'androidx.exifinterface:exifinterface:1.3.3' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.lifecycle:lifecycle-viewmodel:2.5.1' implementation 'androidx.fragment:fragment:1.5.2' implementation 'androidx.slidingpanelayout:slidingpanelayout:1.2.0' implementation 'com.google.android.material:material:1.6.1' implementation 'androidx.core:core-splashscreen:1.0.0' implementation 'androidx.preference:preference:1.2.0' // Force dependency version to solve build conflict with androidx preferences implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" // 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.1' // For loading game covers from disk and GameTDB implementation 'com.github.bumptech.glide:glide:4.13.1' 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 }