文章目录
提示:当我们Uniapp无法实现时需要使用到原生API
1.创建module;



提示:这里自己创建的插件,默认是一个App工程目录,编译之后是一个APK,并不是一个arr或者jar
如图所示:可以看到,插件包样式页变了;


这里testAsyncFunc方法,可以执行通过Uniapp代码中执行调用穿参回调,当然你也可以在方法里面执行跳转原生界面代码,你可以自行尝试;
1.1添加dcloud_uniplugins.json文件
提示:放到assets/dcloud_uniplugins.json
bash
{
"nativePlugins": [
{
"plugins": [
{
"type": "module",
"name": "testModule",
"class": "com.zy.testmodule.DeviceModule"
}
]
}
]
}
2.uniapp中使用教程
javascript
static testModule = uni.requireNativePlugin("TestModule");
this.testModule.testAsyncFunc({'key':'原生端获取'}, (value) => {
console.log('testAsyncFunc 回调:', value)
})
下面完整js代码:
javascript
<template>
<div>
<button type="primary" @click="testAsyncFunc">testAsyncFunc</button>
<button type="primary" @click="testSyncFunc">testSyncFunc</button>
<button type="primary" @click="gotoNativePage">跳转原生Activity</button>
</div>
</template>
<script>
// 获取 module
var testModule = uni.requireNativePlugin("TestModule")
const modal = uni.requireNativePlugin('modal');
export default {
onLoad() {
plus.globalEvent.addEventListener('TestEvent', function(e){
modal.toast({
message: "TestEvent收到:"+e.msg,
duration: 1.5
});
});
},
methods: {
testAsyncFunc() {
// 调用异步方法
testModule.testAsyncFunc({
'name': 'unimp',
'age': 1
},
(ret) => {
modal.toast({
message: ret,
duration: 1.5
});
})
},
testSyncFunc() {
// 调用同步方法
var ret = testModule.testSyncFunc({
'name': 'unimp',
'age': 1
})
modal.toast({
message: ret,
duration: 1.5
});
},
gotoNativePage() {
testModule.gotoNativePage();
}
}
}
</script>
3.HBuiderX打包项目资源;

注意:将这一块移动到原生项目assets/apps/__UNI__3F040目录下
如图所示:


提示:data目录下也需要放入相应的dcloud_control.xml、dcloud_error.html、dcloud_properties.xml三个文件;
以下是具体代码;
dcloud_control.xml
xml
<?xml version="1.0" encoding="utf-8"?>
这里是开启debug模式
<hbuilder debug="true" syncDebug="true">
这里是打正式包时使用
<!--<hbuilder>-->
<apps>
appid这里填写你项目的__UNI__3F40
<app appid="__UNI__3F40" appver="1.0.0" />
</apps>
</hbuilder>
dcloud_properties.xml
这里填写你项目当中所用到的第三方库就好了,不需要就删掉,否则运行后会有意想不到的提示;
xml
<?xml version="1.0" encoding="utf-8"?>
<properties>
<features>
<feature name="Contacts" value="io.dcloud.feature.contacts.ContactsFeatureImpl" />
<feature name="Console" value="io.dcloud.feature.pdr.LoggerFeatureImpl" />
<feature name="Device" value="io.dcloud.feature.device.DeviceFeatureImpl" />
<feature name="File" value="io.dcloud.js.file.FileFeatureImpl" />
<feature name="Proximity" value="io.dcloud.feature.sensor.ProximityFeatureImpl" />
<feature name="Storage" value="io.dcloud.feature.pdr.NStorageFeatureImpl" />
<feature name="Cache" value="io.dcloud.feature.pdr.CoreCacheFeatureImpl" />
<feature name="Invocation" value="io.dcloud.invocation.Invocation" />
<feature name="Navigator" value="io.dcloud.feature.ui.navigator.NavigatorUIFeatureImpl" />
<feature name="NativeUI" value="io.dcloud.feature.ui.nativeui.NativeUIFeatureImpl" />
<feature name="UI" value="io.dcloud.feature.ui.UIFeatureImpl">
<module name="Navigator" value="io.dcloud.feature.ui.NavView" />
</feature>
<feature name="Gallery" value="io.dcloud.js.gallery.GalleryFeatureImpl" />
<feature name="Downloader" value="io.dcloud.net.DownloaderFeatureImpl" />
<feature name="Uploader" value="io.dcloud.net.UploadFeature" />
<feature name="Audio" value="io.dcloud.feature.audio.AudioFeatureImpl" />
<feature name="Runtime" value="io.dcloud.feature.pdr.RuntimeFeatureImpl" />
<feature name="XMLHttpRequest" value="io.dcloud.net.XMLHttpRequestFeature" />
<feature name="Accelerometer" value="io.dcloud.feature.sensor.AccelerometerFeatureImpl" />
<feature name="Orientation" value="io.dcloud.feature.sensor.OrientationFeatureImpl" />
<feature name="NativeObj" value="io.dcloud.feature.nativeObj.FeatureImpl" />
<feature name="Geolocation" value="io.dcloud.js.geolocation.GeolocationFeatureImpl" />
<feature name="Stream" value="io.dcloud.appstream.js.StreamAppFeatureImpl" />
<feature name="Zip" value="io.dcloud.feature.pdr.ZipFeature" />
<feature name="Speech" value="io.dcloud.feature.speech.SpeechFeatureImpl" />
<feature name="VideoPlayer" value="io.dcloud.media.MediaFeatureImpl" />
<feature name="Sqlite" value="io.dcloud.feature.sqlite.DataBaseFeature" />
<feature name="Payment" value="io.dcloud.feature.payment.PaymentFeatureImpl">
<module name="Payment-Weixin" value="io.dcloud.feature.payment.weixin.WeiXinPay"/>
</feature>
<feature name="Payment" value="io.dcloud.feature.payment.PaymentFeatureImpl">
<module name="AliPay" value="io.dcloud.feature.payment.alipay.AliPay"/>
</feature>
<feature name="Share" value="io.dcloud.share.ShareFeatureImpl">
<module name="Weixin" value="io.dcloud.share.mm.WeiXinApiManager"/>
</feature>
</features>
<services></services>
</properties>
小结
提示:以上是属于App离线打包,还需要配置一些Uniapp基座所需要的aar包,具体教程贴在下方,可根据下面做适配
官方教程离线打包