您的位置:首页 > 运维架构 > Linux

在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序

2013-07-03 21:40 721 查看
在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序
本贴首发于:
http://xuekaiyuan.com/forum.php?mod=viewthread&tid=15

准备环境

本脚本依赖 p7zip,OpenJDK,PHP

代码说明

设置已编译的不包含网页的 APK 安装程序的路径

SOURCEAPK="./AxureViewer.apk"


设置网页的路径

SOURCEWWW="./www"


设置基础路径

BASEDIR="."


计算时间戳

DATETIME="$(/bin/date +%Y%m%d%H%M%S)"


设置工作路径

WORKINGDIR="${BASEDIR}/${DATETIME}"


创建临时文件夹

/bin/mkdir "${WORKINGDIR}"


复制已编译的不包含网页的 APK 安装程序到临时文件夹

cp "${SOURCEAPK}" "${WORKINGDIR}/source.apk"


解压缩已编译的不包含网页的 APK 安装程序到临时文件夹

/usr/local/bin/7za x -o"${WORKINGDIR}/source" "${WORKINGDIR}/source.apk"


删除临时文件中的签名信息

rm -r "${WORKINGDIR}/source/META-INF"


在临时文件夹中创建网页的路径

/bin/mkdir "${WORKINGDIR}/source/assets/www"


复制网页到临刊文件夹中网页的路径

cp -r "${SOURCEWWW}/"* "${WORKINGDIR}/source/assets/www"


自动修改文件名

/usr/local/php/bin/php ./rename.php "${WORKINGDIR}/source/assets/www"


压缩临时文件夹为未签名的 APK 安装程序

/usr/local/bin/7za a -tzip "${WORKINGDIR}/unsigned.apk" "${WORKINGDIR}/source/*"


在临时文件夹中生成一个签名用的密钥文件

/usr/bin/keytool -genkeypair -keystore "${WORKINGDIR}/keystore" -storepass "${DATETIME}" -dname "CN=${DATETIME}, OU=hpx-party.net, O=daonao.com, L=Beijing, L=Beijing, C=CN" -alias "${DATETIME}" -keypass "${DATETIME}"


使用密钥文件对未签名的 APK 安装程序签名生成已签名的 APK 安装程序

/usr/bin/jarsigner -keystore "${WORKINGDIR}/keystore" -storepass "${DATETIME}" -keypass "${DATETIME}" -digestalg SHA1 -signedjar "${WORKINGDIR}/signed.apk" "${WORKINGDIR}/unsigned.apk" "${DATETIME}


完整的程序代码如下

SOURCEAPK="./AxureViewer.apk"
SOURCEWWW="./www"
BASEDIR="."
DATETIME="$(/bin/date +%Y%m%d%H%M%S)"
WORKINGDIR="${BASEDIR}/${DATETIME}"
/bin/mkdir "${WORKINGDIR}"
cp "${SOURCEAPK}" "${WORKINGDIR}/source.apk"
/usr/local/bin/7za x -o"${WORKINGDIR}/source" "${WORKINGDIR}/source.apk"
rm -r "${WORKINGDIR}/source/META-INF"
/bin/mkdir "${WORKINGDIR}/source/assets/www"
cp -r "${SOURCEWWW}/"* "${WORKINGDIR}/source/assets/www"
/usr/local/php/bin/php ./rename.php "${WORKINGDIR}/source/assets/www"
/usr/local/bin/7za a -tzip "${WORKINGDIR}/unsigned.apk" "${WORKINGDIR}/source/*"
/usr/bin/keytool -genkeypair -keystore "${WORKINGDIR}/keystore" -storepass "${DATETIME}" -dname "CN=${DATETIME}, OU=hpx-party.net, O=daonao.com, L=Beijing, L=Beijing, C=CN" -alias "${DATETIME}" -keypass "${DATETIME}"
/usr/bin/jarsigner -keystore "${WORKINGDIR}/keystore" -storepass "${DATETIME}" -keypass "${DATETIME}" -digestalg SHA1 -signedjar "${WORKINGDIR}/signed.apk" "${WORKINGDIR}/unsigned.apk" "${DATETIME}"


在虚拟机中的效果如图所示

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: