- 基于WeX5的HTML5 App移动应用开发
- 夏辉 张书峰 杨伟吉
- 3109字
- 2021-04-04 08:39:12
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所示。
图3-1 WeX5文件目录
图3-2 创建本地App
3)接下来弹出创建本地App的窗口,根据实际需求选择对应的打包模式。需要注意的是,“应用名”处填写的名字是最终生成App的名字,如图3-3所示。
4)设置服务地址和选择UI资源。填写“Web服务地址”“Web路径”,选择好项目首页index.w文件,如图3-4所示。
5)配置应用信息。填写版本号(如1.0.0,由三部分组成)、应用包名、应用描述,并选择Android的WebView引擎(如果无特殊需要,一般默认为“自动选择”),如图3-5所示。
图3-3 模式选择
图3-4 设置服务地址和选择UI资源
图3-5 配置应用信息
6)配置开发者信息和证书。根据需求选择要生成安卓应用还是苹果应用,填写证书信息,如图3-6所示。
图3-6 配置开发者信息和证书
7)设置屏幕选项。设置App的应用图标、纵向欢迎图片和横向欢迎图片,如图3-7所示。
图3-7 设置屏幕选项
8)选择打包的本地插件。这部分将所需的插件打包进App,默认为“自动追加”,如图3-8所示。
图3-8 选择打包的本地插件
9)配置更新信息,如图3-9所示。
图3-9 配置更新信息
10)本地应用信息。这里可以看到之前设置的信息,检查无误后,单击“完成”按钮,如图3-10所示。
图3-10 本地应用信息
11)开始执行,编译,生成证书,耐心等待几分钟,如图3-11所示。
图3-11 开始执行
12)启动App生成向导。选择需要生成的App包。如果需要发布最终对外发布包,勾选“发布模式”复选框。最后单击“完成”按钮,将开始编译工作,如图3-12所示。
图3-12 App生成向导
13)完成打包,如图3-13所示。
图3-13 完成打包
14)最后可以在WeX5 Studio里的“模型资源”窗口、Native目录里对应生成的App项目目录中查看打包文件。dist文件夹中包含了生成的App文件,如图3-14所示。
图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目录:源码目录。源代码模式打包时使用。
图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证书。
图3-16 选择首页
图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密码不正确时,会在打包服务器日志中输出如下内容:
2)打包过程中选择的Android证书文件不正确,如随便放了一个android.keystore,会在打包服务器日志中输出如下内容:
3)使用Windows环境打Android App包时,如果操作系统环境变量path中没有“c:\windows;c:\windows\system32”,会在日志中输出如下内容:
4)下面的报错是因为打包时没有选择资源,却选择了编译资源,所以提示找不到文件。打包时选择编译资源,请确认一定要选择上资源目录才可以。
5)打包过程中输入的应用包名称与iOS的BundleID不一致时,会在打包服务器日志中输出如下内容:
6)打包时出现下面的错误时,是jdk1.7在某种环境下启动JVM出错: