plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-parcelize' } /** * 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 android { namespace 'org.yuzu.yuzu_emu' compileSdkVersion 33 ndkVersion "25.2.9519653" viewBinding.enabled = true compileOptions { sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' } 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'bin //disable 'ExtraTranslation' } defaultConfig { // TODO If this is ever modified, change application_id in strings.xml applicationId "org.yuzu.yuzu_emu" minSdkVersion 28 targetSdkVersion 33 versionCode autoVersion versionName getVersion() ndk.abiFilters "arm64-v8a", "x86_64" } 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 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 versionNameSuffix '-debug' debuggable true jniDebuggable true } } flavorDimensions "version" productFlavors { mainline { 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 "-DBUNDLE_SPEEX=ON", "-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work "-DYUZU_USE_BUNDLED_VCPKG=ON", "-DYUZU_USE_BUNDLED_FFMPEG=ON" abiFilters "arm64-v8a", "x86_64" } } } } dependencies { implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.exifinterface:exifinterface:1.3.6' 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.5' implementation "androidx.slidingpanelayout:slidingpanelayout:1.2.0" implementation "androidx.documentfile:documentfile:1.0.1" implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.preference:preference:1.2.0' implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" implementation "io.coil-kt:coil:2.2.2" implementation 'androidx.core:core-splashscreen:1.0.0' implementation 'androidx.window:window:1.0.0' // 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' } 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 }