1 | [TOC]
|
2 |
|
3 |
|
4 | <a name="快速开始" class="anchor"></a >
|
5 | # 快速开始
|
6 | 概述:mtl-cli
|
7 |
|
8 | > mtl-cli 工具支持Android、iOS、微信、钉钉、移动web等多端同步跨平台开发,一套源码,多端调用 ,多端调试、多端预览 ,多端在云端服务构建生成不同的安装包以及发布包。提供工程模板脚手架,添加标准页面,原生能力插件等,并在云端构建打包等功能。
|
9 |
|
10 | > 支持的平台
|
11 |
|
12 | 简称 | 说明
|
13 | ---|---
|
14 | android | Android平台
|
15 | ios | iOS平台
|
16 | WX | 微信小程序平台
|
17 | DD | 钉钉E应用
|
18 | web | 移动Web应用
|
19 |
|
20 | ### 系统环境要求
|
21 | 兼容 Mac 和 win 操作系统。
|
22 |
|
23 | ### 前置软件安装
|
24 | + 首先安装node.js、npm
|
25 |
|
26 |
|
27 | ### 安装mtl
|
28 |
|
29 |
|
30 | ```
|
31 | npm -g install mtl-cli
|
32 | ```
|
33 | 在安装过程中 ,如果是Mac电脑遇到安装失败,权限不够,需要加上 sudo 。 例如: sudo npm -g install mtl-cli 。 安装完成后,运行下面命令,检查是否安装成功
|
34 | ```
|
35 | mtl --version //查看版本号
|
36 | ```
|
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 | ### 创建工程
|
45 |
|
46 | mtl 根据模板脚手架创建一个工程
|
47 |
|
48 | ```
|
49 | mtl create [appname] [template]
|
50 | ```
|
51 | appname 是工程名称
|
52 | + 此参数是必填项。参数不能是特殊字符 ,长度不要超过64。例如mtl-demo、mtl@……%demo 这样的工程命名都是不对的;
|
53 | + 本地已创建的工程不能同名再创建,造成本地目录同名;
|
54 |
|
55 | template 样版工程
|
56 | + :一个空的MTL工程 。
|
57 | + : 一个MTL demo工程 ,涉及原生交互的一些功能。
|
58 |
|
59 | ```
|
60 | 注意: 如果 mac 在创建工程结束的时候报错“Error: EACCES: permission denied” ,这个可能是 安装 express 没有权限导致 。
|
61 | 解决方法 :
|
62 | 1)、进入到你创建的**工程目录** 下 ,执行:sudo npm --save install express ,等待安装包执行完成后就可以了。
|
63 | 2)、修改你的workspace 目录操作权限,指令: sudo chmod -R 777 workspace 的文件夹目录。
|
64 |
|
65 | 如果在win上同样出现权限的报错,请查询win修改权限相关的操作。
|
66 | ```
|
67 | ### 配置工程信息
|
68 |
|
69 | project.json文件 是工程配置文件,工程的信息以及各个端需要的重要数据都会集中在此文件中。
|
70 |
|
71 | + [**用户可以通过命令行更新或者手工配置**]
|
72 | ```
|
73 | {
|
74 | "config": {
|
75 | "appName": "mtl",
|
76 | "packageName": "com.yonyou.mtl",
|
77 | "bundleID": "com.yonyou.uap.mobile5",
|
78 | "projectName": "mtl",
|
79 | "versionName": "1.0.0",
|
80 | "versionCode": "100",
|
81 | "versionBuild": "1.0.0",
|
82 | "startPage": "index.html",
|
83 | "debuggerEnable": "false",
|
84 | "reinforcement": "false",
|
85 | "sandbox": "false",
|
86 | "targetDevice": "handset",
|
87 | "statusBarTheme": "summer.Animations.NoTitleBar.FullScreen",
|
88 | "errorUrl": "",
|
89 | "urlScheme": "iosMtlScheme",
|
90 | "queriesSchemes": "",
|
91 | "androidScheme": "",
|
92 | "androidMinSdkVersion": "19",
|
93 | "isLibraryCompilation": "false",
|
94 | "ddAppCode": "dingnlb2wikil7pldytf",
|
95 | "wxAppCode": "dingnlb2wikil7pldytf",
|
96 | "cordovaPlugins": [],
|
97 | "gitUrl": "https://gogs.yonyoucloud.com/caiyi/mtl.git",
|
98 | "technologyStack": "tradition"
|
99 | }
|
100 | }
|
101 | ```
|
102 | 简单介绍几个重要参数:
|
103 | + appName :用户应用名称,一般在android ,iOS 构建打包后会生成的包名称。
|
104 | + packageName : android的包ID 。
|
105 | + bundleID : iOS 的bundleID 。
|
106 | + projectName : 创建工程的名称,一般与appName同名皆可以 。
|
107 | + version**** : 这个设置的android ,iOS 构建包的版本号,对于其他平台版本设置不涉及 。
|
108 | + startPage : 这个是工程的首页地址 ,是很重要的参数 !用户创建的工程无论调试、预览、构建都要关注这个参数 ,因为这是工程的入口 。
|
109 | + debuggerEnable : 这个是android和iOS平台的调试构建包 ,暂时支持android ,后期支持iOS 。
|
110 | + reinforcement : android的加固功能,暂时不支持 。
|
111 | + ****Schemes : android和iOS的schemes配置 。
|
112 | + androidMinSdkVersion : android支持的最小版本 。
|
113 | + ddAppCode、wxAppCode : WX 、DD 小程序的接入code 。
|
114 | + cordovaPlugins : 配置调用原生能力的插件列表。
|
115 | + technologyStack : 这个是技术栈 ,要支持传统H5、react 、以及VUE等等框架。现在支持H5,以及即将上线的react框架。
|
116 |
|
117 |
|
118 |
|
119 |
|
120 | ### 设置android包名
|
121 | ```
|
122 | mtl set-packageName
|
123 |
|
124 | ```
|
125 | ### 设置iOS bundleID
|
126 | ```
|
127 | mtl set-bundleID
|
128 |
|
129 | ```
|
130 | ### 设置首页
|
131 | ```
|
132 | mtl set-startPage
|
133 |
|
134 | ```
|
135 | 以上三个设置项都是通过命令行 更新project.json 文件。
|
136 |
|
137 |
|
138 | ### 创建页面
|
139 | ```
|
140 | mtl add-page [pagename] [modelname]
|
141 |
|
142 | ```
|
143 | pagename
|
144 | + 此参数是必填项,pagename 不能是特殊字符和汉字,长度不能超过64个字符;
|
145 | + 用户根据这个名称,替换模板页面中的模板变量,进行填槽,形成想要的页面。
|
146 |
|
147 | modelname
|
148 | + empty:标准空页面 <--默认
|
149 | + list:标准列表页面
|
150 | + login:标准登录页面
|
151 | + ncc-login: ncc 登录页面
|
152 | + ncc-platform:ncc平台页面
|
153 |
|
154 |
|
155 | ### 添加插件引用原生功能
|
156 | ```
|
157 | mtl add-plugin
|
158 | ```
|
159 | 现在拥有的插件 ,持续开发中:
|
160 | + mtl-plugin-faceverify 人脸识别
|
161 | + mtl-plugin-bdlocation 定位
|
162 | + mtl-plugin-terminal 多端控制
|
163 | + mtl-plugin-umeng 三方友盟
|
164 | + mtl-plugin-vui 语音交互
|
165 | ```
|
166 | 用户进入多选 checkbox 操作中 ,通过按下 "空格" 键选择,
|
167 | 上下箭头来移动光标,按下"a"实现全选, 按下"i"实现反选。
|
168 | “回车” 确认保存到project.json 文件中
|
169 | ```
|
170 |
|
171 |
|
172 | <a name="调试" class="anchor"></a >
|
173 | # 调试
|
174 | ```
|
175 | mtl debug [ iOS | Android | WX | DD]
|
176 | ```
|
177 |
|
178 | ### android 调试
|
179 | + android 平台需要配置好 android开发环境 ,至少adb工具。安装android 模拟器 ,例如 网易模拟器 nunu ,确保adb 连接通 , 可以使用 命令 :adb connect 127.0.0.1:7555 (win),adb connect 127.0.0.1:5555 (mac)。如果debug过一次了没有成功,可以把工程根目录下的output/android/debug 目录删除 ,重新执行命令行debug 。如果 报错 error: more than one device and emulator ,可以用adb devices 命令看看是不是存在多个。发现还真是多个设备,那就需要为ADB命令指定设备的序列号了,
|
180 | adb -s “emulator-5554” shell
|
181 | 也就是给命令加上-s的参数就可以了;
|
182 | ### iOS 调试
|
183 | + iOS 需要搭建好xcode 开发环境;
|
184 | ### 微信小程序调试
|
185 | + 微信小程序需要安装微信小程序工具:到微信公众平台去下载,下载地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html。命令行进行mtl debug wx 后 ,用微信小程序工具导入当前工程目录./output/wx/debug/proj ,这样就可以在微信小程序工具下看到 修改app目录下工程源码的调试效果。
|
186 | ### 钉钉小程序调试
|
187 |
|
188 | + 钉钉小程序需要安装 蚂蚁金服开放平台 小程序工具,下载地址:https://docs.alipay.com/mini/ide/download。命令行进行mtl debug DD 后 ,用钉钉小程序工具导入当前工程目录./output/dd/debug/proj ,这样就可以在钉钉小程序工具下看到 修改app目录下工程源码的调试效果。
|
189 |
|
190 |
|
191 | ### debug 调试host配置和功能说明:
|
192 | + 配置pc的host 文件如下: 添加“ 127.0.0.1 mobile.yyuap.com ” ;
|
193 | + 修改文件热更新,如果在项目工程下,修改了project.json 或者 app目录下的工程源码都会自动更新到output平台目录下的工程目录,需要在 android ,iOS ,wx小程序工具 ,钉钉小程序工具 里刷新就可以看到修改的效果。
|
194 | + 友情提示,终端命令行在调试状态下 ,一直处于工程的监听中 ,请不要中断当前的状态 ,直到想要终止调试,进行其他操作。
|
195 |
|
196 |
|
197 | <a name="预览" class="anchor"></a >
|
198 | # 预览
|
199 | ```
|
200 | mtl preview [ iOS | Android | WX | DD |Upesn]
|
201 | ```
|
202 |
|
203 | ### android预览说明:
|
204 | + 命令行执行预览android功能 ,需要用真机预先安装"预览apk" ,在真机安装后,打开预览APP的扫码功能 ,扫码识别后 ,就可以验证项目开发的真机预览功能。
|
205 | ### iOS 预览说明:
|
206 | + 命令行执行预览iOS功能 ,需要用真机预先安装"预览IPA" ,在真机安装后,打开预览APP的扫码功能 ,扫码识别后 ,就可以验证项目开发的真机预览功能。
|
207 | ### 微信小程序预览说明:
|
208 | + 命令行执行预览微信小程序功能 ,需要用真机的微信APP,用微信的扫码功能 ,扫码识别后 ,就可以验证项目开发的真机预览功能。
|
209 | ### 钉钉小程序预览说明:
|
210 |
|
211 | + 命令行执行预览钉钉小程序功能 ,需要用真机的钉钉APP,用钉钉的扫码功能 ,扫码识别后 ,就可以验证项目开发的真机预览功能。
|
212 |
|
213 |
|
214 | ### 友空间预览说明:
|
215 | + 命令行执行预览Upesn功能 ,需要用真机的友空间APP,用友空间的扫码功能 ,扫码识别后 ,就可以验证项目开发功能的真机预览功能。
|
216 | ### 预览功能说明:
|
217 | + 预览命令行执行后 ,会在pc开发设备形成二维码;
|
218 | + 修改文件热更新,如果在项目工程下,修改了project.json 或者 app目录下的工程源码都会自动更新到后台预览服务中,需要在 android ,iOS ,微信 ,钉钉,友空间 里刷新就可以看到更新的效果。
|
219 | + 友情提示,终端命令行在预览状态下 ,一直处于工程的监听中 ,请不要中断当前的状态 ,直到想要终止预览,进行其他操作。
|
220 |
|
221 | <a name="构建" class="anchor"></a >
|
222 | # 构建
|
223 | ```
|
224 | mtl build [ iOS | Android ]
|
225 | ```
|
226 | ### 构建功能准备和功能说明:
|
227 |
|
228 | ```
|
229 | 1、 在构建之前最好先设置一下构建打包方式,构建方式支持两种方式:源码上传打包 和 git 分支打包。
|
230 | 命令: mtl set-buildType 设置构建方式。
|
231 | 2、 在构建之前需要上传android 的打包签名文件;iOS的证书和描述文件 。上传证书的网站暂时不对外开放 。android 的签名文件,iOS的证书 和描述文件 可以先发邮箱给xugangm@yonyou.com或者在微信群里@david。
|
232 | android 的签名文件需要提供签名文件 ,密码 ,别名、别名密码以及包名ID,包名ID和签名文件是绑定的。
|
233 | iOS 提供证书和签名文件 、证书的密码以及iOS的bundle ID 。bundle ID和证书是绑定的关系。
|
234 | ```
|
235 |
|
236 | + 云构建server源码上传方式,将功能开发实现的静态源码资源与project.json 文件一并打包成zip压缩文件,上传至云构建server并完成构建打包。
|
237 | + 云构建server 支持git 远程代码下载到构建服务器进行云构建。需要在构建前通过"mtl set-git" 配置好Git 仓库 、分支、账号、密码等要素。
|
238 | + 云构建结束后会在控制台显示构建日志以及构建包存放目录;
|
239 | + 云构建成功后在output目录存放构建包。
|
240 |
|
241 | ### 运行
|
242 |
|
243 | ```
|
244 | mtl start [ Android ]
|
245 | ```
|
246 | ### 安装运行说明
|
247 | + 请连接android真机设备或者模拟器。
|
248 |
|
249 |
|
250 | # git账号配置
|
251 | ```
|
252 | mtl set-git
|
253 | ```
|
254 | ### 设置git说明
|
255 | + 用于云端构建 ,在构建服务器增量更新源码。
|
256 | + 根据提示 输入git仓库URL ,分支 ,账户,密码。
|
257 |
|
258 |
|
259 | ### 设置环境变量
|
260 | ```
|
261 | mtl set-config key value
|
262 |
|
263 | //设置git的地址
|
264 | mtl set-config git-url http://git.yonyou.com/xxx/xxx/
|
265 | ```
|
266 | # FAQ
|
267 | ### 一 、为什么启动页不能替换?
|
268 |
|
269 | ```
|
270 | 答:
|
271 | 1、对修改project.json文件的startPage项没有保存成功。
|
272 | 2、修改的目录以及文件名称与实际工程的目录和文件名称不一致。
|
273 | 3、 如果是用git方式进行构建工程,修改的工程文件没有更新到git 仓库。
|
274 | ```
|
275 |
|
276 |
|
277 |
|