我想要安装另一个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);
答案 0 :(得分:1)
您可以手动或使用
添加/删除apk文件aapt添加MyApp.apk file1 file2(正如ritwik verma所说)
然后你需要用你的密钥签名,因为你可能不知道原始密钥,然而你会得到2个签名并且可能有问题。 因此,当您添加新文件时,您应该:
jarsigner -keystore "C:\data\debug.keystore" -storepass android -keypass android "C:\data\Some.apk" androiddebugkey
zipalign -f 4 "C:\datasome.apk" "C:\data\some_signed.apk"
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商店中找到您要查找的工具。