uniapp开发android原生插件

1.下载android平台SDK

开发者须知 | uni小程序SDK

2. 解压并导入UniPlugin-Hello-AS项目到android studio

  • 点击Android Studio菜单选项File--->New--->Import Project。

  • 如果出现Android SDK路径不对问题,请在Android Studio中鼠标右键UniPlugin-Hello-AS选择Open Module Settings, 在SDK Location 中设置相关环境路径

3. 新建 module

完成后等待加载完成

4.插件开发

(1) 将uniplugin_module的build.grade的内容复制到新建的模块的build.grade中,根据需要修改compileSdkVersion等信息。

(2)在app的build.grade中添加implementation project(':模块名')

(3) 在新建的模块中新建java类extends UniModule

编写代码

 package com.cn.akiplugin.test;
 import android.util.Log;
 ​
 import com.alibaba.fastjson.JSONObject;
 ​
 import io.dcloud.feature.uniapp.annotation.UniJSMethod;
 import io.dcloud.feature.uniapp.bridge.UniJSCallback;
 import io.dcloud.feature.uniapp.common.UniModule;
 ​
 public class MainModule extends UniModule{
 ​
     @UniJSMethod(uiThread = false)
     public void register(JSONObject options, UniJSCallback jsCallback){
         Log.i("register",JSONObject.toJSONString(options));
         jsCallback.invoke(new JSONObject(){{
             put("code",0);
             put("data",123);
         }});
     }
 }

 

5. 相关配置

(1) 在app\src\main\assets\dcloud_uniplugins.json文件中增加配置 此处以moudule为例

{
       "hooksClass": "",
       "plugins": [
         {
           "type": "module",
           "name": "插件名称,如:aki-test", 
           "class": "主类,上述代码中MainModule路径 如:com.cn.akiplugin.test.MainModule"
         }
       ]
     }

6. 插件调试

(1) 打开hbuiderx 创建一个uniapp项目编写调试代码

<!-- 为了测试方便,将index.vue 修改为nvue -->
 <template>
     <view class="content">
         <view class="result">
             {{result}}
         </view>
         <view class="list">
             <text class="txt" @tap="registerData">注册...</text>
         </view>
     </view>
 </template>
 ​
 <script>
     const akiTest = uni.requireNativePlugin("aki-test");
     let that = null;
     export default {
         data() {
             return {
                 title: 'Hello',
                 result:'result:',
                 plugin:null
             }
         },
         onLoad() {
             that = this;
         },
         onShow() {
         },
         methods: {
             registerData(){
                 akiTest.register({},e=>{
                     that.result = "register:"+JSON.stringify(e);
                     uni.showToast({
                         title:JSON.stringify(e),
                         icon:"none"
                     })
                 })
             }
 ​
         }
     }
 </script>
 ​
 <style>
     .content {
         display: flex;
         flex-direction: column;
         align-items: center;
         justify-content: center;
     }
 ​
 ​
     .text-area {
         display: flex;
         justify-content: center;
     }
 ​
     .result {
         font-size: 36rpx;
         color: #8f8f94;
         width: 690rpx;
         display: flex;
         margin-top: 40rpx;
     }
     
     .list{
         width: 750rpx;
         height: auto;
         display: flex;
         flex-direction: column;
         align-items: center;
         justify-content: center;
     }
     .txt{
         width: 300rpx;
         height: 88rpx;
         line-height: 88rpx;
         border-radius: 20rpx;
         text-align: center;
         color: #fff;
         background-color: #2D9F7E;
         margin-bottom: 40rpx;
     }
 </style>
 ​

(2)打包:发行 ---> 原生app-本地打包 ---> 生成本地打包app资源

(3)将打包完的资源拷贝到android studio 项目目录下

进入android studio 项目\app\src\main\assets\apps目录下 删除原有__UNI__E文件夹

将本地打包app资源复制到此目录下

