apply plugin: 'com.android.application' /** * Use the number of seconds/10 since Jan 1 2016 as the versionCode. * This lets us upload a new build at most every 10 seconds for the * next 680 years. */ def autoVersion = (int) (((new Date().getTime() / 1000) - 1451606400) / 10) def buildType def abiFilter = "arm64-v8a" //, "x86" android { compileSdkVersion 32 ndkVersion "25.1.8937393" compileOptions { 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'bin //disable 'ExtraTranslation' } defaultConfig { // TODO If this is ever modified, change application_id in strings.xml applicationId "org.citra.citra_emu" minSdkVersion 28 targetSdkVersion 29 versionCode autoVersion versionName getVersion() ndk.abiFilters abiFilter } signingConfigs { //release { // storeFile file('') // storePassword System.getenv('ANDROID_KEYPASS') // keyAlias = 'key0' // keyPassword System.getenv('ANDROID_KEYPASS') //} } applicationVariants.all { variant -> buildType = variant.buildType.name // sets the current build type } // Define build types, which are orthogonal to product flavors. buildTypes { // Signed by release key, allowing for upload to Play Store. release { signingConfig signingConfigs.debug } // builds a release build that doesn't need signing // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. relWithDebInfo { initWith release applicationIdSuffix ".debug" versionNameSuffix '-debug' signingConfig signingConfigs.debug minifyEnabled false testCoverageEnabled false debuggable true jniDebuggable true } // 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' debuggable true jniDebuggable true } } flavorDimensions "version" productFlavors { canary { dimension "version" applicationIdSuffix ".canary" } nightly { dimension "version" } } externalNativeBuild { cmake { version "3.22.1" path "../../../CMakeLists.txt" } } defaultConfig { externalNativeBuild { cmake { arguments "-DENABLE_QT=0", // Don't use QT "-DENABLE_SDL2=0", // Don't use SDL "-DENABLE_WEB_SERVICE=0", // Don't use telemetry "-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work "-DYUZU_USE_BUNDLED_VCPKG=ON", "-DYUZU_USE_BUNDLED_FFMPEG=ON" abiFilters abiFilter } } } } dependencies { implementation 'androidx.appcompat:appcompat:1.5.1' implementation 'androidx.exifinterface:exifinterface:1.3.4' 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.3' implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0" implementation 'com.google.android.material:material:1.6.1' // For loading huge screenshots from the disk. implementation 'com.squareup.picasso:picasso:2.71828' // Allows FRP-style asynchronous operations in Android. implementation 'io.reactivex:rxandroid:1.2.1' implementation 'com.nononsenseapps:filepicker:4.2.1' implementation 'org.ini4j:ini4j:0.5.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' // Please don't upgrade the billing library as the newer version is not GPL-compatible implementation 'com.android.billingclient:billing:2.0.3' } def getVersion() { def versionName = '0.0' try { versionName = 'git describe --always --long'.execute([], project.rootDir).text .trim() .replaceAll(/(-0)?-[^-]+$/, "") } catch (Exception) { logger.error('Cannot find git, defaulting to dummy version number') } if (System.getenv("GITHUB_ACTIONS") != null) { def gitTag = System.getenv("GIT_TAG_NAME") versionName = gitTag ?: versionName } return versionName }