H5P.Android
H5P.Android copied to clipboard
HTML5 Plus for Android
Android平台5+App/uni-app运行环境开源项目
重要:请使用HBuilderX2.3.7-20191024生成本地打包App资源,否则uni-app项目可能提示“运行环境版本和编译器版本不一致”,详情参考https://ask.dcloud.net.cn/article/35627
说明
此次更新梳理了工程结构,现在开发者可以直接修改引擎中的代码,自主编译出新的引擎。
如果开发者要修改本工程源码,请注意“引擎”和“插件”的分界线。 “引擎”是对5+/uni-app规范的实现,修改引擎源码可以优化对规范的实现,但不是提供规范外的功能。规范外的功能,应该做成“插件”。如需公开,则放到插件市场。 比如扫码,5+/uni-app的规范已经存在,但开发者对扫码效率不满意,提供自己更好的实现,则可以改动本源码,重新Build引擎。 而如果是想新增一个ar功能,则应该做成插件,而不是加入到本工程中。即,开发者不能自主新增5+/uni-app的js API规范。
任何一个项目的源码,吃透整体都不是一件容易的事情。一般开发者有改动需求,也多集中在一些能力或SDK的实现上。 比如扫码、视频、地图、直播、摄像头、相册、蓝牙等,以及某些界面的文字。 只关注某些能力模块,吃透和修改会更加容易。
受精力所限,某些模块,比如DCloud定制过的weex源码,还未规整好,暂时以库的方式提供,未来会提供完整源码。不过这不影响开发者修改其他源码和编译工程。
模块与源码对应关系
| 功能模块 | 源码目录 | 5+APP项目 | uni-app项目 |
|---|---|---|---|
| Audio(音频) | feature/audio | plus.audio | https://uniapp.dcloud.io/api/media/record-manager https://uniapp.dcloud.io/api/media/audio-context |
| Audio(MP3格式音频支持库) | feature/audio-mp3acc | plus.audio | |
| Barcode(二维码) | feature/barcode | plus.barcode | https://uniapp.dcloud.io/api/system/barcode |
| Bluetooth(低功耗蓝牙) | feature/bluetooth | plus.bluetooth | https://uniapp.dcloud.io/api/system/bluetooth |
| Camera(摄像头) | feature/camera | plus.camera | |
| Contacts(通讯录) | feature/contacts | plus.contacts | |
| Device(设备信息) | feature/device | plus.device | https://uniapp.dcloud.io/api/system/info |
| Downloader(文件下载) | feature/downloader | plus.downloader | https://uniapp.dcloud.io/api/request/network-file?id=downloadfile |
| Fingerprint(指纹识别) | feature/fingerprint | plus.fingerprint | https://uniapp.dcloud.io/api/other/authentication |
| Geolocation(基础定位库) | feature/geolacation | plus.geolocation | https://uniapp.dcloud.io/api/location/location |
| Geolocation(高德定位) | feature/geolacation-amap | plus.geolocation | https://uniapp.dcloud.io/api/location/location |
| Geolocation(百度定位) | feature/geolacation-baidu | plus.geolocation | https://uniapp.dcloud.io/api/location/location |
| Geolocation(系统定位) | feature/geolacation-system | plus.geolocation | https://uniapp.dcloud.io/api/location/location |
| iBeacon | feature/ibeacon | plus.ibeacon | https://uniapp.dcloud.io/api/system/ibeacon |
| IO(文件系统) | feature/file | plus.io | https://uniapp.dcloud.io/api/file/file |
| LivePusher(直播推流) | feature/media-livepusher | plus.video.LivePusher | https://uniapp.dcloud.io/api/media/live-player-context |
| Maps(高德地图) | feature/map-amap | plus.map | https://uniapp.dcloud.io/api/location/map |
| Maps(百度地图) | feature/map-baidu | plus.map | https://uniapp.dcloud.io/api/location/map |
| Messaging(短彩邮件消息) | feature/messaging | plus.messaging | |
| Navigator(运行环境信息) | feature/navigatorui | plus.navigator | https://uniapp.dcloud.io/api/system/info |
| Oauth(登录基础库) | feature/oauth | plus.oauth | https://uniapp.dcloud.io/api/plugins/login |
| Oauth(小米登录) | feature/oauth-miui | plus.oauth | https://uniapp.dcloud.io/api/plugins/login |
| Oauth(QQ登录) | feature/oauth-qq | plus.oauth | https://uniapp.dcloud.io/api/plugins/login |
| Oauth(新浪微博登录) | feature/oauth-sina | plus.oauth | https://uniapp.dcloud.io/api/plugins/login |
| Oauth(微信登录) | feature/oauth-weixin | plus.oauth | https://uniapp.dcloud.io/api/plugins/login |
| Payment(支付基础库) | feature/payment | plus.payment | https://uniapp.dcloud.io/api/plugins/payment |
| Payment(支付宝支付) | feature/payment-alipay | plus.payment | https://uniapp.dcloud.io/api/plugins/payment |
| Payment(微信支付) | feature/payment-weixin | plus.payment | https://uniapp.dcloud.io/api/plugins/payment |
| Push(推送基础库) | feature/aps | plus.push | https://uniapp.dcloud.io/api/plugins/push |
| Push(个推推送) | feature/aps-igexin | plus.push | https://uniapp.dcloud.io/api/plugins/push |
| Push(个推推送-GooglePlay专版) | feature/aps-igexin-gp | plus.push | https://uniapp.dcloud.io/api/plugins/push |
| Push(UniPush推送) | feature/aps-unipush | plus.push | https://uniapp.dcloud.io/api/plugins/push |
| Push(UniPush推送-GooglePlay专版) | feature/aps-unipush-gp | plus.push | https://uniapp.dcloud.io/api/plugins/push |
| Push(小米推送) | feature/aps-xiaomi | plus.push | https://uniapp.dcloud.io/api/plugins/push |
| Share(分享基础库) | feature/share | plus.share | https://uniapp.dcloud.io/api/plugins/share |
| Share(QQ分享) | feature/share-qq | plus.share | https://uniapp.dcloud.io/api/plugins/share |
| Share(新浪微博分享) | feature/share-sina | plus.share | https://uniapp.dcloud.io/api/plugins/share |
| Share(微信分享) | feature/share-weixin | plus.share | https://uniapp.dcloud.io/api/plugins/share |
| Speech(语音识别基础库) | feature/speech | plus.speech | https://uniapp.dcloud.io/api/plugins/voice |
| Speech(百度语音识别) | feature/speech_baidu | plus.speech | https://uniapp.dcloud.io/api/plugins/voice |
| Speech(讯飞语音识别) | feature/speech_ifly | plus.speech | |
| SQLite(数据库) | feature/sqlite | plus.sqlite | |
| Statistic(友盟统计) | feature/statistics-umeng | plus.statistic | |
| Uploader(文件上传) | feature/uploader | plus.uploader | https://uniapp.dcloud.io/api/request/network-file?id=uploadfile |
| VideoPlayer(视频播放) | feature/media | plus.video.VideoPlayer | https://uniapp.dcloud.io/api/media/video |
| XHR(网络请求) | feature/xhr | plus.net | https://uniapp.dcloud.io/api/request/request?id=request |
| nvue原生组件: map(高德地图) | feature/weex_amap | 不支持 | https://uniapp.dcloud.io/component/map |
| nvue原生组件: barcode(二维码) | feature/weex_barcode | 不支持 | https://uniapp.dcloud.io/component/barcode |
| nvue原生组件: live-pusher(直播推流) | feature/weex_livepusher | 不支持 | https://uniapp.dcloud.io/component/live-pusher |
| nvue原生组件: video视频 | feature/weex_videoplayer | 不支持 | https://uniapp.dcloud.io/component/video |
| nvue原生组件: canvas | feature/weex_gcanvas | 不支持 | https://github.com/dcloudio/NvueCanvasDemo |
源码配置
- 文件夹中存在build.gradle文件的模块
将源码clone到本地,复制对应文件夹到所在项目的根目录,在setting.gradle中加入module配置,rebuild即可。以高德地图为例,将本工程clone到本地,复制map-amap到项目的根目录,打开setting.gradle,在最底部添加include "map-amap",重新运行即可,如需添加到主工程中,打开主工程的build.gradle文件,在dependencies节点中添加implementation project(path: ':map-amap')即可。
- 文件夹中不存在build.gradle文件的模块
如果模块中不存在build.gradle文件,可以将文件夹中的目录直接拷贝到主项目中。例如xhr模块,可以将src下的文件夹拷贝到主项目的src下,如果存在其他文件夹(如libs),直接将文件夹下的内容拷贝到同名文件夹下即可。
参考HBuilder-SourceTool-as项目
项目配置及打包
clone HBuilder-SourceTool-as项目到本地,直接运行即可。如果运行uni-app时出现问题,可参考:https://ask.dcloud.net.cn/article/35139。
安卓打包配置参考:https://www.cnblogs.com/lsdb/p/9337342.html。
许可协议
本工程大部分源码开源,使用者可以自主修改已公开的源码,编译新版本。 但注意:
- 您不能破解、反向工程、反编译本项目下未开源的各种库文件。
- 未经DCloud书面许可,您不得利用本项目的全部或部分源码、文件来制作与DCloud根据本项目提供的服务相竞争的产品,例如提供自主品牌的开发者服务。
- DCloud所拥有的知识产权,包括但不限于商标、专利、著作权,并不发生转移或共享。
- 您基于本项目,自主开发的代码及输出物,其知识产权归属您所有。除非您通过提交pull request的方式将自己的代码开源。
- 如果您没有违反本许可协议,那么你使用本项目将无需为DCloud支付任何费用。