Android原生运行uniapp使用5+app创建项目时的SDK集成步骤(一)
- 前言:
博主是Android码农,所以文章是以Android为基础来集成的. - uni-app相关介绍
官网:https://uniapp.dcloud.io/
io.dcloud.EntryProxy的api文档址:https://www.dcloud.io/docs/sdk/android/ - SDK下载地址:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/103
开始集成
1:打开android studio 新建一个空项目
2:先下载SDK,需要用到里面的arr文件和一些资源文件,在HBuilder-Integrate-AS文件夹里面找到并且复制出里面的lib.5plus.base-release.aar文件到as项目里面的app/libs目录下面,并在main目录下面新建asstes/apps和asstes/data目录.如图:
3:打开app/build.gradle文件,填写相关配置并同步一下,如图:
4:在as项目里面打开AndroidManifest.xml,填写相关配置.
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" />
添加权限,这个就不多说了(博主是配置的最基础的权限.如需其他权限,按需添加即可)
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
注意事项
4-1:application一定要是io.dcloud.application.DCloudApplication.你可以直接在AndroidManifest.xml填写上,也可以自己写你的application去继承DCloudApplication.两种方式都可以.
4-2:启动策略一定要用这个io.dcloud.PandoraEntry.不然你运行出来的项目就会在启动页停留并且一直转圈圈,啥反应也没有.
<activity android:name="io.dcloud.PandoraEntry" android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale" android:hardwareAccelerated="true" android:screenOrientation="user" android:theme="@style/TranslucentTheme" android:windowSoftInputMode="adjustResize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
这里如果项目启动项比如是mainActivity,那么就让mainActivity去继承PandoraEntry这个类.把握一点就可以,只要加载uniapp或5+app就一定要用PandoraEntry的启动策略.
4-3:配置已webApp为基座的相关配置
<activity android:name="io.dcloud.PandoraEntryActivity" android:configChanges="orientation|keyboardHidden|screenSize|mcc|mnc|fontScale|keyboard" android:hardwareAccelerated="true" android:launchMode="singleTask" android:permission="com.miui.securitycenter.permission.AppPermissionsEditor" android:screenOrientation="user" android:theme="@style/DCloudTheme" android:windowSoftInputMode="adjustResize"> <intent-filter> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <action android:name="android.intent.action.VIEW" /> <data android:scheme="h56131bcf" /> </intent-filter> </activity>
这里的PandoraEntryActivity点击进去他是继承的WebAppActivity,同理,你也可以自己新建类去继承它WebAppActivity并重新.
个人的理解PandoraEntryActivity就是用来加载一个插件app的基座,类似插件化.把插件apk打包编译出来,使用PandoraEntryActivity去加载这个插件apk. 在次强调,这个个人理解,非官方.
这个为什么是这个h56131bcf.博主还没理解,查阅资料也不知道.最开始理解的是uniapp官网上面的APPid.发现填空值或些其他值也可以使用.有人知道的话,可以评论留言一下.
5:打开HBuilderX 新建项目选择5+App,然后发行.如下图
6:这里的H566800AA文件夹名称就是对应uniapp官网控制台里面的appid.将这个文件夹复制到as项目目录assets/apps/目录下面,如下图:
7:然后将官网下载的SDK里面HBuilder-Integrate-AS/app/src/main/asstes/data/dcloud_properties.xml文件和HBuilder-Integrate-AS/app/src/main/asstes/data/dcloud_control.xml文件,复制到as对应的data目录下面.
注意:
dcloud_properties.xml这个文件是hbuilderx打包的时候配置文件,可以忽略,按需配置.缺少这个文件,在原生APP里面就会提示"打包时未添加xxx模块…".具体参考:http://ask.dcloud.net.cn/article/283
dcloud_control.xml这个文件就是必须要配置的,不可缺少.其中apps标签里面对应你的官网发行的appid. appver可以随便写,不碍事.hbuilder version网上查阅资料说不可修改.但是实际修改成其他数值也可以运行.
<hbuilder version="1.9.9.71156"> <apps> <app appid="H566800AA" appver="1.0.0"/> </apps></hbuilder>
最后附上博主直接运行官方提供的SDKdemo遇到的问题解决办法:
1报错META-INF/MANIFEST.MF相关的资源包文件冲突.可以参考这篇
博主是直接删掉了demo里面libs里面一些无用的相关jar和aar包.
2:报错 Gradle DSL method not found: 'apply()相关.可以参考这篇
3:博主是Androidx环境.所以相应的一些包都要迁移到Androidx上面,具体的迁移方法百度上有很多教程.百度一下,你就知道
注意 注意 注意
此篇文章,是基于在HBuilderX里面新建5+app离线打包发行出来,在原生Android环境为壳子,使用webview方式来加载本地的资源文件.
你也可以加载网络H5地址.具体方法.官方demo里面有说明,只要你这篇文章理解了并成功运行,相信你也可以适当修改做到加载网络地址的.
下一篇,将介绍基于在HBuilderX里面新建uni-app离线打包发行出来,在原生Android环境为壳子,使用widget方式来加载本地的资源文件,不要和本篇文章概念搞混淆了.
更多相关文章
- Android开源项目第二篇——工具库篇
- Android项目Android Studio目录结构
- 【Android 系统开发】 编译 Android文件系统 u-boot 内核 并烧写
- Android Ant更新项目
- Android 进阶——Android Studio 项目结构详细述及Gradle脚本语
- Android视音频录制实现步骤(Android学习随笔八)
- Android gradle build 修改文件名称及目录
- Android小项目——简单计算器的实现
- 让 Android 可以识别BMP图片文件,且目前Android所支持的所有图片