Java 如何以编程方式从mobile解压.apk文件?以及如何将文件插入其中?

Java 如何以编程方式从mobile解压.apk文件?以及如何将文件插入其中?,java,android,Java,Android,我在assets文件夹中有一个.apk文件。我想解压该.apk文件并在其中插入一个文件,然后从mobile生成一个.apk文件。我怎样才能做到呢?给出任何建议。APK文件是ZIP文件,因此下面的课程应该能很好地为您服务。请注意,从ZIP文件中删除文件并不是那么简单-因此,如果没有要修改的文件和单独的文件,则使用APK文件会更容易。 将修改后的文件添加到APK要简单得多 此外,您还必须考虑到安卓文件不能在安卓上安装,因为它的签名无效。因此,您必须重新签名。不幸的是,JAR/APK文件的签名工具只包

我在assets文件夹中有一个.apk文件。我想解压该.apk文件并在其中插入一个文件,然后从mobile生成一个.apk文件。我怎样才能做到呢?给出任何建议。

APK文件是ZIP文件,因此下面的课程应该能很好地为您服务。请注意,从ZIP文件中删除文件并不是那么简单-因此,如果没有要修改的文件和单独的文件,则使用APK文件会更容易。 将修改后的文件添加到APK要简单得多


此外,您还必须考虑到安卓文件不能在安卓上安装,因为它的签名无效。因此,您必须重新签名。不幸的是,JAR/APK文件的签名工具只包含在Java SDK中,它是一个用于x86的本机程序,无法在Android/ARM上执行。

APK文件是ZIP文件,因此下面的类应该可以很好地为您服务。请注意,从ZIP文件中删除文件并不是那么简单-因此,如果没有要修改的文件和单独的文件,则使用APK文件会更容易。 将修改后的文件添加到APK要简单得多


此外,您还必须考虑到安卓文件不能在安卓上安装,因为它的签名无效。因此,您必须重新签名。不幸的是,JAR/APK文件签名工具仅包含在Java SDK中,它是一个用于x86的本机程序,无法在Android/ARM上执行。

您可以这样做。首先,你必须:

  • 将文件扩展名从.apk更改为.zip
  • 解压它,现在它成为一个文件夹
  • 改变,删除你想要的
  • 压缩文件夹
  • 将扩展名从.zip更改为.apk
  • 使用apksigner对APK进行签名
  • 安装它

  • 你可以这样做。首先,你必须:

  • 将文件扩展名从.apk更改为.zip
  • 解压它,现在它成为一个文件夹
  • 改变,删除你想要的
  • 压缩文件夹
  • 将扩展名从.zip更改为.apk
  • 使用apksigner对APK进行签名
  • 安装它


  • 无法解压缩apk文件。如果可能的话,你必须对它进行反编译。你到底想做什么?是否要从资产文件夹安装apk?@Oli:可以!解压apk文件,因为压缩算法是基于zip的。@Reporter哦,好的,谢谢;)-获取其数据库的资产usefull@user2380107你能给我们一些背景信息吗?你不能解压apk文件。如果可能的话,你必须对它进行反编译。你到底想做什么?是否要从资产文件夹安装apk?@Oli:可以!解压apk文件,因为压缩算法是基于zip的。@Reporter哦,好的,谢谢;)-获取其数据库的资产usefull@user2380107你能给我们一些背景信息吗?我还没有测试过这个,但是你可能需要将扩展名重命名为.zip。但是ZipFile可以工作。不,程序和代码不关心扩展。只有在Windows上双击文件时,扩展名才起作用。啊,好的。我知道代码不在乎,但我不确定如果文件不是可识别的扩展名(zip、tar等),zip API是否会抛出一些东西@Robert:那么是否有可能从mobile创建一个修改后的.apk(可以安装在mpbile上)并将其存储在外部sd卡中?@Robert:如何重新签署修改后的.apk文件?我还没有测试过这一点,但是您可能需要将扩展名重命名为.zip。但是ZipFile可以工作。不,程序和代码不关心扩展。只有在Windows上双击文件时,扩展名才起作用。啊,好的。我知道代码不在乎,但我不确定如果文件不是可识别的扩展名(zip、tar等),zip API是否会抛出一些东西@Robert:那么是否可以从mobile创建一个修改后的.apk(可以安装在mpbile上)并将其存储在外部sd卡中?@Robert:如何重新签署修改后的.apk文件?