3.1 App打包

本书的“本地App”指的是基于Cordova框架标准的工程,可以包含一个或者多个平台的支持(iOS平台、Android平台等)。

对于本地App,Cordova官方的解释是:Apache Cordova是一个开放源代码的移动开发框架,它允许使用标准的Web技术如HTML5、CSS3和JavaScript进行跨平台开发,避免使用每个移动平台的原生语言开发,应用程序在有针对性的每个平台的包装内执行,并依靠符合标准的API绑定访问每个设备的感应器、资料和网络状态。

在WeX5框架中,当完成开发后,如果要发布我们开发的App软件项目,就要把软件项目打包成App。

WeX5提供两种版本App:Windows和Mac。如在Windows环境下开发App,打iOS App包时需使用打包服务器;如使用Mac版本,打iOS App包时则不需要使用打包服务器。另外,打Android apk包不需要使用打包服务器。

3.1.1 App打包流程

打开解压后的WeX5文件目录,如图3-1所示。

注意:解压最好放在根目录下,不要放在含中文、空格和特殊字符的目录下。软件项目文件名最好是纯字母。

当要把做好的WeX5项目打包成App进行部署时,就必须了解App打包的具体流程。WeX5框架App打包的具体流程如下。

1)双击“启动WeX5开发工具.bat”打开WeX5 Studio开发工具。

2)在“模型资源”窗口下找到Native目录,右击,在弹出的快捷菜单中可单击“新建→创建本地App”命令,如图3-2所示。

978-7-111-64845-1-Chapter03-1.jpg

图3-1 WeX5文件目录

978-7-111-64845-1-Chapter03-2.jpg

图3-2 创建本地App

3)接下来弹出创建本地App的窗口,根据实际需求选择对应的打包模式。需要注意的是,“应用名”处填写的名字是最终生成App的名字,如图3-3所示。

4)设置服务地址和选择UI资源。填写“Web服务地址”“Web路径”,选择好项目首页index.w文件,如图3-4所示。

5)配置应用信息。填写版本号(如1.0.0,由三部分组成)、应用包名、应用描述,并选择Android的WebView引擎(如果无特殊需要,一般默认为“自动选择”),如图3-5所示。

978-7-111-64845-1-Chapter03-3.jpg

图3-3 模式选择

978-7-111-64845-1-Chapter03-4.jpg

图3-4 设置服务地址和选择UI资源

978-7-111-64845-1-Chapter03-5.jpg

图3-5 配置应用信息

6)配置开发者信息和证书。根据需求选择要生成安卓应用还是苹果应用,填写证书信息,如图3-6所示。

978-7-111-64845-1-Chapter03-6.jpg

图3-6 配置开发者信息和证书

7)设置屏幕选项。设置App的应用图标、纵向欢迎图片和横向欢迎图片,如图3-7所示。

978-7-111-64845-1-Chapter03-7.jpg

图3-7 设置屏幕选项

8)选择打包的本地插件。这部分将所需的插件打包进App,默认为“自动追加”,如图3-8所示。

978-7-111-64845-1-Chapter03-8.jpg

图3-8 选择打包的本地插件

9)配置更新信息,如图3-9所示。

978-7-111-64845-1-Chapter03-9.jpg

图3-9 配置更新信息

10)本地应用信息。这里可以看到之前设置的信息,检查无误后,单击“完成”按钮,如图3-10所示。

978-7-111-64845-1-Chapter03-10.jpg

图3-10 本地应用信息

11)开始执行,编译,生成证书,耐心等待几分钟,如图3-11所示。

978-7-111-64845-1-Chapter03-11.jpg

图3-11 开始执行

12)启动App生成向导。选择需要生成的App包。如果需要发布最终对外发布包,勾选“发布模式”复选框。最后单击“完成”按钮,将开始编译工作,如图3-12所示。

978-7-111-64845-1-Chapter03-12.jpg

图3-12 App生成向导

13)完成打包,如图3-13所示。

978-7-111-64845-1-Chapter03-13.jpg

图3-13 完成打包

14)最后可以在WeX5 Studio里的“模型资源”窗口、Native目录里对应生成的App项目目录中查看打包文件。dist文件夹中包含了生成的App文件,如图3-14所示。

978-7-111-64845-1-Chapter03-14.jpg

图3-14 查看打包生成文件

3.1.2 参数详解

从之前的App打包流程中,已经基本了解了WeX5的打包流程。下面来具体介绍一些参数的配置。

1.应用模式

在打包过程中会遇到选择应用模式的问题。以目前WeX5的V3.7版本为例,打包时一共提供了4种模式供开发者使用。

●模式1:UI资源启动后智能更新模式。WeX5推荐使用本模式,使用到的UI资源编译为标准的Web资源(HTML、CSS、JS等),并部署到Web服务器上,支持多版本同时运行和灰度发布,如Web服务器端的文件有更新,则延迟(异步)更新;无Web服务端的本地应用,UI资源直接包含到本地应用中,也推荐使用此模式。

●模式2:UI资源启动时立即更新模式。使用到的UI资源编译为标准的Web资源(HTML、CSS、JS等),并部署到Web服务器上,如Web服务端的资源有更新,则启动时立即(同步)更新资源。

