在 Windows 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序
本贴首发于:http://xuekaiyuan.com/forum.php?mod=viewthread&tid=13
代码说明
设置已编译的不包含网页的 APK 安装程序的路径
- 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%"
复制已编译的不包含网页的 APK 安装程序到临时文件夹
- COPY "%SOURCEAPK%" ".\%DATETIME%source.apk"
解压缩已编译的不包含网页的 APK 安装程序到临时文件夹
- "D:Program Files7-Zip7z.exe" x -o".\%DATETIME%source" ".\%DATETIME%source.apk"
删除临时文件中的签名信息
- RMDIR /S /Q ".\%DATETIME%sourceMETA-INF"
在临时文件夹中创建网页的路径
- MKDIR ".\%DATETIME%sourceassetswww"
复制网页到临刊文件夹中网页的路径
- XCOPY /E "%SOURCEWWW%*" ".\%DATETIME%sourceassetswww"
压缩临时文件夹为未签名的 APK 安装程序
- "D:Program Files7-Zip7z.exe" a -tzip ".\%DATETIME%unsigned.apk" ".\%DATETIME%source*"
在临时文件夹中生成一个签名用的密钥文件
- "D:Program FilesJavajdk1.7.0_21inkeytool.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 FilesJavajdk1.7.0_21injarsigner.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 Files7-Zip7z.exe" x -o".\%DATETIME%source" ".\%DATETIME%source.apk"
- RMDIR /S /Q ".\%DATETIME%sourceMETA-INF"
- MKDIR ".\%DATETIME%sourceassetswww"
- XCOPY /E "%SOURCEWWW%*" ".\%DATETIME%sourceassetswww"
- "D:Program Files7-Zip7z.exe" a -tzip ".\%DATETIME%unsigned.apk" ".\%DATETIME%source*"
- "D:Program FilesJavajdk1.7.0_21inkeytool.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 FilesJavajdk1.7.0_21injarsigner.exe" -keystore ".\%DATETIME%keystore" -storepass "%DATETIME%" -keypass "%DATETIME%" -digestalg SHA1 -signedjar ".\%DATETIME%signed.apk" ".\%DATETIME%unsigned.apk" "%DATETIME%"