uniapp开发原生module插件

uniapp开发原生module插件

准备

开发

  • ide创建一个No Activity
  • 创建一个Module选择Android Library
  • 导入官方sdk 作为参考
  • 改变module build.gradle 的dependencies
  • app添加uniapp-release.arr 插件 放在app->libs下,并且改变module build.gradle 并且syn now
  • 在module 创建一个类 继承WXModule

写代码

  • TestModule

  • public class TestModule  extends WXModule {
    String NAME = "name";
    String AGE = "name" ;
    @JSMethod(uiThread = true)
        public void testText(JSONObject options, JSCallback callback) throws JSONException {
        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 > 30){
                data.put("code","不合格!");
    
            }else{
                age = (_age >0 && _age < 10) ? "0"+age : age;
                data.put("code","合格:"+"姓名"+name+"年龄"+age);
    
            }
        }else {
            data.put("code","输入无效");
        }
        callback.invoke(data);
        }
    }
    
  • 注册这个类

  • 在app src main assets 导入官方的dcloud_uniplugins.json 将包名和方法写上去,并且删掉多余的然后开始打包

打包插件并且使用

  • Gradle>testplugin>Tasks>other目录下找到assembleRelease 导出 arr文件
  • 在module>build>outputs找到arr文件,并且放入uniapp项目指定的位置
  • 然后选择制作自定义调试基座 证书随便找个网站生成安卓证书在线制作工具 (applicationloader.net)
  • 然后用选择自定义调试,真机调试

android studio 调试出现key 未配置

  • 删除原来的项目里面的assets>apps.xxxx.www文件和data>dcloud_control.xml里面的appid值
  • HB创建一个项目,然后本地打包将打包文件替换那个删除文件,并且将appid 添加上去
  • android studio 选择build>Generate signed Bundle or APK 选择apk。点击create new
  • 文件目录放在项目下面并且跟test.jks同一级。并且keystore 为后缀 。别名和密码是关键。其他无所谓
  • 然后更改build.gradle 配置文件 别名和密码和文件名要一一对应。
  • cmd进入到刚刚创建的keystore下执行keytool -list -v -keystore {your_app}.keystore得到md5,sha1,sha256
  • 然后进入HB后台管理https://dev.dcloud.net.cn/pages/app/list 项目里面,appid名字选择离线打包key,将build.gradle包名和获取sha1,md5,sha256密钥写上去得到key,替换项目里面AndroidManifest.xml里面的meta-data标签里面的android:value

苹果原生插件开发

  • 插件工程初步准备

    • 创建一个frameword工程,然后将头文件.h 删掉
    • 选中工程名 在TARGETS->Build Settings中,将 Mach-O Type 设置为 Static Library
  • 总工程准备

    • 打开 iOSSDK/HBuilder-uniPluginDemo工程目录,双击目录中的HBuilder-uniPlugin.xcodeproj
    • 将插件工程引入总工程
      • 引入工程 选中主工程名,然后点击右键选择Add Files to “HBuilder-uniPlugin” 选中准备好的工程的xcodeproj文件,然后勾选 Create folder referencesAdd to targets
      • 引入依赖 选中主工程名,在TARGETS->Build Phases->Dependencies/Link Binary With Libraries两个都点击 + ,点击add
      • 由于插件工程头文件被删了,这里没有头文件,所以还需要引入头文件.
        • 点开 HBuiler-Hello文件 能看到inc
        • 点击插件工程的.xcodeproj 找到TARGETS->Build Settings->Header Search Paths双击右侧区域打开添加窗口
        • 将inc 拖进去 那个 添加窗口 然后将模式改成recursive
  • 插件开发

    • 头文件必须 .h
    • 方法文件 .m
  • 选中工程的hbuilder-hello->supporting file ->Builder-uniPlugin-Info.plist文件右键->Open As->Source Code找到dcloud_uniplugins

    • <dict>
          <key>hooksClass</key>
          <string>填写 hooksClass 类名 </string>
          <key>plugins</key>
          <array>
              <dict>
                  <key>class</key>
                  <string>填写 module 或 component 的类名</string>
                  <key>name</key>
                  <string>填写暴露给js端对应的 module 或 component 名称</string>
                  <key>type</key>
                  <string>填写 module 或 component</string>
              </dict>
          </array>
      </dict>
      
  • 创建uniapp 工程 编写方法引入插件 uni.requireNativePlugin(“写暴露给js端对应的 module 或 component 名称”) 编写测试方法, 然后本地打包资源

  • 应用资源导入到插件开发主工程的HBuilder-Hello/Pandora/apps/ 然后更改 control.xml uni-app id 即可, 然后运行

测试

  • 创建uniapp项目,然后打包本地资源,替换apps文件
  • 再hb后台获取appkey
  • 参考manifest.json配置 配置工程的name那些 包工程 注意事件如下
    • 启动工程在这里插入图片描述

    • 当bundle identifier 出现 multiple values 时 在这里插入图片描述

    • 配置 appkey 和 插件 查看在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值