android - 如何将文件放入准备使用的apk的res文件夹中?

标签 android batch-file zip 7zip

我有这样的问题:我有一些 test.apk 文件。有一个包含所有图形资源的 res 文件夹。我需要编写 .bat 文件供艺术家下一步执行: 1.从外部文件夹中获取资源并用新的并重新打包的apk文件替换当前资源。

apk中有这样的文件:

assets META-INF res AndroidManifest.xml classes.dex resources.arsc

所以,据我了解我需要的任务:

  1. 将 1.apk 复制到 1.zip
  2. 将 1.zip 解压到 1 个文件夹
  3. 删除“res”文件夹并放入我自己的文件夹
  4. 创建新的 1.apk 文件并使用我的证书对其进行签名。完成。

我有 2 个问题:

  1. 如何使用批处理命令压缩/解压缩文件?
  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/

相关文章:

java - 在另一个类(class)中使用什么上下文共享偏好?

java - 批处理 - Natives、Jars 和松散类文件

python - python 批量将 json 转换为 csv

c# - 存储有关文件的其他元数据

android - 如何创建在设备和佩戴上不同的通知?

java - 当 Activity 和/或应用程序关闭时保持广播接收器运行?

html - 创建一个vbs/批处理文件来编辑文本文件并创建一个新的文本文件

Java:如何使用 java.nio.file.FileSystem 在 zip 中创建目录

vba - 爬行 Zip 文件

java - 不允许在主线程之外调用 SetRefreshing(false)。解决方法?