好吧,我知道标题写得不好,但我的情况就是这么复杂!我在这里搜索了这个案例,但其他类似的问题确实与我的不同。
这是我的问题:
- 我编写了一个 Android 程序,它显示存储在“assets”文件夹中的内容(原始格式的文本、图像等)。现在我想将此应用程序与 Windows 应用程序(也是由我编写)一起交付给最终用户,这使他们可以将内容添加到 apk 文件的“assets”文件夹中,并使用他们想要的名称输出修改后的 apk(以显示在他们的电话)。
现在执行此操作的最佳解决方案是什么?我应该使用哪些工具和命令?我的意思是我的软件中应该包含哪些工具(aapt、jarsigner...)以及我的软件必须启动哪些命令才能执行此操作?
有关我的案例的更多信息:
- 我的用户不高级,对Android编程和修改apk一无所知,我希望他们只使用我的客户端Windows应用程序。
- 我不想在客户端计算机上使用 JDK、JRE...。
- 修改过程包括:替换AndroidManifest.xml and 可绘制\图标.png并将一些文件添加到资产文件夹中。
- 我将分发我的密钥库文件和未签名的原始 apk 文件以及要在流程结束时签名的软件。
P.S:好的,几个小时后,我几乎通过 9 个步骤找到了解决方案,并获得了最终的自定义签名 zip 对齐 apk 文件并安装在设备上,没有错误!但现在的问题是:我的用户生成的所有 apk 文件都具有相同的包名称 (com.MyName.MyApp),如果有人在手机上安装 2 个或更多这些文件,就会出现问题。我应该尝试“aapt --rename-manifest-package”来解决这个问题吗?以及如何使用它?
我终于得到了这个可行的解决方案,我将其放在这里供任何感兴趣的人使用。
1-将“original.apk”(source.apk)提取到临时文件夹(即TempFolder)
2-将用户生成的文件放入TempFolder下的“assets”和“res\drawable”文件夹中
3-生成AndroidManifest.xml并放入TempFolder
4-运行此命令:
aapt package -f -M "PathToManifest" -S "PathToResFolder" -I android.jar -F "NearlyFinal.apk" -A "PathToAssetsFolder"
5-将“classes.dex”复制到NearlyFinal.apk所在的文件夹。
6-运行此命令:
aapt add -f NearlyFinal.apk classes.dex jad.properties
7-签署apk文件:
jarsigner -storepass [keystorePass] -keystore KeyStoreFile.key NearlyFinal.apk [KeyStoreName]
8-zipalign apk 文件:
zipalign 4 NearlyFinal.apk“Final.apk”
9-根据用户的偏好重命名并移动Final.apk。
FINISH
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)