一:下载demo项目和工具(AS 和 HbuilderX,JDK11 ,gradle6.5等)
https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android.html#

二,配置demo项目 UniPlugin-Hello-AS
1,`建议下载后台中的云端证书`
(也可以自己申请keystore进行配置,但是java1.7的keytool才能查看keystore文件的md5值)
(uniapp后台必须配置 签名的md5值才能生效)

2,填入刚才申请的key信息

3,修改项目配置 app_id

4,修改项目配置 app_key

5,运行并导出aar包
gradle uniplugin_module:build

三,开发原生插件
1,导入aar包到HBuilderX项目内

2,如果使用离线打包,手动修改appid为已有项目包(上面的UniPlugin-Hello-AS)中的appid,方便导出

3,导出assert目录

4,替换最新asserts目录到Android studio中(等同于HBuilderX中的基准包)

5,测试代码
public class TestModule extends UniModule {
String TAG = "TestModule";
public static int REQUEST_CODE = 1000;
//run ui thread
@UniJSMethod(uiThread = true)
public void testAsyncFunc(JSONObject options, UniJSCallback callback) {
Log.e(TAG, "testAsyncFunc--"+options);
if(callback != null) {
JSONObject data = new JSONObject();
data.put("code", "success");
callback.invoke(data);
//callback.invokeAndKeepAlive(data);
}
}
//run JS thread
@UniJSMethod (uiThread = false)
public JSONObject testSyncFunc(){
JSONObject data = new JSONObject();
data.put("code", "success");
return data;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_CODE && data.hasExtra("respond")) {
Log.e("TestModule", "原生页面返回----"+data.getStringExtra("respond"));
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
@UniJSMethod (uiThread = true)
public void gotoNativePage(){
if(mUniSDKInstance != null && mUniSDKInstance.getContext() instanceof Activity) {
Intent intent = new Intent(mUniSDKInstance.getContext(), NativePageActivity.class);
((Activity)mUniSDKInstance.getContext()).startActivityForResult(intent, REQUEST_CODE);
}
}
}
6, 运行调试
注意:需要原生项目的 pluginname 和 hbuidlerX 项目中的 pluginname 保持一致
AndroidStudio-src-asserts-data 目录下的 nativePlugins-plugins-name
HBuilderX-nativeplugins-$模块名称-package.json-android-plugins-name

四: 开发原生组件
原生组件开发同原生插件,但有基础不同
1. nativePlugins 类型为 component
{
"nativePlugins": [
{
"plugins": [
{
"type": "module",
"name": "module-im",
"class": "io.dcloud.uniplugin.TestModule"
}
]
},
{
"plugins": [
{
"type": "component",
"name": "Widget-TextView",
"class": "io.dcloud.uniplugin.TestText"
}
]
}
]
}
2. 原生组件只在 .nvue 中才能被支持
uni.navigateTo({
url: '/pages/API/storage-ui/storage-ui'
});


3, 运行调试
