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

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

在 Linux 中自动生成 Cordova/Phonegap for Android 的 APK 安装程序的更多相关文章

  1. 在 Linux 中自动配置 IPv6 地址

    在 Linux 中自动配置 IPv6 地址 在本文中,我们将学习如何为 ULA 自动配置 IP 地址. 何时使用唯一本地地址 唯一本地地址unique local addresses(ULA)使用 f ...

  2. Linux Makefile自动生成--config.h

    Linux Makefile自动生成--config.h http://blog.csdn.net/spch2008/article/details/12510805

  3. 在 Cordova/Phonegap for Android 中包含中文文件名的页面

    在 Cordova/Phonegap for Android 中包含中文文件名的页面 本贴首发于: http://xuekaiyuan.com/forum.php?mod=viewthread& ...

  4. IntelliJ IDEA 中自动生成 serialVersionUID 的方法

    as, idea plugin中搜如下关键字,并安装该插件: GenerateSerialVersionUID 如上图所示,创建一个类并实现Serializable接口,然后按alt+Enter键,即 ...

  5. 在PowerDesigner中自动生成sqlserver字段备注

    在PowerDesigner中自动生成sqlserver字段备注 PowerDesigner是数据库设计人员常用的设计工具,但其自生默认生成的代码并不会生成sqlserver数据库的字段备注说明.在生 ...

  6. 二十四、详述 IntelliJ IDEA 中自动生成 serialVersionUID 的方法

    当我们用 IntelliJ IDEA 编写类并实现 Serializable(序列化)接口的时候,可能会遇到这样一个问题,那就是: 无法自动生成serialVersionUID. 而serialVer ...

  7. eclipse中自动生成注释

    eclipse中自动生成注释 包前缀设置的地方 注释模板设置的地方 Eclipse自动生成方法注释 快捷键 自动生成方法的注释格式,例如 /*** @param str* @return* @thro ...

  8. Eclipse中自动生成get/set时携带注释给get/set

    Eclipse中自动生成get/set时携带注释给get/set   编码的时候通常要用到 JavaBean ,而在我们经常把注释写在字段上面,但生成的Get/Set方法不会生成,通过修改Eclips ...

  9. 从JSON中自动生成对应的对象模型

    编程的乐趣和挑战之一,就是将体力活自动化,使效率成十倍百倍的增长. 需求 做一个项目,需要返回一个很大的 JSON 串,有很多很多很多字段,有好几层嵌套.前端同学给了一个 JSON 串,需要从这个 J ...

随机推荐

  1. R - 变化plot字形,嵌入字体以pdf

    近期使用R绘图遇到两个问题 1. 使用不同的字体 2. 保存 plot 至 pdf 当字体嵌入pdf (embed the font) 使用extrafont和Ghostscript能够解决这两个问题 ...

  2. linux 定时关机命令

    一. 关机流程 Linux 运作时, 不能够直接将电源关闭, 否则, 可能会损毁档案系统. 因此, 必须依照正常的程序关机: 观察系统使用情形(或许当时, 正有使用者做着重要的工作呢!) 通知线上使用 ...

  3. Gulp前端构建工具

    Gulp, 比Grunt更好用的前端构建工具 Gulp, 比Grunt更好用的前端构建工具 本文主要从两个方面介绍Gulp:一,Gulp相对于Grunt的优势: 二,Gulp的安装和使用流程 Gulp ...

  4. MySQL replace into 说明(insert into 增强版)

    MySQL replace into 说明(insert into 增强版) 在插入数据到一个表时,通常是这种情况:1. 先推断数据是否存在: 2. 假设不存在,则插入:3.假设存在,则更新. 在 S ...

  5. C#遍历文件名

    遍历文件名程序 //////////////////第一种方法///////////// static ArrayList GetAllFiles(string path) { ArrayList r ...

  6. C# FileSystemWatcher 监视磁盘文件

    C# FileSystemWatcher 监视磁盘文件变更 简化需求:有一个简化了的需求是这样的:有一个拍照程序在运行,一旦抓拍之后则将图片文件存储至某目录,然后图片要上传至远程服务器并update数 ...

  7. C#使用Thrift简介,C#客户端和Java服务端相互交互

    C#使用Thrift简介,C#客户端和Java服务端相互交互 本文主要介绍两部分内容: C#中使用Thrift简介 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互. 用纯C#实 ...

  8. 【转】在PC上测试移动端网站和模拟手机浏览器的5大方法

    查了很多资料,尝试了大部分方法,下面将这一天的努力总结下分享给大家,也让大家免去看那么多文章,以下介绍的方法,都是本人亲自测试成功的方法,测试环境winxp. 一.Chrome*浏览器 chrome模 ...

  9. Toad for Oracle的安装

    分享一下Oracle 10gToad for Oracle的安装步骤   三年前用过Oracle,单纯的“用过”,主要就是说对数据库的一些操作,还不包含创建一些存储过程之类的,所以对Oracle仅仅只 ...

  10. 【转载】如何让Chrome浏览器允许本地环境支持Ajax

    转载自:http://www.bewxx.com/news/news_89.html 对于网站前端人员来说,我们在本地开发程序的时候如果用到Ajax的话,通常会使用Firefox来测试,因为Firef ...