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

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


  • 相关阅读:
    CentOS开发环境LAMP搭建
    Oracle中*.dpm文件导入
    SQL Server查询数据库中所有的表名及行数
    SQL Server数据库同步SQL
    Vim 快捷键整理
    SQL Server解决死锁问题
    python重试装饰器的简单实现
    神奇的描述符(三):覆盖描述符与非覆盖描述符
    神奇的描述符(二):使用描述符实现实例属性的类型检查
    神奇的描述符(一):描述符协议的实现
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3170497.html
Copyright © 2011-2022 走看看