summaryrefslogtreecommitdiffstats
path: root/src/android/app/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'src/android/app/build.gradle')
-rw-r--r--src/android/app/build.gradle163
1 files changed, 163 insertions, 0 deletions
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
+}