前言
据广大用户的需求,需要把我们anyRTC的SDK,封装到uni-app来使用,并且实现音视频通话。这边文章图文讲解一下怎么封装原生插件,并且在下一章uni-app实现音视频通话。
1.uni-app是什么?
一个使用Vue.js开发所有前端应用框架,开发者编写一套代码,可发布到ios、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台。
如果你还没有了解uni-app是什么:点击这里:这篇文章举例说明。
2.uni-app的特点
1、跨平台更多
- 真正做到“一套代码、多端发行”!
- 条件编译:优雅的在一个项目里调用不同平台的特色功能!
2、运行体验好
- 组件、api与微信小程序一致
- 兼容weex原生渲染
3、通过技术栈,学习成本低
- vue的语法、微信小程序的api
- 内嵌mpvue
4、开放生态,组件更丰富
5、支持通过npm安装第三方包
6、支持微信小程序自定义组件及SDK
7、兼容mpvue组件及项目
8、App端支持和原生混合编码
9、DCloud将发布插件市场
3.uni-app封装原生插件
3.1 Android离线SDK下载:
点击下载,两个SDK均可。
下载完成,解压备用:
3.2 新建Android项目
打开Android Studio,建立一个No Activity项目。在菜单栏选择File>New>New Project
然后Next:填写项目名,包名,已经API Level。
然后Finish,为了更好的使用,我们把它转到Project视图。接下来创建开发的模块(Module)
点击File>New>New Module.
然后选择Android Library,点击Next:
自定义Library名 和包名,点击Finish
创建完毕视图如下:
接下来打开testplugin项目里的build.gradle,将原生的dependencies下默认生成的依赖注释掉,添加uni-app所需库的依赖:
compileOnly "com.android.support:recyclerview-v7:28.0.0"
compileOnly "com.android.support:support-v4:28.0.0"
compileOnly "com.android.support:appcompat-v7:28.0.0"
implementation 'com.alibaba:fastjson:1.1.46.android'
implementation 'com.facebook.fresco:fresco:1.13.0'
复制代码
添加完成如下图所示:
另外把导入的uniapp-release.aar插件,它是扩展module主要依赖库
回到刚刚创建的testplugin的build.gradle中,接下来进行导入aar需要的配置操作:
添加: 放在android{}外
repositories {
flatDir {
dirs 'libs'
}
}
复制代码
然后在dependencies内添加:
compileOnly fileTree(dir: '../app/libs', include: ['uniapp-release.aar'])
复制代码
添加完毕,如下图:
然后 同步 Sync Now!
3.3 原生插件的开发
以扩展Module为例,如图创建类TestModule:
Module扩展注意事项:
写一个小demo:
import android.util.Log;
import com.alibaba.fastjson.JSONObject;
import com.taobao.weex.annotation.JSMethod;
import com.taobao.weex.bridge.JSCallback;
import com.taobao.weex.common.WXModule;
public class TestModule extends WXModule{
String NAME="name";
String AGE ="age";
@JSMethod(uiThread = true)
public void testText(JSONObject options, JSCallback callBack){
Log.e("TestModule", "成功调用!" );
String name =options.getString(NAME);
String age =options.getString(AGE);
JSONObject data =new JSONObject();
if (name !=null && !name.isEmpty() && age !=null && !age.isEmpty()){
int _age =Integer.parseInt(age);
if (_age<0 || _age