积木式移动互联网App Hybrid框架-modular的使用(1)
积木式移动互联网App框架——modular,它是一个轻量级的Hybird型的框架,本文讲解它的使用。
开发环境
- android studio 3.0+,并下载安装android SDK、gradle等等
- JDK 1.8 +
- xcode 10.0 +
- Sublime Text 3.0+
兼容版本
- android 支持版本6.0 +
- iOS 支持版本 10.0 +
模板工程
iOS模板工程
打开上述下载的模板工程的modular.xcodeproj,模板工程目录结构如图:
config是配置文件:
- 命名以Default开头的png 是一系列启动图片
- modular-plugin-iOS.xml 是JS的Native插件接口白名单
- global.properties 是App的配置,目前只需要关注配置项:
// 生产地址
online.addr=http://xxx.xxx.xxx.xxx
它是应用程序加载的前端URL地址,其他的配置项后面博客会讲解。
类
- AppDelegate iOS标准的应用程序代理类,在入口接口里我们已经编写好一个直接调用modular框架里WMWKWebViewController。后续可自行根据需求,增加应用级别的逻辑,例如,Push等等
- WMWKWebViewExtendPlugin 我们预留一个用于自行扩展modular框架中未实现的能力的扩展插件类
框架包
modular.framework是我们框架的静态库。
android模板工程
打开android studio,导入上述下载模板工程里modular-android,工程目录结构如图:
打包脚本
buildScript-adr 打包脚本,后续讲解打包过程。
App 配置文件
assets
- global.properties App配置,目前只需要关注配置项:
// 生产地址
online.addr=http://xxx.xxx.xxx.xxx
它是应用程序加载的前端URL地址,其他的配置项后面博客会讲解。
- modular-plugin-adr.xml JS的Native插件接口白名单
res
在以mipmap开头的文件夹里,放置对应分辨率的启动图片startpage.png;
类
- LaunchActivity结合res/style.xml实现一个闪屏页面;
- WMWebViewExtendPlugin 我们预留一个用于自行扩展modular框架中未实现的能力的扩展插件类。
框架包
modular.jar是我们框架的jar包。
编译打包
iOS ipa打包
在iOS 模板工程下的buildScript-iOS下,如图:
build.sh编译打包脚本,请自行修改下面3个参数:
# 应用targetName,一般应用的根目录的名称
targetName="xxx"#当前证书的ID标识
code_sign_identity="iPhone Distribution: xxx"#证书签名文件名
code_sign_profile="xxx.mobileprovision"
- 在模板工程中配置好苹果证书;
- 打开Mac 系统中Terminal App,进入到builScript-iOS目录下,输入打包命令:./build.sh 。
- 命令执行完毕之后,会在buildScript-iOS目录下新增一个ipa目录存放ipa文件。
上述脚本是基于苹果299的企业版证书,对于苹果99证书,可以参考一下另外一个博文。
android apk打包
在android 模板工程下的buildScript-adr下,如图:
- build.sh编译打包脚本
- buildConfig.gradle gradle脚本,主要就是一个copy的task
在android studio 的Terminal 下输入打包命令:./buildScript-adr/build.sh,命令执行完毕之后会在buildScript-adr目录下新增一个apk目录存放apk文件。
注意:在app的build.gradle中,我们增加如下配置:
// 请根据xxx.jks证书情况配置
signingConfigs {config {keyAlias 'xxx'storeFile file('xxx.jks')keyPassword '******'storePassword '******'v1SigningEnabled truev2SigningEnabled true}
}
// 在buildTypes中增加签名配置
buildTypes {release {// 采用上面配置的signingConfig.config签名signingConfig signingConfigs.config …}
}
HTML
我们考虑可移植性和兼容性,采用标准Javascript编写Javascript桥。因此,无论你当前的Html工程基于什么框架,例如,vue, nodejs等等,都可以使用,仅在需要调用Native能力的Html中引入modular框架提供modular-core.js,即在html的head或者body里引入
<script type="text/javascript" src="modular-core.js"></script>
下载模板工程
基于开箱即用的设计原则,我们提供一个框架模板工程,可自行从gitHub上下载模板工程,可自行修改工程名称以及target名称。
gitHub:https://github.com/wuyoujian0313/modular-proj
小结
此时模板工程就已经具备了Hybrid能力,在模板工程的配置文件modular-plugin-iOS.xml或modular-plugin-adr.xml中配置封装在modular框架中的Native端能力接口,后续博客会详细讲解Native端能力接口的使用。
积木式移动互联网App Hybrid框架-modular的使用(1)相关推荐
- 积木式移动互联网App Hybrid框架-modular
你好,欢迎阅读本系列博文! 自09年初做Windows Mobile研发起,就踏上移动互联网平台App不归路了(题外话:何为Windows Mobile,它由微软打造,跟当年红极一时诺基亚智能手机系统 ...
- 积木式移动互联网App Hybrid框架-modular源码解析(1)
现在解析一下modular的核心源码,代码在上一个博文中给出了git下载地址.如今都在喊大前前端研发,但HTML要依赖Native端的能力还是需要对应的原生研发,本人开源了框架代码,也希望有志同道合的 ...
- 积木式编程——自制app点灯
技术:51单片机.串口.蓝牙.积木式编程 概述 这里简单入门了积木式编程,做了个简易APP用来开灯关灯,当然你可以继续添加内容,可以做智能家居.遥控汽车和环境监控等等. 详细 代码下载:http:// ...
- 58同城iOS客户端Hybrid框架探索
作者:杜艳新,刘文军.58同城iOS高级研发工程师,专注于App Hybrid框架的架构研发,主导了58同城App的Hybird混合研发的系统架构以及研发. 责编:唐小引,欢迎技术投稿.约稿.给文章纠 ...
- 58 同城 iOS 客户端 Hybrid 框架探索
[CSDN 编者按]58 同城 iOS 客户端的 Hybrid 框架在最初设计和演进的过程中,遇到了许多问题.为此,整个 Hybrid 框架产生了很大的变化.本文作者将遇到的典型问题进行了总结,并重点 ...
- 制作APP?零编程积木式搭建,在应用公园就是真么简单
由于近年来移动互联网用户的爆发式增长,手机APP的开发和制作成了许多企业迫在眉睫的需求.使用自助制作工具建设APP,不失为一种方便快捷的途径.如果不需要程序员和设计师就可以简单快速地完成手机APP制作 ...
- 产品经理必了解的3个app技术框架
在现在越来越多的app,你可以看到有一些app中是混着网页加载的(我们俗称的为H5)但要注意的web 前端开发是包含着h5的.web前端开发还包括了许多内容,比如说后台html,css,div等都是属 ...
- python积木式编程_TurnipBit—MicroPython开发板:从积木式编程语言开始学作小小创客...
编程.建模.制做动画和游戏--这些当初咱们默认只有成年人玩得转的事情,如今早已经被无数小孩子给颠覆甚至玩出新境界了.热爱科技和动手的"创客"(Maker)如今在全世界都煊赫一时.今 ...
- springboot+基于vue的响应式代购商城APP的设计与实现 毕业设计-附源码191654
Springboot响应式代购商城APP 摘 要 近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用.简单的流程.便捷可靠的支付方式.快捷 ...
最新文章
- 笔记本右侧手滑板Synaptics
- freeswitch模块之event_socket
- java rgb hsl_RGB、HSB、HSL 互相转换算法
- setuptools与distutils的区别
- Day14作业 一、完成下面的要求? 	先创建一个工人类,属性:姓名,年龄,工资
- Linux下编译build的命令,【linux基础】20、内核的编译
- C# 5.0新加特性
- socket通信和异常处理札记
- 前端学习(2479):接口文档使用
- 【整理】Server.Variables属性大全
- C语言输出规定长度的整数,不够位数前面补零
- POJ--3268 Silver Cow Party(最短路)
- git快速入门之一:创建本地仓库并同步到远程
- 电脑常用良心软件推荐!!!
- microsoftedge无限弹出_Win10升级之后edge浏览器总是弹出欢迎页面解决方法
- C#XtraReport学习之二 winform打印按钮
- Oracle实现US7ASCII到ZHS16GBK数据迁移正常显示中文
- easyui treegrid php,JQuery EasyUI TreeGrid控件的使用
- 华硕vm510l装固态硬盘_华硕VM510L拆机换固态硬盘
- ThinkPHP中vendor()方法导入第三方类库的用法!ThinkPHP 3.2 vendor()方法的深入研究!
热门文章
- 【报告笔记】大数据与人工智能的伦理挑战
- thinkphp6+layui BBS社区论坛系统源码分享,支持适配移动端附截图
- 裸金属服务器性能描述,裸金属服务器性能描述
- vb酒店管理信息系统
- docker-compose 搭建habor
- 音视频基础学习之【01.基于ffmpeg的简单播放器demo实现】
- Mysql 错误 1273 Unknown collation
- python存储-Python数据存储之 h5py详解
- 如何将ai转换为html,如何用AI输出html网页?AI画的图片-存储为web及所有格式-放到网页有锯齿?...
- 自动清理源计算机设备驱动,win10系统删除过期驱动程序设备的设置技巧