在 Windows 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序
本贴首发于:http://xuekaiyuan.com/forum.php?mod=viewthread&tid=13php
代码说明
设置已编译的不包含网页的 APK 安装程序的路径ui
- SET SOURCEAPK=".\Test4.apk"
设置网页的路径spa
计算时间戳.net
- SET DATETIME=%TIME:~0,1%
- IF "%DATETIME%"==" " THEN SET DATETIME=0
- SET DATETIME=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%DATETIME%%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%
建立临时文件夹code
复制已编译的不包含网页的 APK 安装程序到临时文件夹blog
- COPY "%SOURCEAPK%" ".\%DATETIME%\source.apk"
解压缩已编译的不包含网页的 APK 安装程序到临时文件夹ip
- "D:\Program Files\7-Zip\7z.exe" x -o".\%DATETIME%\source" ".\%DATETIME%\source.apk"
删除临时文件中的签名信息get
- RMDIR /S /Q ".\%DATETIME%\source\META-INF"
在临时文件夹中建立网页的路径it
- MKDIR ".\%DATETIME%\source\assets\www"
复制网页到临刊文件夹中网页的路径编译
- XCOPY /E "%SOURCEWWW%\*" ".\%DATETIME%\source\assets\www"
压缩临时文件夹为未签名的 APK 安装程序
- "D:\Program Files\7-Zip\7z.exe" a -tzip ".\%DATETIME%\unsigned.apk" ".\%DATETIME%\source\*"
在临时文件夹中生成一个签名用的密钥文件
- "D:\Program Files\Java\jdk1.7.0_21\bin\keytool.exe" -genkeypair -keystore ".\%DATETIME%\keystore" -storepass "%DATETIME%" -dname "CN=%DATETIME%, OU=daonao.com, O=daonao.com, L=Beijing, L=Beijing, C=CN" -alias "%DATETIME%" -keypass "%DATETIME%"
使用密钥文件对未签名的 APK 安装程序签名生成已签名的 APK 安装程序
- "D:\Program Files\Java\jdk1.7.0_21\bin\jarsigner.exe" -keystore ".\%DATETIME%\keystore" -storepass "%DATETIME%" -keypass "%DATETIME%" -digestalg SHA1 -signedjar ".\%DATETIME%\signed.apk" ".\%DATETIME%\unsigned.apk" "%DATETIME%"
完整的程序代码以下
- SET SOURCEAPK=".\Test4.apk"
- SET SOURCEWWW=".\www"
- SET DATETIME=%TIME:~0,1%
- IF "%DATETIME%"==" " THEN SET DATETIME=0
- SET DATETIME=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%%DATETIME%%TIME:~1,1%%TIME:~3,2%%TIME:~6,2%
- MKDIR ".\%DATETIME%"
- COPY "%SOURCEAPK%" ".\%DATETIME%\source.apk"
- "D:\Program Files\7-Zip\7z.exe" x -o".\%DATETIME%\source" ".\%DATETIME%\source.apk"
- RMDIR /S /Q ".\%DATETIME%\source\META-INF"
- MKDIR ".\%DATETIME%\source\assets\www"
- XCOPY /E "%SOURCEWWW%\*" ".\%DATETIME%\source\assets\www"
- "D:\Program Files\7-Zip\7z.exe" a -tzip ".\%DATETIME%\unsigned.apk" ".\%DATETIME%\source\*"
- "D:\Program Files\Java\jdk1.7.0_21\bin\keytool.exe" -genkeypair -keystore ".\%DATETIME%\keystore" -storepass "%DATETIME%" -dname "CN=%DATETIME%, OU=daonao.com, O=daonao.com, L=Beijing, L=Beijing, C=CN" -alias "%DATETIME%" -keypass "%DATETIME%"
- "D:\Program Files\Java\jdk1.7.0_21\bin\jarsigner.exe" -keystore ".\%DATETIME%\keystore" -storepass "%DATETIME%" -keypass "%DATETIME%" -digestalg SHA1 -signedjar ".\%DATETIME%\signed.apk" ".\%DATETIME%\unsigned.apk" "%DATETIME%"