在 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%"