安卓原生代码如何打包成uniapp插件?
我想将现有的安卓原生代码集成到uniapp项目中作为插件使用,但不知道具体的打包流程。请问应该如何将安卓原生代码打包成uniapp插件?需要哪些步骤和配置?是否有官方文档或最佳实践可以参考?
2 回复
将安卓原生代码打包成uniapp插件,需要先创建Android Module,编写插件类继承UniModule,实现所需方法。然后在assets/dcloud_uniplugins.json中注册插件,最后用Android Studio打包成aar文件,放入uniapp项目的nativeplugins目录即可使用。
要将安卓原生代码打包为 UniApp 插件,需通过 uni原生插件 形式集成。以下是关键步骤和示例:
1. 创建 UniApp 原生插件项目结构
在 UniApp 项目根目录下创建 nativeplugins 文件夹,并建立插件目录(例如 MyNativePlugin),结构如下:
nativeplugins/
└── MyNativePlugin/
├── android/
│ ├── libs/ # 存放第三方 JAR/AAR
│ ├── src/ # 原生代码
│ ├── assets/ # 资源文件
│ └── plugin.gradle # 依赖配置
└── package.json # 插件配置文件
2. 配置 package.json
定义插件基本信息:
{
"name": "MyNativePlugin",
"id": "my-native-plugin",
"version": "1.0.0",
"description": "自定义原生插件示例",
"_dp_type": "nativeplugin",
"_dp_nativeplugin": {
"android": {
"plugins": [
{
"type": "module",
"name": "my-native-plugin",
"class": "com.example.MyNativeModule" // 入口类
}
],
"integrateType": "aar",
"minSdkVersion": 21
}
}
}
3. 编写安卓原生代码
在 android/src 中创建入口类,继承 UniModule:
package com.example;
import io.dcloud.feature.uniapp.annotation.UniJSMethod;
import io.dcloud.feature.uniapp.bridge.UniJSCallback;
import io.dcloud.feature.uniapp.common.UniModule;
public class MyNativeModule extends UniModule {
// 同步方法(返回字符串)
@UniJSMethod(uiThread = false)
public String getDeviceInfo() {
return android.os.Build.MODEL;
}
// 异步方法(带回调)
@UniJSMethod(uiThread = true)
public void showToast(String message, UniJSCallback callback) {
if (mUniSDKInstance != null && mUniSDKInstance.getContext() != null) {
android.widget.Toast.makeText(mUniSDKInstance.getContext(), message, Toast.LENGTH_SHORT).show();
callback.invoke("Toast shown: " + message);
}
}
}
4. 配置 Gradle 依赖
在 plugin.gradle 中添加依赖:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.3.0'
}
5. 在 UniApp 中调用插件
在 Vue 页面中使用:
const myModule = uni.requireNativePlugin('my-native-plugin');
// 调用同步方法
const device = myModule.getDeviceInfo();
console.log('Device:', device);
// 调用异步方法
myModule.showToast('Hello from Native!', (result) => {
console.log(result);
});
6. 打包与发布
- 调试:通过 HBuilderX 将插件导入项目,真机运行测试。
- 发布:将插件目录压缩为
.zip,通过开发者中心提交。
注意事项:
- 权限配置:如需系统权限,在原生 AndroidManifest.xml 中声明。
- 资源冲突:避免资源命名与主项目冲突。
- ProGuard:如启用混淆,需保留 UniModule 相关类。
通过以上步骤,即可将安卓原生功能封装为 UniApp 插件,实现跨平台调用。

