1

我想要一个安装另一个apk的apk我没有它的源我想用win rar提取我的apk并替换资产目录中的第二个apk然后压缩它并用apk扩展名重命名并安装在我的设备上这是提取并再次压缩我无法安装它抛出package parsing error

为什么?

我可以在apk中插入新文件吗?

Intent resultIntent = new Intent();
            resultIntent.setAction(Intent.ACTION_VIEW);
            resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            resultIntent.setDataAndType(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/download/" + "myapp.apk")),"application/vnd.android.package-archive");
            startActivity(resultIntent);
4

3 回答 3

1

您可以手动或使用从 apk 中添加/删除文件

aapt add MyApp.apk file1 file2 (如 ritwik verma 所述)

然后您需要使用您的密钥对其进行签名,因为您可能不知道原始密钥,但是您将获得 2 个签名并且可能会遇到问题。因此,当您添加新文件时,您应该:

  1. 在 apk 中删除 META-INF 目录
  2. 签署apkjarsigner -keystore "C:\data\debug.keystore" -storepass android -keypass android "C:\data\Some.apk" androiddebugkey
  3. 压缩apkzipalign -f 4 "C:\datasome.apk" "C:\data\some_signed.apk"

jarsigner 是 JDK 的一部分 zipalign 是 Android SDK 的一部分

在这个例子中,我使用默认的调试密钥,你可以使用你的。

于 2013-08-06T08:35:01.513 回答
0

apk 是一个 jar,它是一个 zip。因此,您可以使用任何操作拉链的工具。

然而,还有一个复杂的问题:Android 平台需要对 apk 中的所有文件(除了 MANIFEST 目录中的文件)进行签名。所以你需要再次调用 jarsigner 来对所有的包进行签名。然后,您还应该再次调用 zipalign。

您必须使用与原始 apk 签名相同的密钥对修改后的 apk 进行签名。这就是签名的全部意义:它表明该包裹未经签名者的批准未被篡改。(实际上,您可以使用不同的密钥进行签名,但是您将无法访问原始应用程序生成的任何数据,反之亦然。)

Android 开发工具包提供的 ant 脚本包含自动运行 jarsigner 和 zipalign。

或者,有一个名为 aapt 的工具与 Android SDK 捆绑在一起。您可以使用它在现有 apk 中添加/删除/列出文件。不带任何参数运行 aapt,它将打印使用说明。要添加文件,请使用:

aapt 添加 MyApp.apk 文件 1 文件 2 ...

于 2013-08-06T08:11:47.300 回答
0

有一些工具可以让您在设备上修改 APK,但是我建议您找到另一种方法来做到这一点,因为除了开发和实验之外,这对于任何其他事情都是非常糟糕的做法。

您应该能够在 Google Play 商店中找到您正在寻找的工具。

于 2013-08-06T08:13:18.183 回答