From f6ca6712bc8dbfe280f4f0debbc8f7e197650897 Mon Sep 17 00:00:00 2001 From: klzgrad Date: Mon, 15 Jan 2024 02:31:29 +0800 Subject: [PATCH] Add apk build --- apk/.gitignore | 3 + apk/app/build.gradle.kts | 73 +++++ apk/app/src/main/AndroidManifest.xml | 45 ++++ .../sagernet/plugin/NativePluginProvider.kt | 98 +++++++ .../sagernet/plugin/PathProvider.kt | 53 ++++ .../sagernet/plugin/PluginContract.kt | 34 +++ .../sagernet/plugin/naive/BinaryProvider.kt | 42 +++ .../res/drawable/ic_launcher_foreground.xml | 25 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1720 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3685 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1160 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2325 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2371 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5334 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3726 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 8363 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 5173 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 12120 bytes .../res/values/ic_launcher_background.xml | 4 + apk/build.gradle | 18 ++ apk/gradle.properties | 21 ++ apk/gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 43583 bytes apk/gradle/wrapper/gradle-wrapper.properties | 7 + apk/gradlew | 252 ++++++++++++++++++ apk/gradlew.bat | 94 +++++++ apk/release.keystore | Bin 0 -> 4410 bytes apk/settings.gradle | 10 + 29 files changed, 791 insertions(+) create mode 100644 apk/.gitignore create mode 100644 apk/app/build.gradle.kts create mode 100644 apk/app/src/main/AndroidManifest.xml create mode 100644 apk/app/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt create mode 100644 apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt create mode 100644 apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt create mode 100644 apk/app/src/main/java/io/nekohasekai/sagernet/plugin/naive/BinaryProvider.kt create mode 100644 apk/app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 apk/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 apk/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 apk/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 apk/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 apk/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 apk/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 apk/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 apk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 apk/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 apk/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 apk/app/src/main/res/values/ic_launcher_background.xml create mode 100644 apk/build.gradle create mode 100644 apk/gradle.properties create mode 100644 apk/gradle/wrapper/gradle-wrapper.jar create mode 100644 apk/gradle/wrapper/gradle-wrapper.properties create mode 100755 apk/gradlew create mode 100644 apk/gradlew.bat create mode 100644 apk/release.keystore create mode 100644 apk/settings.gradle diff --git a/apk/.gitignore b/apk/.gitignore new file mode 100644 index 0000000000..05acf803b2 --- /dev/null +++ b/apk/.gitignore @@ -0,0 +1,3 @@ +.gradle/ +app/build/ +app/libs/ diff --git a/apk/app/build.gradle.kts b/apk/app/build.gradle.kts new file mode 100644 index 0000000000..b608f5ba1e --- /dev/null +++ b/apk/app/build.gradle.kts @@ -0,0 +1,73 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "io.nekohasekai.sagernet.plugin.naive" + + signingConfigs { + create("release") { + storeFile = rootProject.file("release.keystore") + storePassword = System.getenv("KEYSTORE_PASS") + keyAlias = "release" + keyPassword = System.getenv("KEYSTORE_PASS") + } + } + + buildTypes { + getByName("release") { + isMinifyEnabled = true + signingConfig = signingConfigs.getByName("release") + } + } + + buildToolsVersion = "35.0.0" + + compileSdk = 35 + + defaultConfig { + minSdk = 24 + targetSdk = 35 + + applicationId = "io.nekohasekai.sagernet.plugin.naive" + versionCode = System.getenv("APK_VERSION_NAME").removePrefix("v").split(".")[0].toInt() * 10 + System.getenv("APK_VERSION_NAME").removePrefix("v").split("-")[1].toInt() + versionName = System.getenv("APK_VERSION_NAME").removePrefix("v") + splits.abi { + isEnable = true + isUniversalApk = false + reset() + include(System.getenv("APK_ABI")) + } + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + lint { + showAll = true + checkAllWarnings = true + checkReleaseBuilds = false + warningsAsErrors = true + } + + packaging { + jniLibs.useLegacyPackaging = true + } + + applicationVariants.all { + outputs.all { + this as com.android.build.gradle.internal.api.BaseVariantOutputImpl + outputFileName = + outputFileName.replace(project.name, "naiveproxy-plugin-v$versionName") + .replace("-release", "") + .replace("-oss", "") + } + } + + sourceSets.getByName("main") { + jniLibs.srcDir("libs") + } +} diff --git a/apk/app/src/main/AndroidManifest.xml b/apk/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..75eadb771b --- /dev/null +++ b/apk/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt new file mode 100644 index 0000000000..ef37e2b3e3 --- /dev/null +++ b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/NativePluginProvider.kt @@ -0,0 +1,98 @@ +/****************************************************************************** + * * + * Copyright (C) 2021 by nekohasekai * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ******************************************************************************/ + +package io.nekohasekai.sagernet.plugin + +import android.content.ContentProvider +import android.content.ContentValues +import android.database.Cursor +import android.database.MatrixCursor +import android.net.Uri +import android.os.Bundle +import android.os.ParcelFileDescriptor + +abstract class NativePluginProvider : ContentProvider() { + override fun getType(uri: Uri): String? = "application/x-elf" + + override fun onCreate(): Boolean = true + + /** + * Provide all files needed for native plugin. + * + * @param provider A helper object to use to add files. + */ + protected abstract fun populateFiles(provider: PathProvider) + + override fun query( + uri: Uri, + projection: Array?, + selection: String?, + selectionArgs: Array?, + sortOrder: String?, + ): Cursor? { + check(selection == null && selectionArgs == null && sortOrder == null) + val result = MatrixCursor(projection) + populateFiles(PathProvider(uri, result)) + return result + } + + /** + * Returns executable entry absolute path. + * This is used for fast mode initialization where ss-local launches your native binary at the path given directly. + * In order for this to work, plugin app is encouraged to have the following in its AndroidManifest.xml: + * - android:installLocation="internalOnly" for + * - android:extractNativeLibs="true" for + * + * Default behavior is throwing UnsupportedOperationException. If you don't wish to use this feature, use the + * default behavior. + * + * @return Absolute path for executable entry. + */ + open fun getExecutable(): String = throw UnsupportedOperationException() + + abstract fun openFile(uri: Uri): ParcelFileDescriptor + override fun openFile(uri: Uri, mode: String): ParcelFileDescriptor { + check(mode == "r") + return openFile(uri) + } + + override fun call(method: String, arg: String?, extras: Bundle?): Bundle? = when (method) { + PluginContract.METHOD_GET_EXECUTABLE -> { + Bundle().apply { + putString(PluginContract.EXTRA_ENTRY, getExecutable()) + } + } + else -> super.call(method, arg, extras) + } + + // Methods that should not be used + override fun insert(uri: Uri, values: ContentValues?): Uri? = + throw UnsupportedOperationException() + + override fun update( + uri: Uri, + values: ContentValues?, + selection: String?, + selectionArgs: Array?, + ): Int = + throw UnsupportedOperationException() + + override fun delete(uri: Uri, selection: String?, selectionArgs: Array?): Int = + throw UnsupportedOperationException() +} diff --git a/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt new file mode 100644 index 0000000000..8008e5a510 --- /dev/null +++ b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PathProvider.kt @@ -0,0 +1,53 @@ +/****************************************************************************** + * * + * Copyright (C) 2021 by nekohasekai * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ******************************************************************************/ + +package io.nekohasekai.sagernet.plugin + +import android.database.MatrixCursor +import android.net.Uri +import java.io.File + +/** + * Helper class to provide relative paths of files to copy. + */ +class PathProvider internal constructor(baseUri: Uri, private val cursor: MatrixCursor) { + private val basePath = baseUri.path?.trim('/') ?: "" + + fun addPath(path: String, mode: Int = 0b110100100): PathProvider { + val trimmed = path.trim('/') + if (trimmed.startsWith(basePath)) cursor.newRow() + .add(PluginContract.COLUMN_PATH, trimmed) + .add(PluginContract.COLUMN_MODE, mode) + return this + } + fun addTo(file: File, to: String = "", mode: Int = 0b110100100): PathProvider { + var sub = to + file.name + if (basePath.startsWith(sub)) if (file.isDirectory) { + sub += '/' + file.listFiles()!!.forEach { addTo(it, sub, mode) } + } else addPath(sub, mode) + return this + } + fun addAt(file: File, at: String = "", mode: Int = 0b110100100): PathProvider { + if (basePath.startsWith(at)) { + if (file.isDirectory) file.listFiles()!!.forEach { addTo(it, at, mode) } else addPath(at, mode) + } + return this + } +} diff --git a/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt new file mode 100644 index 0000000000..2788533292 --- /dev/null +++ b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/PluginContract.kt @@ -0,0 +1,34 @@ +/****************************************************************************** + * * + * Copyright (C) 2021 by nekohasekai * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ******************************************************************************/ + +package io.nekohasekai.sagernet.plugin + +object PluginContract { + + const val ACTION_NATIVE_PLUGIN = "io.nekohasekai.sagernet.plugin.ACTION_NATIVE_PLUGIN" + const val EXTRA_ENTRY = "io.nekohasekai.sagernet.plugin.EXTRA_ENTRY" + const val METADATA_KEY_ID = "io.nekohasekai.sagernet.plugin.id" + const val METADATA_KEY_EXECUTABLE_PATH = "io.nekohasekai.sagernet.plguin.executable_path" + const val METHOD_GET_EXECUTABLE = "sagernet:getExecutable" + + const val COLUMN_PATH = "path" + const val COLUMN_MODE = "mode" + const val SCHEME = "plugin" + const val AUTHORITY = "io.nekohasekai.sagernet" +} diff --git a/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/naive/BinaryProvider.kt b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/naive/BinaryProvider.kt new file mode 100644 index 0000000000..f2f2b6a156 --- /dev/null +++ b/apk/app/src/main/java/io/nekohasekai/sagernet/plugin/naive/BinaryProvider.kt @@ -0,0 +1,42 @@ +/****************************************************************************** + * * + * Copyright (C) 2021 by nekohasekai * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + * * + ******************************************************************************/ + +package io.nekohasekai.sagernet.plugin.naive + +import android.net.Uri +import android.os.ParcelFileDescriptor +import io.nekohasekai.sagernet.plugin.NativePluginProvider +import io.nekohasekai.sagernet.plugin.PathProvider +import java.io.File +import java.io.FileNotFoundException + +class BinaryProvider : NativePluginProvider() { + override fun populateFiles(provider: PathProvider) { + provider.addPath("naive-plugin", 0b111101101) + } + + override fun getExecutable() = context!!.applicationInfo.nativeLibraryDir + "/libnaive.so" + override fun openFile(uri: Uri): ParcelFileDescriptor = when (uri.path) { + "/naive-plugin" -> ParcelFileDescriptor.open( + File(getExecutable()), + ParcelFileDescriptor.MODE_READ_ONLY + ) + else -> throw FileNotFoundException() + } +} diff --git a/apk/app/src/main/res/drawable/ic_launcher_foreground.xml b/apk/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000000..40d1699539 --- /dev/null +++ b/apk/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000000..515b77ec11 --- /dev/null +++ b/apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000000..515b77ec11 --- /dev/null +++ b/apk/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/apk/app/src/main/res/mipmap-hdpi/ic_launcher.png b/apk/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..db5767033e2c8b9558239e4f837145db6eb247ef GIT binary patch literal 1720 zcma)-jXx6z1IITn+t3C`Sjcn1E&G-CL@cv|B46sKEqh{To+mO>|?zAwx=82xY6wY@CCPXb{Pw z`~7knh_t~t&t5D!GVAV`fy=4Xt}T1-&QiY3f#gtwc>!_c?BdmJYVc^G|K1q?mL+rB zMfhtWoIKgNZP~cZ9JV?Ev5Wcgq51qMkghEM_K&$N!(-?bOSXQJb@uBE=zTI-C@Y?B zJ-K+@Q$1zvnaf`zIjbUSYUzw{zDx`h$Zd?2WMYjyEBGgq=E6SVfR}XhN@G0CTKb`z zy+gu)B^}|0rxp{3Xb!>oXBkMmN{@Ot8{=%CT$E1>1+NJ&Z&b%-o?;QR4n<6)>p&lH zXB>n@OGk>jJ)*6isyP|yOT0ACg0M9@H8O&SGMv%n5tXpAW*O6xNEJ8OG(w|z@|I0pVgS%pG(+Z2%ik(tZxO%cIQ1VlM>D?S1enp zNDk)uEM^WgFMO0CI{V5oNDn^LQT2?+A17{&TCG}4;4Pb8ZrIqEP69U=_uy>(K<6{* zz97?hL-AyhLb*biD1RF;BEdm-3on3=T6CMT?!qK5rQBStZ zXFCPVv&z%N-bkLJ#=qy1+EQ-O6vA? zWmTz&)~d`OHjmi2Y!d$AH!&?D5F-JFS+b0RZ1&Z2BR%hFzjgX4%0BkSw9DZ?-Y_TI zAfdz0JLLBkmI(IubRV5R6H?6m3Ey;o-^hom{dCw-G&1#aNzUg^S`&4KK6PG^TMkI} zti0Y1bH`r;_16tb^0hNVC5jyW7)o#jyPck-p48z5{Te;r7ytXXSM|Y_LyUwH+;c7A^o^o!`!bO*eC7-%VC$@)D17HTO778S8!K7I zC)OOU{CEg+r+t7Hx5;e-WX1ct;quA3Zz=%0COn7w70Z%{p&(n6&Y$Ps!M*)yk@lhi z0T0~2V;!kC#rP_`BPJKz=9g=lliN@9uhH;Juy^sKV0drIO*CS5jm^Mxm;PO;M%tE5 zj%xAPhkIf0ZefRnfBT0B4T(t_f-OLUdJSb=LW0e*$%R4 z)yr=btdhPg*h*Cd%R@h7vyb~?GU9%T>EVsiQXa8`KH^Ga7jAQ$ukKargypl^1%G@I zn7P@nhizP{1F$^&*2a3KKv@G?3#8S}B1N?AVTlxII zCmkq8H(XPZzPMPl_%vN?ZGae#0m;J@dS|JBGMv7Gqu!7}MAmR7VArk!&(@95^;7|~e^mt{&BO~SMhnN+I1W7M zSB`pMgSiHf|5<%P=$&Y^JMG#9Y07Cy%r%x!(qevMqw5Dw*$QE?1*arcQptMyByun0 zrN{SC{v+Jh=PxW)No}d9&hCu62~Jpyv{2Zdfs*W*O!3IYP8KI`N56~1c3y;u-y>loQ%kxJc0|-*-iK~gi^C4odhM|&u qodB|F)((ZRbrhzXlfbYGEsZUBZq#3~_Uhk?1VCNDI#wYG^#1`_V=bZp literal 0 HcmV?d00001 diff --git a/apk/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/apk/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..11b071c7d471648cba931edff64a0df028d63ccb GIT binary patch literal 3685 zcmV-r4w~_aP)Z!3AMN9y4bKMA9Bg8Ksd{cy)z>sTkmcN4&zUOudR>D z&Ws>*q7XsoAz`VLZAj;p{Tx;#gJXMw@xAa>dA=o)_i;GFm^bvoSLHdB)4{X*6sR-2 z^VKO@gEnIz0^j2?Jg01r(%P8aLikmeAG@eY>Q@+$I@+L1TL8#3=u!{BYc9a3*QHhK zb*Xg{=zF7dj<(4(1f)KTeQ^x=m~HjOP8Uhx<}fe}NcYtTq^1?=(l&#!1~8r=3U#S% z0`G@o0AZVOOdPv;UYg4+E=ZRW<}qfMhbtZiMtlgylqyJRD$u4hA_}#sjRo)-j{z<# z&_vH+8{S?zZYGS5jdQ?U&3a(?buo{UU%A4-^l*bNeTP9#3Nw-sVdWid1SJ^9|>7e0|* zn>GZl)LE*Cq*Qz4m-a%FjHt60#N?rJ-8)Qp;sbY%U~b$syrw0XbxW%~BPNfN+tBX9 z*)Pq3%Qu2kMI6p07(GC&a`^xlPwB z+$GOTIj5FSs8ph>gOhYYn^OCOX2zXz+pb#p8logP-UE{zPS736;ou~l(LQ=^pDxNv zZsS!6?_9`Bc~?%z_JY}PQcTz?uzOJov+Wb^eh{}$I}AA-V9P~q3i(MrZNA)AyM=G| z&IBe0!a~r*2JTAhoNGlB7Mnb6qA5pwbe5#yL?WYO!oRe5+S$!io%l?s6z*adw8?86-FrCDM$AP=HF2484y=T`*N=X& z{h_0g4d6(Xt0mBic2Z0%c}o>8%DJ!*&RniGDV2K9jX@4WTGM$**1P?ppOkZ9AuRTK zK*NnUN_cT_TMuidehnO0-}L8S(`*wXRNy&KWW{zox#ifcj}ld3Ln+}oU(a&3rql6)3HmUpdEbXTs@)Rjwo<$mp%7C!f ztlG9W_`M=n4;=(9dYgIS$tYY1bO9GTO&i;ppi5I$lg83Y(rBs$!m_9b$j_I=zfS7@ zxIpy58CHF5A~2m4N4`Xg|GI>Fq~XpvlpOu7Pgu8YXQ0iPsDIJS$Q>+ryL0C;FN)st zz0apWmttTY>>{Wn;dNr#dW6*MJx&@5N{Dg7GRyO^{~&e8&sp{BqF|M5M$v3lNb`b` z6SU56Tp$os&KuhpzzRrE^%n<7@%W{r{#+5MJ$%X{*VrP+Fk(KbShayvW$h)VZ4$W{ zN`*m>(eoHum!5i`RA=uaksG#)sTk`QBDiz40Ka+4VC$SM=a>R=V2&CFqoxSh3uD zL2CB=O7yqPveI7xx^aa{Zd&0rBE*WIOz+WyubLouuZIL{%K4Er6qXX>q!rS68w6Fa z`<8kFCS*K@BsG>-fwz2SZdY{wBAUA>LF`y*#=j(j9($*`-F*v4%{Rx)1)^&0x1|1b zzS$dTKWN`rQb9_SSDTNu05d_$Jcr+5MbNvxV}tT_sTHhon?j6#E)HKz8jR)A6@$=F z5`@4I#H)#=8xwNb!jGu|m8&U>F+q-~e197$|NCdOl($9@qVj|7q``2BdW?R^lhk{7e!u$AW2X2yd_W~NLJ>(1;HKGL2WAYwg}SS_5>u~qolE{ ziW)B`2*axO$6OkUMI#r`V;Ck47maoiR6PDA(pX(XF3nv-j8j&T>J9s8vZj4ty!!J+ zr0SDhR(je4UgnRfr{;MGg35v*Mv_~uHfcX?+{!|c!xlk^Vkq|w`9^xR>vIdt$4fKb zp$p5Bq&LmS+CmV9Ehb^~lB&#I=E_9@d8hXKlcfHvfnFpFogf62YcwVJLh+y`_Iu#M zL&l4Ft8vqBV*Fa(SUG?#v_udpi>0}#zJVHVZvW^%DM4imKa!4t(zxPAZ?lIWTs)Sq zSWnyIid(sWyfptqI%nm7a?INkEDR+HZ;;ZN?^^3A1K(=w@SnT^xv;q9!8T^S5BSF{ zv1hZ2TaAi0HqwgGSXBe1`!K9;p0R8Pi4?E4oFEJb)0Q7dV?{OHPM9_yBIQuh>(A&( zJrGj%+$TWJLQ?hFw{%<_zkF4;g+~~MKO==NuH2P+0U0<(eV$$-5&G91%cb)aK><;= zw?s-K-ZabVKW-&*VQaJ6Yn^vQ6uaGVW#AeFk{*_G4*ekO%_tg!dBfrul99yO|X>3KFTu4VLCwPa%yM=qnw3gvthP~D0iSVW8yU#9)(M!A)( z3VIIapFhPU@``F?9CD$!-9cl`X^P8$07%pYtfO6t+7VEoxJ0f@S-}TiL>v{qC-Hs z)w#fUkJ5M&bB03 z2y}rL^wg*MI;!fsO9Z;$jC zDSiDBw97wwJGx_c4>d}TRtl{zeIs{*Z3CH&w%0wa33EFyjkDVwM>JD&=|tU`B+wnx z#UB4h^8B4$L(#SjdlPd@0t2|hi*Ky!%~8iSGb%84yJP7`ol*BA>bS~i*T6|=6SM8w zC0-Tm0Wabr)ri#J#RQt*x)Vv9oS!w*o91}kH4|*nGMlb0v}{O^$)16p@EZ71zk6r@ zrirH{@n?;d3Uw9mB?>2Jv1<4{v>~dm4u7Z7Zsc%r8YR$ygPv7|rXLfh({Euh>2*bt zctXaUb66c$F~{o;^qinDLBt#K*3TfelQ@lW*Wf=N42X3fJaNB&OdeZpH{sessbpsX zbwQo5TJ83mk~hhHU^ME?bnh^7xHv_4(5n#OAvoW&**7ZZ6s#$lLoTJ$wk33K7E-9w z2H)}DfR4jaSEh4^lf$LQSRn|1O{@V7d86NhD_|K=hF7dJh>{b7IvfUFUh6mN70?ZT z%&TF#wtLQLO?re1YS#e46(4#WbibQ6BHMS|mJ?z;{plkmN{4?b(Q%Nq`q zox;5eA?@p=KPNp$=Wa zYg&??BLtNP3p*t0_Q5XRqgSZHUii`{a{EDb>_xnLhd0RS-cBcdA9W>QnZ~wfp%3;w z1Y>OUiQ0x^;@CI`&V_U0+^Bh4~L$xkm_s>#=q`&PQ{#v$A zn+?zw`(R%jLy)`$$JF5*Y{S_t zh*64Dupsoo1ttqWeD-f3;1<9TXJ_YOfP2vB5pMnujdT^qBk(;QgL8Ld8*Iz^U|$i( z!ZC4doWnd@Hy0;}h2D6zaWxwv`100000NkvXXu0mjf DMQ;Q$ literal 0 HcmV?d00001 diff --git a/apk/app/src/main/res/mipmap-mdpi/ic_launcher.png b/apk/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7d028abe1323fc56afb886e87957f9560371cc5a GIT binary patch literal 1160 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 literal 0 HcmV?d00001 diff --git a/apk/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/apk/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3ce8151d0bb7f192ff7a51c1ecc21c656f1473b0 GIT binary patch literal 2371 zcmbtWdpOezAOCHW%fupwj@gumTn;LC&E*UcQAQ}2Zj#$33ESLnC&MZv_MYKr5mLx< z*=F(zQ7ZQeJ1(2-$lQ(Lc;EMV|9_w7{XEa-`+c78=Xt*WeLmmsJ-2fXGEikG001(M zXV4e+dceOZDZW=HA4i)4fE3gbZG(yNoBv(<4yNPh&KCis`)EA)*5U4O;8!>6TNLQN zS|97@4QdM4fKm-9SDL4dEEJ^%%lG+|Z08m$2|YFBX{Y9JgiibI40xl&(iVffqB^>+ z(?aoW{a_Nk5a@s8zHT9HD~>1X8)Ft)L@w-_EWhui=0;lPwzBYZeK~h_KqKx|lRH7POfdQhvZD6LAwnjtrfE1& zb#{Q}`hCE?DyoTwUmJaQT}ma_ap`0v?6Fes!IfhJRgG!39%aA$=u1$orI+f^Iv(jVk3;?@2KOs3j&1W~~-}pQhHb+!nql zIBDGU=pfBd{U>i^$0?0M&S*>+CNRo9+)K3iRGuv}BucBNDwFZm;&+b%B>K(%RDJs? z^5r=Z^4N-u-ed$ku4TmF!6b5xnw>I zMP^o3nf=*-q8zLy?Y?Whq!gBBUnbKFdqLLzigeNfw8o-ZCHj(l1cmdQ$mTXnf(z#7 zys#N#T-dJe9P#XDu8TxFf@Dot)fH|T)tBthHEq6P12Lm(Znj`t!fmn8o(WL#pwxIS z{?T17I=_Bf$c%){8hIG!Bg%H}$~~F4fShVl+JR|FNwd8g_y1L;&7PQrbaE3;9Bo(q zkvWCodqq)-@&kBZMQIgbN7p zwwQ(GD>GL?2IpdAm0gT+2FuyG1t}4qZwHM;{l+7Ts`KhkPDSjnW8W@*$yjQrj_;(X zrc5kItnW+(1m@O*$8f_Ja4cpdnwRLUA&0_LhOwD@A9T4qN!a4^^yn zP$bkU1#zMw{PU9ROI3eb=iNRJc)bW2iM|;$7HzkG>nxf> zpj5vVBY5AlC#LRajEbg#;g;g`!F#vEzIG}dNHD}naLf!vrI2Mo*G*Bc&s$o#M zzUN{?Wl7C14mGO-CHvP!a>N{Qfr^>TX6f=(Fq@`PG&AlG`H(;abDKh9f2`Lsh%CV1 zHNjhXacCgvY2T?|*2j+$A?107ecnAFPS=1;AzY6h+&&W?#C-q#At+HtWor&WMBx~I z-I2Iy6;9EMdiSdhv4RT~c+mBZ6l0Q}mG1658@8ims>F(C$s(v@mGlyd9l z8iRn3baDm=UEw)=KX+%$O3K{u<$BwZeAy{)gfG!dk{s`#?CE(QBYtw*3x z8z?bRk_KkyO_>ohDZw|N`Y47@J1AYMI%=@ax<<@T75`pS+-?%m_@(WA(GHK?B}6?z z@ZB#>Pn3;+L97xKpasR$lm?=DBgzsOs?!rG53g+#?@W##St|0{GyS7jzA(`K!L|09 ziW6Fw1I>r#r(p;@GU2BVJ`O>)xboNbWBOk@69xS1EmxgA=r^z#uj_x5aef$&h^M4d z^uIZv>8iTzbN2la1F@AMrlCD$aACY!U1;Rq?(Y9TANLZqN{WppTm~@;BYMb^);&-J z$h91X%pC97$8KJEub(9?)H~>H z=eaW3@Z%_b|Jn0nnaCN(XB%p-HyDok2hP;FTRkHvT5t`03kJ>R(=FV$vUHkHBoMC* zi~hK-fU>}|8HaNA4lsypzR!{r!pWS?9KYZccnqojOuygAd4pAbT@n9L>9h@Ygr}oE zT1ApS^ONRGUg+`Xm-LU*9BKw=Z%NRnIJ zQjriz@*q-T0|mzW%7-W?dDz$EmP!gI@qPuy`|QtGR=7fVJ&6tM&%1?-GQ%lZQ4>AO zBRp9<(c2X9LQrz^_^{OGajjAe&qo6IjAQH^En|P35Oo{w6(Xr;s4W@CBaID{!xCDX z!xDy>!s6dD8{(Il4RQaWe~(gJrO2SjGaC}}72tDxhQ$znMJdC|E@RiyI#3ttRJXy+ zT8&m%y%lEzPnF}eCOKgwCGJy-Lln6b#H2!sA+FL;U&rhE4Rxapw54uaOa%3@yHbRs z6yH-@#WgX9#XU#y6(z@{CfrJ<99LqJ<30oLjG!~~ z@09dRK|BaD8RCio!0qkSyvzoUPuH=-s!%P`5`5*9y;4l>J1 zJU17DggbSs|H%|zrVd3gB8*eo;j)SjT5atO=AZ!eDEXw$lOxt$Ubwt!o%Mz9_ zz^ugUY*1om)hDP|1M&-u$=O)zgs5#~N?6?A>}LI)wDC0s3lK!alw^o~TjFM@&iDn< z5zLAdL;MP>lhxP1S?>~jEEv}{L;M%pr5=3DcUTF+*&>;tGi3`mIU+f797z2J8<(Pl zn5_p|7=6_o+;$P#&kT?8Gs$s#+04K5Vdbp`3tORttNNII$MwblH5a!{M1!XS>CBho z_pq6NH<_G@pjVV|MIWIg|(UCd^ zrj0MZN6d~ZFmselKcCT$`%)^4j&5C^AT)eUj>R55I&r)9Z|W*&m>OS7`5;HN(TQq~ zYF&i4Pu9oxvxb^?XS7pQu*m4L97FbNM-5hURcj&~%mtc~(}?HFT^Hxq5Xo|E2{<{c z8+&z=ZkS%pS&c>6QfBteBSnr|bqd@Ob60H<4&^+}`sflni)Du8=A>~q3}vS1lz!~_ue3b^)f`q! z_{ARAcN0_WMH^^KU zIM>xZqI8sBpTZ(%iGZY5-T@?4*87 z`qE~79t4*Mq$=bF!uDU0W7y4=6gT-*2IZ|3$=NTV!`}m!mG%W{u+3?HXeUb-vf!&bMX|A?a~_bn+*a7 z-^KGdr5iKcZGLJFwHf+eGjIa9wSP?BM!2VLa7m8A0K3(Eb1pS8pP32t3RL&E$- zNs?!h9J}AGfZBoJ@Hg$qLt05kd@w*qPorhs$Q53CL9I}RK>4M&CjKdl@0hU#`>r5$k2hu@OxYj#rBKP_80mys(gzWap9G&$qDernXZ^{`dPx@wHTv+AqXq1#D5n5$^~cwvuwp9&@+J2UIC?!^`r7t<_NgYpCT!Hk(TeiQir7k3s2~Q$HuBKmN&~{GCH=2_9eB6FPi{ z#2vBCwgms;VU!{pUzKBi$3-S}ek;2p0NNI72Vu~W3cPtA9>^e~+1=JS^E)Qr& z9(zpEV_(R_CK3|6pYww{2PYZgE~qc63WNgkmi|aGr~QK|pxBf_XXR|ivK1+yc>*y# zIEk2}rjgYC?+{DZ*NCar3r$Y`2VS7%C)psSMcG6^Uv19Q?>2SP zvZ&9}{dHpL{EE_cxRbUk0dNUNd`LIy@JrD9?iRU-njDgdNL z(9aw9lG2hAQuy0>N{FpVC{F>FC*L4>i?^~>RCF$x6rQ|FN^TUgzZvlhY|5q$eU}CR z8%e?5Q;M>m`5$)t#?GUp=t7DOV4B2r@K@?{xu0xOwf`o$zHS#OPEIF9m(8RkD~}YN zNg`P@mO5R{6+wieM|IJbH~k-J<4OSyR)-F3om_()z(xV|duq?WlA^Q8ObOZVePh#k zR|>$aFFbyk6sPAf!YrL<5Ob&LBy-AVq$KA$CCfxiZT@U6pY{53lKa z3V=h#HCTmk^yy^MTwhP+EGkG;z3ghESl z@=4~4pE_TK@H5rA?YLEx48yD z=$yZ4zhYkKcQXxR5g3%@<}>2eWz$B?sW7l`1)+cwy6D{Znsw>yN&)wM5!APRN-Zk@ zGdge8PNnm7aOUIcrJLDa9FAMFHqj!Jd z{Kikelbrb*ZOYx)euS0Fr@=$^JFA=`>&-7%RAk@Z@*os&SU1`-#jj&~mkO8?&`y8F z5Oa}TRFg2&38@GZudn%q4G<0uk&ZJ3z(k=O$V4Q9+0P;363lDk;hTdF-MT<#4u9t)RzLcq0MBBtC2rf7Oj9=ENgTM@1l0D?1LTFmxuSlCGY zg1Rhbf59)u83~z_7CBsBT?JqTiPe`qb2YQ^8L=NZl*^pHghg4!S5ujZv_D^cC|eQR zL!aG2IYuVjAW`AFOaY0?l4yKP7rnIF3gBkOr2+st(-5~KHvl0v5fgQYH-0+Ij$@Wu zGf(>0((QFpc;ZU66ab`C!clJ#CAaY86}q}6JCrd$GK~}*Jg4+)`A^o|zFS_ z4vkK*1B+c*w(SsR+a}5(ghWWnoUe;*1>_+`7tKu32mrFF^Us{Rm`;fGEEqsuVV{ST z2Yz4p=0$k|`6{Rn9@zDEdP9aE^x7CaU^G_%Q0Yi0XWj;uq^Obo_DY9x0vXiAurf5V zusKJwW!T_C8u4IOV`C3y!`yBPbB?0!{4EFBmH~^D?Apy+_8*pi*teNI`x~~xD%$$C zJnqIBjv;G;2H$H9>dEdX=i{N%?cn>do-mSuugGR>2Eg!n9pKwK~#Jvit z3t|6hWSP{Zu?m6?YDcbO6}cbItrl4PFUJ>i^Rt0+8qB#ZUlOHA zgh+m01oa({N_d5CGgL(g^K()^hRpJRd@?vK*ZvFPX2@HXd?U`tV~?}Ss*x4Dp>Vb{ z^x4y)Qe(WV=Ut)s5i(JV!lM>S5oT=BuDe4{6=&;IqHke2{%Jc zjg207^nyIWU~aDG)#Hu3sPY%sjk!>|O=sL(G0`ye(?hb0N6n99C`i3o$CbAV6-|xXtgnk*8Qg z?!2HJC^ufVg$y~X_4G#K6;P?zzZ~%xEVY6LbsseAI{AV;p8cM3irW-9AX!#S&k@~d z@|ItxSHKx1zbQDhB0L09s^fBBu&*LpK_!@SIK~X zXkd8LuT#tk?HKmMrS7PxEb7@GI-+<=*-mQnybJ8rGD{de%-t+?9{2Xrqf0b|9O@#f=dO~0Qg7wy0a z=f?T%##)s7+Dg96AJBEyVN1x6-S?6b1o>F~>w*XD^JMR~O9swKt=oNP!rrFrD1~U~ z-*9iqGwO$sL3@NbO1X=D0=N04?494>{=YVoJRb!IoD24zwGC6ZP}ma`+~G8*=(r(x z;5Oly5gDj%=G1#&EF#*0&0neM3$ugA%$uv6?rkGq2pVkIMhe1z7{Y&{Yrj(S^w-B} zM8KjW9vj;aroKVM`54ntI=01{o^ZJM$$=Jp?AWfk?c@t#N@yuH#uCIzX!~(skGThR zBa84XB+r=ZH<*XFbNSIe75J$-ZroWJO|(7%Rri$6hCdDS?IozTuKzIQ`tZMI-;N zD}(xMIIJ5@l+{4<1zFiGv>$L?fimma&kwUzdq_8mEDd~WV{ zB3}qPgfPq}LJE-S-#=2cd&4hk`nHfEr%qAlh3yMIxH^@*p)cqY`i5DLzWxw0`1Gs3 z9cEw*7z-bh4BAW58H2CO)=$A*>aa@EIB24&S` zi3u4BfxLf_Cw^p*FyUK4LGu%B4UKCr1gT7qecq$ISD@bc?9 zgF5UbK~H`8eaJHh_iBx)$8=-Z4Q|XF`U~PI`q(n;DOs$XnL>y zh+aG0uj5qIg*rLu__dN&XcKMom>yfmcRlg;B76jUCjmAWP7lwd((ibg89)0Dvf5GN zI#5KxT!eZx?%u&C=;^NBhCzLs$U^{p#<5VZCf!hmm&JAgY&z;dT`f^J+Tivbw+zvC zy|?i-6$~CT4>lKs`1neaKVE1?><#n4R|pgXlZBN6LIFJVDuC}ehcXek2G=Te_=KQN z)Xm#KTWIs1Cf=2(6@tB%Mif5Cvhk#WR%#Nc_z<5EHE;~)PzGgj4Zjw3xCyU;fHa{L ofc>t8q>!qHI4;VG>*}=p7XX2x1SFtXIRF3v07*qoM6N<$f@6C&wg3PC literal 0 HcmV?d00001 diff --git a/apk/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apk/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..5181adaae71c3233b3c1b8418b97f9f11eed5b65 GIT binary patch literal 3726 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 ITF=7&1MadTod5s; literal 0 HcmV?d00001 diff --git a/apk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/apk/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..4feac43c28d607badb99dc6df95085ae26544978 GIT binary patch literal 8363 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 B>?QyJ literal 0 HcmV?d00001 diff --git a/apk/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apk/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..b535a085dc76e2458026feeaca9a103c7d7c6c7e GIT binary patch literal 5173 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 + + #E91E63 + diff --git a/apk/build.gradle b/apk/build.gradle new file mode 100644 index 0000000000..84f82f985b --- /dev/null +++ b/apk/build.gradle @@ -0,0 +1,18 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:8.6.0' + classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:2.0.20' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/apk/gradle.properties b/apk/gradle.properties new file mode 100644 index 0000000000..cac7c68c14 --- /dev/null +++ b/apk/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official diff --git a/apk/gradle/wrapper/gradle-wrapper.jar b/apk/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..a4b76b9530d66f5e68d973ea569d8e19de379189 GIT binary patch literal 43583 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 yu?e%!_ptzGB|8GrCfu%p?(_ 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 GZ~q4|mN%#X literal 0 HcmV?d00001 diff --git a/apk/gradle/wrapper/gradle-wrapper.properties b/apk/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..9355b41557 --- /dev/null +++ b/apk/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/apk/gradlew b/apk/gradlew new file mode 100755 index 0000000000..f5feea6d6b --- /dev/null +++ b/apk/gradlew @@ -0,0 +1,252 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/apk/gradlew.bat b/apk/gradlew.bat new file mode 100644 index 0000000000..9b42019c79 --- /dev/null +++ b/apk/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/apk/release.keystore b/apk/release.keystore new file mode 100644 index 0000000000000000000000000000000000000000..bb93a210245adf3991747d403b281885358b043d GIT binary patch literal 4410 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 Y=Q<--6+#4UfalCPdH%k8_3sn(FPm{D4gdfE literal 0 HcmV?d00001 diff --git a/apk/settings.gradle b/apk/settings.gradle new file mode 100644 index 0000000000..47704fc0f4 --- /dev/null +++ b/apk/settings.gradle @@ -0,0 +1,10 @@ +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "Naive Plugin" + +include ':app'