uniapp 原生安卓開發(fā)插件(module),以及android環(huán)境本地調(diào)試
1、開發(fā)前景
由于uniapp 框架的局限先,有很多功能不能如原生android開發(fā)使用順暢,因此,需要使用插件進(jìn)行輔助,再由uniapp引入插件,使得功能完善。廢話不多說,直接上教程!覺得有用的麻煩點個贊吧!
2、準(zhǔn)備工作
- uniapp 項目(也就是你自己的項目)
- 下載 安裝JDK (java的JDK)jdk1.8
- 下載 安裝 android studio (csdn下載),官網(wǎng)下載 android studio(官網(wǎng)下載需要翻墻、安裝的時候也是需要翻墻的,公司的網(wǎng)絡(luò)最好能夠訪問外網(wǎng),不然會下載不了sdk(博主也是弄了很久))
-
下載解壓 uniapp 離線SDK (App 離線SDK)
到此準(zhǔn)備工作結(jié)束
3、android 導(dǎo)入 app離線SDK(第二點4下載的壓縮包)
-
解壓 app離線SDK
-
將UniPlugin-Hello-AS項目導(dǎo)入到Android studio中
-
等待導(dǎo)入編譯完成,切換到 project模式。編譯完成后的項目結(jié)構(gòu)如下
4、新建module(實現(xiàn)我們功能的模塊)
-
新建module
-
選擇Android library,填上你的package name (記住不能跟uniapp 打包時候的包名相同(這是個坑,uniapp不兼容)),點擊Finish
-
導(dǎo)入導(dǎo)入uniapp-release.aar插件,它是擴展module主要依賴庫
在 App離線SDK 中 —> SDK 文件夾 ----> libs -----> 找到 uniapp-release.aar
把它移動到 之前 android 導(dǎo)入的項目中,切換到 project 目錄
- 給新建的module (uniplugin_sunmi 是我自己新建模塊)添加 依賴
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compileOnly fileTree(dir: 'libs', include: ['*.jar'])
compileOnly fileTree(dir: '../app/libs', include: ['uniapp-v8-release.aar'])
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.alibaba:fastjson:1.1.46.android'
implementation 'com.facebook.fresco:fresco:1.13.0'
testImplementation 'junit:junit:4.12'
}
如果同步失敗,請檢查是否出現(xiàn) 下圖錯誤 No signature ofm.android0 is applicable for arg
Try Again Open ‘Build’ View
Show Log in Explorer
請刪除 namespace,再在找到androidManifest.xml 添加包名,再點擊 file —> sync project whit Gradle Files 進(jìn)行同步即可
-
新建 java類 (用于實現(xiàn)我們功能的類)
去到 AndroidManifest.xml 文件中配置(必須項)
<application>
<activity android:name="com.example.uniplugin_sunmi.ScanCode"
android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"></activity>
</application>
編寫模塊類(也就是我們新建的類名),編寫測試代碼
注意:繼承UniModule,并添加@UniJSMethod注解(哪個功能方法需要拋出給uniapp使用就加上這個注解)
package com.example.uniplugin_sunmi;
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;
// 一定要繼承UniModule
public class ScanCode extends UniModule {
// 使用UniJSMethod注解,才能使用js調(diào)用
@UniJSMethod(uiThread = true)
public void add (JSONObject json, UniJSCallback callback) {
final int a = json.getInteger("a");
final int b = json.getInteger("b");
callback.invoke(new JSONObject() {{
put("code", 0);
put("result", a + b);
}});
}
}
編寫結(jié)束
-
在build.gradle(app)中添加uniapp-插件,點擊sync now
-
在dcloud_uniplugin.json中新增插件,注意:插件命名會在uniapp中引用
-
給模塊打包成插件aar文件
如果沒有找到assmbleRelese按鈕,可以進(jìn)行設(shè)置
打完包即可在build中查看到aar文件
5、在uniapp中使用
-
創(chuàng)建插件目錄,配置剛打好的插件
package.json 配置
{
"name": "sunmi-scan",
"id": "sunmi-scan",
"version": "1.0.0",
"description": "訂單的",
"_dp_type": "nativeplugin",
"_dp_nativeplugin": {
"android": {
"integrateType": "aar",
"plugins": [{
"type": "module",
"name": "sunmi-scan",
"class": "com.example.uniplugin_sunmi.ScanCode"
}],
"minSdkVersion": "19"
}
}
}
-
使用插件
添加本地插件文章來源:http://www.zghlxwxcb.cn/news/detail-461289.html
-
使用插件
在頁面中引入
<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<button @click="test">測試</button>
</view>
</view>
</template>
<script setup lang="ts">
const test= ()=>{
// 引入自定義插件
const testModule = uni.requireNativePlugin('sunmi-scan')
// 使用module的add方法
testModule.add({
a:1,b:3
},e=>{
uni.showToast({
title:JSON.stringify(e),
icon:'none'
})
})
}
</script>
最后:打包成為基座進(jìn)行測試(最主要的)文章來源地址http://www.zghlxwxcb.cn/news/detail-461289.html
到了這里,關(guān)于uniapp 原生安卓開發(fā)插件(module),以及android環(huán)境本地調(diào)試(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!