zoukankan      html  css  js  c++  java
  • 在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序

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

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


  • 相关阅读:
    初探nodejs事件循环机制event loop
    夯实基础之--new关键字、instanceOf原理
    分享-结合demo讲解JS引擎工作原理
    Linux-centos安装node、nginx小记
    openlayers5实战--踩坑总结
    node+koa中转层开发实践总结
    vue预渲染实践总结
    css多行省略-webkit-box-orient打包编译后失效原因
    使用mpVue开发小程序实战总结
    Linux crontab定时执行任务
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3170497.html
Copyright © 2011-2022 走看看