Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, windows-latest, macOS-latest ]
os: [ ubuntu-latest, windows-latest, macos-15-intel ]

steps:
- name: Check out
Expand Down
7 changes: 5 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@ android {
namespace = "io.i10nstaller"
defaultConfig {
applicationId = "io.i10nstaller"
versionCode = 9
versionName = "1.8"
versionCode = 10
versionName = "1.9"
ndk {
abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64"))
}
optimization {
keepRules {
ignoreFromAllExternalDependencies(true)
Expand Down
3 changes: 3 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
-keepclassmembers class io.i10nstaller.viewmodel.InstallViewModel {
<init>(android.app.Application);
}
-keep class io.i10nstaller.model.ModernInstallResultSender {
public static android.content.IntentSender create(kotlin.jvm.functions.Function4);
}
-keepnames class moe.shizuku.api.BinderContainer
-keepclassmembers class rikka.shizuku.Shizuku {
private static rikka.shizuku.ShizukuRemoteProcess newProcess(java.lang.String[], java.lang.String[], java.lang.String);
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,21 @@
android:name="${applicationId}.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION"
tools:node="remove" />

<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

<queries>
<package android:name="moe.shizuku.privileged.api" />
</queries>

<application
android:name=".InstallerApplication"
android:icon="@drawable/ic_app_icon"
android:label="@string/app_name"
android:theme="@style/Theme.AlertDialogActivity"
Expand Down
26 changes: 26 additions & 0 deletions app/src/main/java/io/i10nstaller/InstallerApplication.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.i10nstaller

import android.app.Application
import android.os.Process
import android.util.Log
import kotlin.system.exitProcess

class InstallerApplication : Application() {
override fun onCreate() {
super.onCreate()
val previousHandler = Thread.getDefaultUncaughtExceptionHandler()
Thread.setDefaultUncaughtExceptionHandler { thread, error ->
Log.e(TAG, "Uncaught exception on thread ${thread.name}", error)
if (previousHandler != null) {
previousHandler.uncaughtException(thread, error)
} else {
Process.killProcess(Process.myPid())
exitProcess(10)
}
}
}

private companion object {
const val TAG = "InstallerCrash"
}
}
16 changes: 16 additions & 0 deletions app/src/main/java/io/i10nstaller/model/InstallFlags.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package io.i10nstaller.model

internal const val MATCH_ANY_USER = 0x00400000
internal const val MATCH_KNOWN_PACKAGES = 0x00402000
internal const val INSTALL_FROM_ADB = 0x00000020
internal const val INSTALL_REPLACE_EXISTING = 0x00000002
internal const val INSTALL_ALLOW_TEST = 0x00000004
internal const val INSTALL_GRANT_ALL_REQUESTED_PERMISSIONS = 0x00000100
internal const val INSTALL_REQUEST_DOWNGRADE = 0x00000080
internal const val INSTALL_FULL_APP = 0x00004000
internal const val INSTALL_BYPASS_LOW_TARGET_SDK_BLOCK = 0x01000000
internal const val INSTALL_REQUEST_UPDATE_OWNERSHIP = 0x02000000
internal const val INSTALL_SUCCEEDED = 1
internal const val INSTALL_FAILED_INTERNAL_ERROR = -110
internal const val DELETE_KEEP_DATA = 0x00000001
internal const val EXTRA_LEGACY_STATUS = "android.content.pm.extra.LEGACY_STATUS"
Loading
Loading