我有这样的问题:我有一些test.apk文件。有一个包含所有图形资源的res文件夹。我需要写下.bat文件给艺术家做下一步: 1.从外部文件夹获取资源,并用新的和重新打包的apk文件替换当前资源。
apk中有这样的文件:
assets META-INF res AndroidManifest.xml classes.dex resources.arsc
所以,据我所知,我需要完成的任务:
我有两个问题:
谢谢!
答案 0 :(得分:2)
我解决了这个问题!这是解决方案,maby有人会发现它很有用。 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.将文件夹res /从AndroidSapmleApp.zip文件解压缩到根文件夹。
%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. zipalign on * .apk:
%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
答案 1 :(得分:1)
问题是apk中的资源已被aapt编译为内部格式。替换也必须采用这种内部格式。但是,在编译过程中,aapt会生成定义资源ID的R类。这个R类必须可供Java编译器使用,以便编译的dex文件将使用正确的资源ID。
此处的图纸:http://developer.android.com/tools/building/index.html以图形格式显示。
可能有效的修订工作流程:
使用占位符图形的Java开发人员构建应用程序,但不包括apkbuilder步骤。
设置它的最佳方法可能是从现有的Ant构建脚本开始,并创建一个新的Ant构建脚本来支持所需的工作流。
......嗯...祝你好运....