如何在apk中插入新文件?

时间:2013-08-06 08:02:30

标签: java android apk

我想要安装另一个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);

3 个答案:

答案 0 :(得分:1)

您可以手动或使用

添加/删除apk文件

aapt添加MyApp.apk file1 file2(正如ritwik verma所说)

然后你需要用你的密钥签名,因为你可能不知道原始密钥,然而你会得到2个签名并且可能有问题。 因此,当您添加新文件时,您应该:

    apk中的
  1. 删除META-INF目录
  2. 签署apk jarsigner -keystore "C:\data\debug.keystore" -storepass android -keypass android "C:\data\Some.apk" androiddebugkey
  3. zipalign the apk zipalign -f 4 "C:\datasome.apk" "C:\data\some_signed.apk"
  4. jarsigner是JDK的一部分 zipalign是Android SDK的一部分

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

答案 1 :(得分:0)

apk是一个拉链的罐子。所以你可以使用任何操纵拉链的工具。

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

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

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

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

aapt添加MyApp.apk file1 file2 ...

答案 2 :(得分:0)

有一些工具可以让你在设备上修改APK,但是我建议你找另一种方法来做这件事,因为除了开发和实验之外,这是非常糟糕的做法。

您应该可以在Google Play商店中找到您要查找的工具。