(4)修改dcloud_control.xml(文件位置app\src\main\assets\data\dcloud_control.xml)

 
<hbuilder debug="true" syncDebug="true">
 <apps>
     <app appid="此处填uniapp项目的应用标识(AppID)" appver="" />
 </apps>
 </hbuilder>
 ​

(5)配置离线打包key

  1. 进入开发者后台:开发者中心

  2. 找到前序步骤创建的项目

  3. 点击应用名称进入应用信息

  4. 点击Android云端证书

  5. 创建证书 等待完成(约几分钟) 完成后刷新

  6. 重新进入Android云端证书界面点击下载证书

  7. 点击证书详情,点击查看证书密码,记住密码以及详情数据

  8. 点击各平台信息 -- 新增

  9. 将证书详情中的SHA1复制到Android 应用签名SHA1值

  10. 将证书详情中的SHA256复制到Android 应用签名SHA256

  11. 将证书详情中的MD5复制到Android 应用签名MD5

  12. 录入完成后点击提交

  13. 点击离线打包Key列的创建,弹出页面点击创建

  14. 点击离线打包Key列查看,复制Android内容

  15. 打开Android项目的AndroidManifest,xml 文件修改如下两处

     <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         package="此处填写开发者后台创建的包名/appid/域名">
         
     <meta-data
                 android:name="dcloud_appkey"
                 android:value="此处填写上述的AppKey" />

  16. 在app下新建目录key,将6中下载的证书复制到此文件夹

  17. 修改项目项目包名app的build.grade文件

  18. 修改app的build.grade 的证书配置

     signingConfigs {
             config {
                 keyAlias '证书详情中的别名'
                 keyPassword '步骤7中复制的密码'
                 storeFile file('key/证书名称')
                 storePassword '步骤7中复制的密码'
                 v1SigningEnabled true
                 v2SigningEnabled true
             }
         }

  19. 点击Sync Now

  20. 完成后启动项目

在 uni-app 中集成 Android 原生插件需要进行如下步骤: 1. 在项目根目录下创建 `nativeplugins` 目录,用于存放 Android 原生插件。 2. 在 `nativeplugins` 目录中创建插件Android Studio 项目,例如插件名为 `myplugin`,则创建路径为 `nativeplugins/myplugin/android/`。 3. 在 `myplugin` 的 Android 项目中,将插件打包成 `.aar` 格式的库文件。 4. 将 `.aar` 格式的库文件放到 `myplugin` 的 `libs` 目录下。 5. 在 `myplugin` 的 `build.gradle` 文件中添加如下配置: ```gradle repositories { flatDir { dirs 'libs' } } android { ... defaultConfig { ... ndk { abiFilters "armeabi-v7a", "x86" } } ... buildTypes { release { ... proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation(name:'myplugin', ext:'aar') ... } ``` 在上述配置中,`repositories` 中的 `flatDir` 配置用于让 Gradle 知道 `.aar` 文件的位置,`implementation` 配置用于将插件库文件添加到项目中。 6. 在 uni-app 项目的 `manifest.json` 文件中,将插件添加到 `app-plus -> android -> plugins` 中。例如: ```json { "app-plus": { "android": { "plugins": { "myplugin": { "version": "1.0.0", "provider": "com.example.myplugin.MyPluginProvider" } } } } } ``` 在上述配置中,`version` 用于指定插件版本号,`provider` 用于指定插件的提供者类路径。 7. 在 uni-app 项目的 `pages.json` 文件中,将插件的页面添加到 `pages` 中。例如: ```json { "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页" } }, { "path": "pages/myplugin/myplugin", "style": { "navigationBarTitleText": "插件页面" } } ] } ``` 在上述配置中,`path` 用于指定插件页面的路径。 8. 在 uni-app 项目中,通过 `uni.requireNativePlugin('myplugin')` 来使用插件功能。 以上是集成 Android 原生插件到 uni-app 的步骤和注意事项,希望对你有帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值