uniapp起手式

一:下载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, 运行调试