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

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


  • 相关阅读:
    转载C#基础概念二十五问
    C# 文件路径、目录、I/O常见操作汇总
    最简单lru缓存及改进版本(java备忘)
    我的游戏观
    寂静岭 破碎的记忆
    居然又回来了,CSDN博客太不方便了
    Game Physics Engine Development 粗略翻译
    就这么定了
    绘画 程序 人生
    也谈Maxscript
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3170497.html
Copyright © 2020-2023  润新知