制作原生插件-android
uni-app 2019-07-31 11:00:47

1、 按照官方的SDK集成一遍

SDK下载:http://ask.dcloud.net.cn/article/103

将官方SDK down下来打开项目后,拉取gradle失败,报错Error:Could not install Gradle distribution from 'https://services.gradle.org/distributions/

可以自己从官方地址:https://services.gradle.org/distributions/ 下载,配置本地资源地址

设置如下:

1.png

 

报错内容:Installation did not succeed.

The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDER

 

 

 

2、uniapp项目引入原生项目中,配置相关参数

官方教程:https://ask.dcloud.net.cn/article/13232

https://ask.dcloud.net.cn/article/508

 

修改appid

(1)Project:app - src - main - assets - data - dcloud_control.xml

Java Code复制内容到剪贴板
  1. <hbuilder>  
  2. <apps>  
  3.     <app appid="__UNI__E9BF158" appver="2.4.8"/>  
  4. </apps>  
  5. </hbuilder>  

 

(2)Project:app - build.gradle

搜 applicationId

Java Code复制内容到剪贴板
  1. applicationId "io.dcloud.UNIE9BF158"  

 

 修改app包名

(3)Project:app - src - main - AndroidManifest.xml

Java Code复制内容到剪贴板
  1. package="io.dcloud.UNIE9BF158"  

 

 

 

 

修改app包名

(1) Android:app - manifests - AndroidManifest.xml

修改package:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="io.dcloud.UNIE9BF158">

(2) Project :app - src -main - assets - apps

新增文件夹__UNI__E9BF158,把hbx生成的app本地打包目录www拖进去

(3) Project :app - src -main - assets - data - xxxx_control.xml

修改appid和appver:<app appid="__UNI__E9BF158" appver="1.0.0"/>

Tips:其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致

(4) Project :app - build.gradle

修改:applicationId "io.dcloud.UNIE9BF158"

(5) Project :app - src - main - res - values - strings.xml

修改app_name:HBuilder-Hello 改为自己的app名称

 

3、原生插件引入原生项目中 / 创建新插件(如果使用自定义基座来调试android,只要插件包有变动,就必须重新打个自定义基座,插件才生效,有次数限制)

https://ask.dcloud.net.cn/article/35416

看一下第五步

Mac版Android Studio自动添加依赖,options + 回车

 

五、配置插件运用到uni-app中

setting.gradle 添加插件名称

include ':app', ':uniplugin_jpushim'

 

app -> build.gradle 添加

// 添加极光IM插件
implementation project(':uniplugin_jpushim')

 


 

开发中

可以先使用官方的alert插件来跑一下程序,比如加一个toast来测试方法是否执行:

C/C++ Code复制内容到剪贴板
  1. @JSMethod(uiThread = true)  
  2. public void yp(){  
  3.     Toast.makeText(mWXSDKInstance.getContext(),"我是友好的弹出框", Toast.LENGTH_SHORT).show();  
  4. }  

 

打印日志,可以在android studio里打印日志,并在Logcat中查询日志

C/C++ Code复制内容到剪贴板
  1. System.out.println("jpush 执行init方法");  

 

 打包成aar

1.jpg

 

 

复制完整的类名:

2.jpg

 

 

新建插件开发目录:

1、点击Android Studio 菜单项 File--->New--->New Module,选择Android Library

2、配置:

Application / Library name: uniplugin_YYJPushIM

Package name:uni.dcloud.io.uniplugin_yyjpushim

 

 

算了,拿官方的richalert改吧!

 

1、修改包名

项目下 Project :app - build.gradle 

WX20200627-194758@2x.png

Java Code复制内容到剪贴板
  1. // 添加uni-app插件  
  2. implementation project(':uniplugin_richalert')  
  3.   
  4. // 修改为:  
  5. implementation project(':uniplugin_jpushim')  

批量替换:把richalert换成jpushim

 

app - src - main - assets - dcloud_uniplugins.json:

修改nativePlugins :

Java Code复制内容到剪贴板
  1. {  
  2.   "nativePlugins": [  
  3.     {  
  4.       "hooksClass""uni.dcloud.io.uniplugin_jpushim.JPushIM_AppProxy",  
  5.       "plugins": [  
  6.         {  
  7.           "type""module",  
  8.           "name""YOYO-JPushIM",  
  9.           "class""uni.dcloud.io.uniplugin_jpushim.JPushIMWXModule"  
  10.         }  
  11.       ]  
  12.     }  
  13.   ]  
  14. }  

 

将插件目录拷贝到项目根目录下,与app目录同级,将第三方依赖资源库复制到 app / libs目录下

 

uniplugin_richalert - src - main - res - values - string.xml:

Java Code复制内容到剪贴板
  1. <resources>  
  2.     <string name="app_name">uniplugin_JPushIM</string>  
  3. </resources>  

 

Project :settings.gradle

Java Code复制内容到剪贴板
  1. include ':app'':uniplugin_jpushim'  

 

 

添加依赖包:

app - build.gradle

Java Code复制内容到剪贴板
  1. implementation 'cn.jiguang.sdk:jmessage:2.8.2'  // 此处以JMessage 2.9.0 版本为例。  
  2. implementation 'cn.jiguang.sdk:jcore:1.2.7'  // 此处以JCore 2.0.0 版本为例。  

添加完依赖后,需要同步一下:

右上角,点击:

QQ截图20191021134620.jpg

 

这里注意点,导入第三方类库,两种方式,1、手动集成;2、自动集成;

1、手动导入SDK,注意是在工程的libs中,与插件的libs中都需要拷贝.jar包,然后再clean,即可。

2、自动集成:在工程的app - build.gradle添加以后,还要在插件的 build.gradle添加

Java Code复制内容到剪贴板
  1.     compileOnly 'cn.jiguang.sdk:jmessage:2.8.2'  // 此处以JMessage 2.9.0 版本为例。  
  2.     compileOnly 'cn.jiguang.sdk:jcore:1.2.7'  // 此处以JCore 2.0.0 版本为例。  

 

 


 

常见问题:

1、报错:程序包com.taobao.weex.bridge不存在

Project:app / libs 缺少uniapp-release.aar 

详情见:https://nativesupport.dcloud.net.cn/NativePlugin/course/android?id=%e6%8f%92%e4%bb%b6%e5%bc%80%e5%8f%91

 

 

 

 

 

本文来自于:http://www.yoyo88.cn/study/uniapp/445.html

Powered by yoyo苏ICP备15045725号