我有这样的问题:我有一些 test.apk 文件。有一个包含所有图形资源的 res 文件夹。我需要编写 .bat 文件供艺术家下一步执行: 1.从外部文件夹中获取资源并用新的并重新打包的apk文件替换当前资源。
apk中有这样的文件:
assets META-INF res AndroidManifest.xml classes.dex resources.arsc
所以,据我了解我需要的任务:
- 将 1.apk 复制到 1.zip
- 将 1.zip 解压到 1 个文件夹
- 删除“res”文件夹并放入我自己的文件夹
- 创建新的 1.apk 文件并使用我的证书对其进行签名。完成。
我有 2 个问题:
- 如何使用批处理命令压缩/解压缩文件?
- 如何使用新证书签署我的新文件夹?
谢谢!
最佳答案
我解决了这个问题!这是解决方案,也许有人会发现它有用。 bat文件的命令。
您需要有:7zip压缩包程序、Android SDK、JDK 1.7。
用于实现此目的的资源链接: http://developer.android.com/tools/publishing/app-signing.html http://developer.android.com/tools/building/index.html
SET app_input_file_name=%1
SET tmp_app_name="tmp_app_name.zip"
SET zip_tool_path="C:\Program Files\7-Zip\7z.exe"
rem 1. 创建 AndroidSampleApp.apk 的副本并将其重命名为 AndroidSapmleApp.zip
copy %app_input_file_name% %tmp_app_name%
rem 2. 将 AndroidSapmleApp.zip 文件中的文件夹 res/提取到根文件夹。
%zip_tool_path% x %tmp_app_name% res/
rem 3.删除META-INF和res文件夹。
%zip_tool_path% d %tmp_app_name% res
%zip_tool_path% d %tmp_app_name% META-INF
对下一个资源进行更改后:
SET app_output_file_name=%1
SET tmp_app_name="tmp_app_name.zip"
SET dev_certificate="mycert.keystore"
SET dev_certificate_alias="mycert"
SET zip_tool_path="C:\Program Files\7-Zip\7z.exe"
SET jarsigner_tool_path="C:\Program Files\Java\jdk1.7.0_17\bin\jarsigner.exe"
SET zipalign_tool_path="D:\SDKs\android-sdk_r18-windows\android-sdk-windows\tools\zipalign.exe"
rem 4. 在提取的 res 文件夹中进行更改,您不能删除或添加任何新文件!仅更改图像。 rem 5. 使用 copmress 方法 Store 将修改后的 res/文件夹添加到 AndroidSapmleApp.zip。
%zip_tool_path% a %tmp_app_name% res -mx0
rem 6.删除res/文件夹
rmdir res /s /q
rem 7. 将 AndroidSapmleApp.zip 重命名为 AndroidSapmleApp.apk
copy %tmp_app_name% %app_output_file_name%
rem 8. 使用您的证书 mycert.keystore 签署应用程序
%jarsigner_tool_path% -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore %dev_certificate% %app_output_file_name% %dev_certificate_alias%
rem 9.验证是否一切正常
%jarsigner_tool_path% -verify %app_output_file_name%
rem 10.*.apk 上的 zipalign:
%zipalign_tool_path% -v -f 4 %app_output_file_name%
rem 11.删除旧应用:adb uninstall com.partypoker.poker
rem adb uninstall com.packagename
rem 12. 将应用程序安装到模拟器/设备。
rem adb install AndroidSapmleApp.apk
关于android - 如何将文件放入准备使用的apk的res文件夹中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15344682/