From 1c90aec9b25e58516a28e1c5c76824ff946cf5f4 Mon Sep 17 00:00:00 2001 From: finogeeksdev <61339605+finogeeksdev@users.noreply.github.com> Date: Sun, 15 Mar 2020 19:20:12 +0800 Subject: [PATCH] Create README.md --- README.md | 92 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..6964ca1 --- /dev/null +++ b/README.md @@ -0,0 +1,92 @@ +# mop-android-demo +五行代码让APP运行小程序 + +## 1、在工程的build.gradle中需要配置的内容 + +在工程的`build.gradle`中添加maven仓库的地址: + +```groovy +buildscript { + repositories { + google() + jcenter() + } + dependencies { + classpath "com.android.tools.build:gradle:3.5.2" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.60" + } +} +allprojects { + repositories { + google() + jcenter() + maven { url "https://jitpack.io" } + maven { + url "https://gradle.finogeeks.club/repository/applet/" + credentials { + username "applet" + password "123321" + } + } + } +} +``` +## 2、在gradle中依赖SDK + +```groovy +implementation 'com.finogeeks.lib:finapplet:2.0.77' +``` + +## 3、 配置混淆规则 + +集成SDK之后,为了避免SDK中部分不能被混淆的代码被混淆,需要在工程的混淆规则配置文件中增加以下配置: + +```properties +-keep class com.finogeeks.** {*;} +``` +## 4、SDK初始化 + +我们强烈建议在`Application`中对SDK进行初始化,初始化SDK需要传入的各项参数如下: +```java +FinAppConfig config = new FinAppConfig.Builder() + .setAppKey("SDKKEY") + .setAppSecret("SECRET") + .setApiUrl("https://mp.finogeeks.com") + .setApiPrefix("/api/v1/mop/") + .setGlideWithJWT(false) + .build(); +FinCallback callback = new FinCallback() { + @Override + public void onSuccess(Object result) { + // SDK初始化成功 + } + + @Override + public void onError(int code, String error) { + // SDK初始化失败 + Toast.makeText(AppletApplication.this, "SDK初始化失败", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onProgress(int status, String error) { + + } +}; +FinAppClient.INSTANCE.init(this, config, callback); +``` + +SDK采用多进程机制实现,每个小程序运行在独立的进程中,即一个小程序对应一个进程,在初始化SDK时,要特别注意的一点是:小程序进程在创建的时候不需要执行任何初始化操作,即使是小程序SDK的初始化,也不需要在小程序进程中执行。例如:应用使用了一些第三方库,这些库需要在应用启动时先初始化,那么在`Application`中执行初始化时,只有当前进程为宿主进程时才需要初始化这些第三方库,小程序进程是不需要初始化这些库的。 + +因此,在初始化SDK之前,一定要判断当前进程是哪一个进程,如果是小程序进程,就不进行任何操作了: + +```java +if (FinAppClient.INSTANCE.isFinAppProcess(this)) { + return; +} +``` + +* **SDKKEY** 和 **Secret** 可以从前面部署的社区版的管理后台获取。 +* **apiServer** 为这里是小程序生态后端的服务地址也就是前文所输入的**IP:端口**。 +* **小程序id** 为在管理后台上架的小程序appid +* 上述的参数可以在前文服务器部署的后台界面上获取,亦可以在没有部署服务端的情况下在[https://mp.finogeeks.com](https://mp.finogeeks.com)快速注册,免费获取。 +* 具体的操作方法请参考 [Android集成](https://mp.finogeeks.com/mop/document/runtime-sdk/sdk-integrate/android.html)