文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

uniapp导入(android)jar

2023-09-10 13:21

关注

官方文档:开发者须知 | uni小程序SDK

1.下载对应示例代码及工具

2.项目准备(将下载的项目SDK解压导入Android Studio)

点击android-project这样可以看到其他文件

示例删除

 

把插件的注册都删了

3.新建module(用于导入jar并生成插件提供uniapp使用)

 

 创建完会报错

 

 找到module下的AndroidManifest.xml添加package="java下的包路径"

 注释 namespace点击try again,发现成功了

libs下可以放需要导入的jar

module-->build.gradle下引用app的jar和自己导入的jar

compileOnly fileTree(include: ['uniapp-v8-release.aar'], dir: '../app/libs')implementation fileTree(dir: '../uniplugin_scan/libs', include: ['*.aar', '*.jar'], exclude: [])

 导入依赖:

compileOnly 'androidx.recyclerview:recyclerview:1.2.1'compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'compileOnly 'com.alibaba:fastjson:1.1.46.android'

点击右上角 Sync Now刷新依赖

4.编写插件类

 ScanModule

package com.example.uniplugin_scan;import android.content.Context;import com.alibaba.fastjson.JSONObject;import com.huayusoft.barcodeadmin.IScanCallBack;import com.raindi.scanner.RDManager;import com.taobao.weex.bridge.JSCallback;import io.dcloud.feature.uniapp.annotation.UniJSMethod;import io.dcloud.feature.uniapp.common.UniModule;public class ScanModule extends UniModule {            @UniJSMethod(uiThread = true)    public void tips(JSONObject options, JSCallback callback){        if(callback != null) {            JSONObject data = new JSONObject();            data.put("name", "调用插件成功");            //回调返回            callback.invoke(data);        }    }        @UniJSMethod(uiThread = true)    public void scan(JSONObject options, JSCallback callback){        if(callback != null) {            JSONObject data = new JSONObject();            //导入jar包的回调定义            IScanCallBack callback1 =new IScanCallBack.Stub() {                @Override                public void onSuccess(final String bean) {                    //接收条码服务返回的数据                    data.put("name", bean);                    System.out.println(bean);                    callback.invoke(data);                }                @Override                public void onFiled(int errorCode) {                    //条码服务出错的数据                    data.put("name", "服务出错");                }            };            //创建扫描对象            RDManager instance = RDManager.getInstance();            //获得窗口            Context context = this.mWXSDKInstance.getContext();            //绑定扫描            boolean b = instance.bindScannerService(context,callback1 );            //初始化扫描            instance.init(callback1);            //开启电源            instance.powerOn();            //开始扫描            instance.doScan();        }    }    }

插件注册app--》src--》asset-->dcloud_uniplugins.json

{  "nativePlugins": [    {      "plugins": [        {          "type": "module",          "name": "Uni-Plugin-Scan",          "class": "com.example.uniplugin_scan.ScanModule"        }      ]    }  ]}

 依赖添加插件 app--》build.gradle

 implementation project(':uniplugin_scan')

 5.编写Uniapp

新建一个项目选择普通模板

编写pages下的index.vue

6.生成本地资源放入android项目中

 找到资源文件

 

 复制到apps下

 7.注册Android Key

这边本人是看这边博客的,注册key的照着一步步写就可以了

uni-app官方demo(Android sdk):未配置appkey或配置错误。(uni原生插件开发,Android插件开发)_break妖的博客-CSDN博客_未配置appkey或配置错误

本人的配置 ,配置完点击右上角 Sync Now刷新gradle (如出现未配置app key,请检查下面这几处填写是否有误!!!!!)

 签名填写

 

8.运行

插上数据线连接手机,手机设置usb调试允许,android studio会识别到设备,这样就可以在android直接运行了

 如果出现报错请检查build.gradle配置(特别是版本和依赖),下面是本人的build.gradle配置

app build:gradle

apply plugin: 'com.android.application'android {    compileSdkVersion 33    buildToolsVersion '28.0.3'    defaultConfig {        applicationId "com.android.UniPlugin"        minSdkVersion 21        targetSdkVersion 33 //建议此属性值设为21 io.dcloud.PandoraEntry 作为apk入口时   必须设置 targetSDKVersion>=21 沉浸式才生效        versionCode 1        versionName "1.0"        multiDexEnabled true        ndk {            abiFilters 'x86','armeabi-v7a'        }        compileOptions {            sourceCompatibility JavaVersion.VERSION_1_8            targetCompatibility JavaVersion.VERSION_1_8        }    }    signingConfigs {        config {            keyAlias '__uni__****请填写自己的别名'            keyPassword 'key的密码'            storeFile file('对应的签名文件')            storePassword 'stroe密码'            v1SigningEnabled true            v2SigningEnabled true        }    }    buildTypes {        release {            signingConfig signingConfigs.config            zipAlignEnabled true            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            signingConfig signingConfigs.config            zipAlignEnabled true            minifyEnabled true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    //使用uniapp时,需复制下面代码        aaptOptions {        additionalParameters '--auto-add-overlay'        //noCompress 'foo', 'bar'        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"    }    }repositories {    flatDir {        dirs 'libs'    }}dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation fileTree(dir: 'libs', include: ['*.aar'])    implementation 'androidx.legacy:legacy-support-v4:1.0.0'    implementation 'androidx.appcompat:appcompat:1.0.0'        implementation 'androidx.recyclerview:recyclerview:1.0.0'    implementation 'com.facebook.fresco:fresco:1.13.0'    implementation "com.facebook.fresco:animated-gif:1.13.0"        // 基座需要,必须添加    implementation 'com.github.bumptech.glide:glide:4.9.0'    implementation 'com.alibaba:fastjson:1.1.46.android'    // 添加uni-app插件    implementation project(':uniplugin_scan')//    implementation project(':uniplugin_component')//    implementation project(':uniplugin_module')//    implementation project(':uniplugin_richalert')}

 module(uniplugin_scan) build.gradle

plugins {    id 'com.android.library'}android {    compileSdk 29//    namespace 'com.example.uniplugin_scan'//    compileSdkVersion 32    defaultConfig {        minSdkVersion 19        targetSdkVersion 33        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"        consumerProguardFiles "consumer-rules.pro"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_8        targetCompatibility JavaVersion.VERSION_1_8    }    buildToolsVersion '28.0.3'}dependencies {    implementation 'androidx.appcompat:appcompat:1.4.1'    implementation 'com.google.android.material:material:1.5.0'    testImplementation 'junit:junit:4.13.2'    androidTestImplementation 'androidx.test.ext:junit:1.1.3'    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'    //必须导入的依赖    compileOnly 'androidx.recyclerview:recyclerview:1.1.0'    compileOnly 'androidx.legacy:legacy-support-v4:1.0.0'    compileOnly 'com.alibaba:fastjson:1.1.46.android'    //导入jar    compileOnly fileTree(include: ['uniapp-v8-release.aar'], dir: '../app/libs')    implementation fileTree(dir: '../uniplugin_scan/libs', include: ['*.aar', '*.jar'], exclude: [])}

通过对比修改,不出意外是可以运行的。

手机运行成功截图

扫描

9.将andorid项目打包用uniapp调用

 

 在项目文件夹里搜索aar

把aar复制到下面的android文件夹下

 

 配置package.json(用记得删注释,这个不能写错,写错会导致后面插件识别不到)

{"name": "AndroidScan", //插件名    "id": "Uni-Plugin-Scan", //id    "version": "0.0.2",    "description": "安卓条码扫描",    "_dp_type":"nativeplugin",    "_dp_nativeplugin":{        "android": {            "plugins": [                {                    "type": "module",                    "name": "Uni-Plugin-Scan", //插件名称一般和id相同或以id为前缀                    "class": "com.example.uniplugin_scan.ScanModule" //andorid插件对应类的路径                }            ],"integrateType": "aar" //类型分为jar和aar}}}

插件配置

 

 10.uniapp运行

自定义基座---》直接打包

 

 运行就行了,如果没有设备刷新试试,还是没有请检查手机是否连接上电脑,是否开启可调试,是否是文件传输。

 运行成功!!!和上面的android运行结果是一样的,这里就不截图了。

更多细节请参考官方文档:开发者须知 | uni小程序SDK

来源地址:https://blog.csdn.net/ysfengshu/article/details/128189362

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