diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml
deleted file mode 100644
index f113bf7..0000000
--- a/.github/workflows/android.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: Android CI
-
-on:
- push:
- branches: [ main ]
- pull_request:
- workflow_dispatch:
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v3
-
- - name: Set up JDK 21
- uses: actions/setup-java@v3
- with:
- java-version: 21
- distribution: 'temurin'
- cache: 'gradle'
-
- - name: Write key
- if: github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
- run: |
- if [ ! -z "${{ secrets.SIGNING_KEY }}" ]; then
- echo releaseStorePassword='${{ secrets.KEY_STORE_PASSWORD }}' >> gradle.properties
- echo releaseKeyAlias='${{ secrets.ALIAS }}' >> gradle.properties
- echo releaseKeyPassword='${{ secrets.KEY_PASSWORD }}' >> gradle.properties
- echo releaseStoreFile='key.jks' >> gradle.properties
- echo ${{ secrets.SIGNING_KEY }} | base64 --decode > key.jks
- fi
-
- - name: Build with Gradle
- run: ./gradlew assembleRelease assembleDebug
-
- - name: Upload artifact
- uses: actions/upload-artifact@v3
- with:
- name: Signed app bundle
- path: app/build/outputs/apk
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index d343d91..2afd0b8 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -16,8 +16,8 @@ android {
applicationId = "com.mbcp.helper"
minSdk = 28
targetSdk = 36
- versionCode = 2030
- versionName = "1.4-mbcp"
+ versionCode = 2031
+ versionName = "1.5-mbcp"
}
signingConfigs {
diff --git a/app/src/main/java/toolkit/coderstory/CorePatchForQ.java b/app/src/main/java/toolkit/coderstory/CorePatchForQ.java
index 7532c1a..72b05fc 100644
--- a/app/src/main/java/toolkit/coderstory/CorePatchForQ.java
+++ b/app/src/main/java/toolkit/coderstory/CorePatchForQ.java
@@ -149,5 +149,14 @@ public class CorePatchForQ extends XposedHelper implements IXposedHookLoadPackag
"isVerificationEnabled",
new ReturnConstant(prefs, "disableVerificationAgent", false)
);
+
+ // Allow apk splits with different signatures to be installed together
+ hookAllMethods(signingDetails, "signaturesMatchExactly", new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.getBoolean("exactSigCheck", false))
+ param.setResult(true);
+ }
+ });
}
}
diff --git a/app/src/main/java/toolkit/coderstory/CorePatchForR.java b/app/src/main/java/toolkit/coderstory/CorePatchForR.java
index 6726c10..4dd238f 100644
--- a/app/src/main/java/toolkit/coderstory/CorePatchForR.java
+++ b/app/src/main/java/toolkit/coderstory/CorePatchForR.java
@@ -65,6 +65,7 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
XposedBridge.log("D/" + MainHook.TAG + " downgrade=" + prefs.getBoolean("downgrade", true));
XposedBridge.log("D/" + MainHook.TAG + " authcreak=" + prefs.getBoolean("authcreak", false));
XposedBridge.log("D/" + MainHook.TAG + " digestCreak=" + prefs.getBoolean("digestCreak", true));
+ XposedBridge.log("D/" + MainHook.TAG + " exactSigCheck=" + prefs.getBoolean("exactSigCheck", false));
XposedBridge.log("D/" + MainHook.TAG + " UsePreSig=" + prefs.getBoolean("UsePreSig", false));
XposedBridge.log("D/" + MainHook.TAG + " bypassBlock=" + prefs.getBoolean("bypassBlock", true));
XposedBridge.log("D/" + MainHook.TAG + " sharedUser=" + prefs.getBoolean("sharedUser", false));
@@ -406,6 +407,15 @@ public class CorePatchForR extends XposedHelper implements IXposedHookLoadPackag
hookAllMethods(getIsVerificationEnabledClass(loadPackageParam.classLoader), "isVerificationEnabled", new ReturnConstant(prefs, "disableVerificationAgent", false));
+ // Allow apk splits with different signatures to be installed together
+ hookAllMethods(signingDetails, "signaturesMatchExactly", new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) {
+ if (prefs.getBoolean("exactSigCheck", false))
+ param.setResult(true);
+ }
+ });
+
if (BuildConfig.DEBUG) initializeDebugHook(loadPackageParam);
}
diff --git a/app/src/main/res/values-vi/string.xml b/app/src/main/res/values-vi/string.xml
index a25935a..a56ee10 100644
--- a/app/src/main/res/values-vi/string.xml
+++ b/app/src/main/res/values-vi/string.xml
@@ -21,5 +21,7 @@
Bỏ qua tác nhân xác minh APK
ví dụ như trình bảo vệ app của Google Play.
Thông báo cho HyperOS
- Trình hỗ trợ này không thể sử dụng nếu bạn có HyperOS 1+. Vui lòng tìm các cách riêng, gợi ý : Vá service.jar cho HyperOS để bỏ xác minh chữ ký APK. Chúng tôi không thể hỗ trợ thêm.
+ Trình hỗ trợ này không thể sử dụng nếu bạn có HyperOS 1+. Vui lòng nhấn vào đây để xem cách cài app MBCP cho HyperOS.
+ Disable exact signature match
+ Disables exact signature match between apks, allowing installs with each apk split having a different signature.
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d976514..9c646b8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -23,4 +23,6 @@
e.g. Google Play Protection
HyperOS attention
This helper cant be used for HyperOS 1+. If you have HyperOS 1+, downgrade to MIUI, or ask somewhere for manually patching service.jar !!!
+ Disable exact signature match
+ Disables exact signature match between apks, allowing installs with each apk split having a different signature. Only enable when really needed!
diff --git a/app/src/main/res/xml/prefs.xml b/app/src/main/res/xml/prefs.xml
index fbd1d0c..b6b0c0a 100644
--- a/app/src/main/res/xml/prefs.xml
+++ b/app/src/main/res/xml/prefs.xml
@@ -8,14 +8,14 @@
android:summary="@string/dlmbcp_summary">
+ android:data="https://t.me/mbbpatch_eng"/>
+ android:data="https://git.disroot.org/mbcp/mbcp-helper"/>
@@ -31,7 +31,7 @@
android:summary="@string/hyperos_summary">
+ android:data="https://git.disroot.org/mbcp/info/wiki/mbcpinstall_hyperos" />
+