diff --git a/xpatch/src/main/assets/zipalign_arm b/xpatch/src/main/assets/zipalign_arm new file mode 100644 index 0000000..1cde142 Binary files /dev/null and b/xpatch/src/main/assets/zipalign_arm differ diff --git a/xpatch/src/main/assets/zipalign_arm64 b/xpatch/src/main/assets/zipalign_arm64 new file mode 100644 index 0000000..cbc9fb2 Binary files /dev/null and b/xpatch/src/main/assets/zipalign_arm64 differ diff --git a/xpatch/src/main/java/com/storm/wind/xpatch/task/BuildAndSignApkTask.java b/xpatch/src/main/java/com/storm/wind/xpatch/task/BuildAndSignApkTask.java index 6d43b2a..1863135 100644 --- a/xpatch/src/main/java/com/storm/wind/xpatch/task/BuildAndSignApkTask.java +++ b/xpatch/src/main/java/com/storm/wind/xpatch/task/BuildAndSignApkTask.java @@ -172,12 +172,19 @@ private void zipalignApk(String inputApkPath, String outputApkPath) { long time = System.currentTimeMillis(); String os = System.getProperty("os.name"); - String zipalignAssetPath = "assets/zipalign"; - if (os.toLowerCase().startsWith("win")) { - System.out.println(" The running os is " + os); - zipalignAssetPath = "assets/win/zipalign.exe"; - } - + String arch = System.getProperty("os.arch"); + + String zipalignAssetPath = arch.contains("aarch64") ? "assets/zipalign_arm64" : "assets/zipalign_arm"; + + // String zipalignAssetPath = "assets/zipalign"; + + if (os.toLowerCase().startsWith("win")) { + System.out.println(" The running os is " + os); + zipalignAssetPath = "assets/win/zipalign.exe"; + } else { + System.out.println(" The running os is " + os + " arch " + arch); + } + String zipalignPath = (new File(inputApkPath)).getParent() + File.separator + "zipalign"; FileUtils.copyFileFromJar(zipalignAssetPath, zipalignPath); ShellCmdUtil.chmodNoException(zipalignPath, ShellCmdUtil.FileMode.MODE_755); diff --git a/xpatch/src/main/java/com/storm/wind/xpatch/util/ManifestParser.java b/xpatch/src/main/java/com/storm/wind/xpatch/util/ManifestParser.java index 7b5b9cc..8e03a5d 100644 --- a/xpatch/src/main/java/com/storm/wind/xpatch/util/ManifestParser.java +++ b/xpatch/src/main/java/com/storm/wind/xpatch/util/ManifestParser.java @@ -53,6 +53,12 @@ public static Pair parseManifestFile(String filePath) { if ("application".equals(name)) { if ("name".equals(attrName) || attrNameRes == 0x01010003) { applicationName = parser.getAttributeValue(i); + // found is android:name=".MyApp" this will crash if not replaced + if (applicationName.startsWith(".")) { + System.out.println(" application name is: " + applicationName); + applicationName = packageName + applicationName; + System.out.println(" replacing application name: " + applicationName); + } } }