魏晓东 发表于 2024-11-12 05:45:10

uniapp开发android原生插件

1.下载android平台SDK
   开发者须知 | uni小程序SDK
2. 解压并导入UniPlugin-Hello-AS项目到android studio

   https://i-blog.csdnimg.cn/blog_migrate/611da7598b9fe7166579498c89806a68.png

[*] 点击Android Studio菜单选项File--->New--->Import Project。
https://i-blog.csdnimg.cn/blog_migrate/03917e37f783b9097caf0c42d3515717.png

[*] 如果出现Android SDK路径不对问题,请在Android Studio中鼠标右键UniPlugin-Hello-AS选择Open Module Settings, 在SDK Location 中设置相关环境路径
[*]https://i-blog.csdnimg.cn/blog_migrate/509938d3710cd891c25be5d3594fbfdf.pnghttps://i-blog.csdnimg.cn/blog_migrate/6834a7de2115c20a944a5c390eab0bdc.png
3. 新建 module

   https://i-blog.csdnimg.cn/blog_migrate/e455c01ca982bb70563cf0dd6d7b5b5d.pnghttps://i-blog.csdnimg.cn/blog_migrate/9eb1e53c8c9812b5e51f9864975705b1.png完成后等待加载完成
4.插件开发

(1) 将uniplugin_module的build.grade的内容复制到新建的模块的build.grade中,根据需要修改compileSdkVersion等信息。
(2)在app的build.grade中添加implementation project(':模块名')
https://i-blog.csdnimg.cn/blog_migrate/50b735251528a46bb6b32545e155752a.png
(3) 在新建的模块中新建java类extends UniModule
https://i-blog.csdnimg.cn/blog_migrate/bc8fbea90b074ea0007a1d3b0617b546.png

编写代码
 
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资源复制到此目次下
https://i-blog.csdnimg.cn/blog_migrate/f359bf5dfa3a8203188c6c89f9edae33.png(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>  
​ https://i-blog.csdnimg.cn/blog_migrate/a199e1db097a9ad01aa6a07d09010ec7.png
(5)配置离线打包key
   
[*] 进入开发者后台:开发者中心
[*] 找到前序步骤创建的项目
[*] 点击应用名称进入应用信息
[*] 点击Android云端证书
[*] 创建证书 等待完成(约几分钟) 完成后刷新
[*] 重新进入Android云端证书界面点击下载证书
[*] 点击证书详情,点击查看证书暗码,记住暗码以及详情数据
[*] 点击各平台信息 -- 新增
[*] 将证书详情中的SHA1复制到Android 应用署名SHA1值
[*] 将证书详情中的SHA256复制到Android 应用署名SHA256
[*] 将证书详情中的MD5复制到Android 应用署名MD5
[*] 录入完成后点击提交
[*] 点击离线打包Key列的创建,弹出页面点击创建
[*] 点击离线打包Key列查看,复制Android内容
https://i-blog.csdnimg.cn/blog_migrate/0f3eb2bd8cf844d600103d50b66a4bdc.png
[*]
[*] 打开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" />
[*] 在app下新建目次key,将6中下载的证书复制到此文件夹
[*] 修改项目项目包名app的build.grade文件
https://i-blog.csdnimg.cn/blog_migrate/7fb55ce4b9cb474d5107194ef069899e.png
[*] 修改app的build.grade 的证书配置
 
signingConfigs { 
 
 
 
 
config { 
 
 
 
 
 
 
keyAlias '证书详情中的别名' 
 
 
 
 
 
 
keyPassword '步骤7中复制的暗码' 
 
 
 
 
 
 
storeFile file('key/证书名称') 
 
 
 
 
 
 
storePassword '步骤7中复制的暗码' 
 
 
 
 
 
 
v1SigningEnabled true 
 
 
 
 
 
 
v2SigningEnabled true 
 
 
 

 
}
[*] 点击Sync Now
[*] 完成后启动项目

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: uniapp开发android原生插件