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" /> +