From bb2cbbfba3ba255c11953f2bcca912046519cfb1 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 17 Dec 2022 23:25:46 -0800 Subject: android: Add Citra frontend. --- src/android/app/build.gradle | 163 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/android/app/build.gradle (limited to 'src/android/app/build.gradle') diff --git a/src/android/app/build.gradle b/src/android/app/build.gradle new file mode 100644 index 000000000..5a108743b --- /dev/null +++ b/src/android/app/build.gradle @@ -0,0 +1,163 @@ +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 +} -- cgit v1.2.3