●模式3:UI资源通过UIServer访问。BeX5推荐使用本模式;WeX5调试时也推荐本模式,但由于部署在WeX5服务端的项目更为灵活,发布推荐使用模式1。

●模式4:打开一个非WeX5开发的网站。本模式的App类似一个没有地址栏并打开一个默认网址的浏览器,并可用JS调用本地插件。

App打包使用的是Native目录,如图3-15所示。

●plugins目录:自定义插件目录。如需增加插件,复制到该目录下即可。

●templates目录:用于本地App应用打包时的模板目录。下面包含advancde目录和normal目录。

●advancde目录:源码目录。源代码模式打包时使用。

978-7-111-64845-1-Chapter03-15.jpg

图3-15 Native目录

●normal目录:是WeX5本地App应用生成的模板目录。build.properties是编译配置文件,配置证书密码和记录上一次打包相关配置。config.xml是cordova的标准配置文件,一般不需要自己做修改。说明.txt是对打包相关重要信息的说明文件。

另外介绍platforms目录:是基于cordova目录结构的代码和资源目录,在这个目录中可根据自己的需要更换相关图标。其中android下的res目录存放的是android的图标和启动欢迎图片;ios的X5下的Resources目录里的icons目录存放的是ios的图标,splash目录存放的是ios的启动欢迎图片。在打包导航过程中也会提示配置自己的应用图标和启动欢迎图片,操作起来更便捷,可不在目录中手工做更换。

新建一个本地App应用时,是将platforms目录、android.keystore证书、build.properties配置文件、说明文件生成至新建App应用目录中,产生一个完整的App应用。

注意:在App应用的目录文件中还有一个隐藏的App.project配置文件,存储的是创建App应用时的相关配置选项信息。

2.Web服务器地址

这里设置的Web服务器地址,即加载UI资源的访问地址,也就是发布资源的服务器地址,可以是本地服务器、CloudX5云服务器和其他的服务器地址。

在打包时,用的是Web服务器地址:http://192.168.0.106:8080。

3.Web路径

选择发布资源时,发布的资源在www目录下的目录名称,最好和项目名称保持一致。

注意:使用UIServer的情况(也就是使用模式3进行打包的时候),必须使用/X5/UI2。

4.选择首页

首页即App启动后看到的页面,如果App启动时需要向服务器发送请求,所请求的首页面就是此配置的页面。

双击“选择需要发布的资源”中要显示的首页面即可,如图3-16所示。

5.配置证书

如图3-17所示,打开Android的App应用包时必须勾选“Android证书”复选框,输入Android证书密码,会根据所输入的开发者相关信息和证书密码,重新生成Android证书。

978-7-111-64845-1-Chapter03-16.jpg

图3-16 选择首页

978-7-111-64845-1-Chapter03-17.jpg

图3-17 配置证书参数

打iOS的App包时,需要根据使用的是iOS的开发证书还是发布证书进行选择。输入iOS证书密码(是P12文件的密码),然后选择对应的P12文件和App验证文件。

6.发布模式

选择发布模式后,不能使用真机调试。如果是“微信分享功能”,只能在发布模式的App中执行。

使用iOS的发布证书(distribution)打包时,则需要勾选对应的发布模式选项。

使用iOS的开发证书(developer)打包时,该项必须不勾选。

7.使用应用打包服务器生成本地应用

Windows环境下打包iOS的App,必须选择该选项。使用应用打包服务器,必须输入应用打包服务器地址,地址输入后,需进行“连接测试”,以确定打包服务器可用。

在Mac下使用Mac版本打包时该选项可不选。

如果选择这个选项,那么必须进行打包服务器的安装,详见3.1.1节App打包流程。

3.1.3 打包常见错误

App打包执行过程中,如未成功生成App包,会在执行窗口出现报错信息,需要从最底端往上查看错误信息。

●如果是使用打包代理服务打iOS App包,则需查看“代理服务日志”。

●如果是打Android App包,则只查看“日志”。

●如果是Mac版,则不区分“日志”和“代理服务日志”,直接查看当前执行窗口的“报错信息”栏。

●查看时重点关注出现“BUILD FAILED”“security”“ERROR”字样前后的相关信息。

将一些常见的问题总结如下。

1)打包过程中输入的Android密码不正确时,会在打包服务器日志中输出如下内容:

978-7-111-64845-1-Chapter03-18.jpg

2)打包过程中选择的Android证书文件不正确,如随便放了一个android.keystore,会在打包服务器日志中输出如下内容:

978-7-111-64845-1-Chapter03-19.jpg

3)使用Windows环境打Android App包时,如果操作系统环境变量path中没有“c:\windows;c:\windows\system32”,会在日志中输出如下内容:

978-7-111-64845-1-Chapter03-20.jpg

978-7-111-64845-1-Chapter03-21.jpg

4)下面的报错是因为打包时没有选择资源,却选择了编译资源,所以提示找不到文件。打包时选择编译资源,请确认一定要选择上资源目录才可以。

978-7-111-64845-1-Chapter03-22.jpg

5)打包过程中输入的应用包名称与iOS的BundleID不一致时,会在打包服务器日志中输出如下内容:

978-7-111-64845-1-Chapter03-23.jpg

6)打包时出现下面的错误时,是jdk1.7在某种环境下启动JVM出错:

978-7-111-64845-1-Chapter03-24.jpg