SDK集成与使用手册

一、集成前的准备

下载种子工程与SDK

1、种子工程下载

将从交付页面下载的种子工程文件,解压后导入Android Studio。

2、Playground2下载地址

https://warehouse.corp.powermobile.app:30244/playground2_android/

Playground可以辅助weex开发人员调试。

3、SDK下载

交付页面中,不同项目对应不同的SDK,其文件名为:MADCore_CID,CID为客户ID(由产品开发人员提供),例如种子工程的CID为GREEN,需要下载MADCore_GREEN.aar

二、SDK集成

2.1 SDK集成方式

1、在主工程的build.gradle中加入以下配置:

repositories {
    flatDir {
        dirs 'libs'
    }
}

2、将MADCore_CID.aar拷贝到与主工程libs目录下

3、主工程build.gradle添加以下依赖:

api(name: 'MADCore_GREEN', ext: 'aar')
api 'com.android.support:support-v4:28.0.0'
api "com.android.support:appcompat-v7:28.0.0"
api "com.android.support:recyclerview-v7:28.0.0"

4、assets目录添加注册表文件(registry.dat 该文件由后管提供)

注意: assets目录下可放置central.dat(可选),registry.dat(必选),repo_main.dat(可选),central_version.dat(可选,一些版本的后管不会生成该文件,自即日起提供的后管版本都会有此文件[manager后管49版本开始存在该文件,Capricorn后管获取此文件方式参见下属获取注册表文件说明) ,投产前建议把所有上述文件都放置在assets目录下。
compileSdkVersion必须<=29,targetSdkVersion必须<=28。

2.2 种子工程集成方式

1、用Android Studio导入解压好的种子工程,然后将MADCore_CID.aar拷贝工程的app/ immutable/libs目录下

2、assets目录添加注册表文件(registry.dat 该文件由后管提供)

1、不能使用其他项目的SDK
2、assets目录下可放置central.dat(可选),registry.dat(必选),repo_main.dat(可选),central_version.dat(可选,一些版本的后管以及crc发布方式不会生成该文件)manager后管49版本开始存在该文件,Capricorn后管获取此文件方式参见下属获取注册表文件说明) ,投产前建议把所有上述文件都放置在assets目录下
3、app/ immutable目录下的immutable.gradle文件不能修改
4、compileSdkVersion必须<=29,targetSdkVersion必须<=28

三、SDK使用

3.1 SDK的初始化配置

1、在程序启动时(在Application中)调用SDK的引擎类(Engine.java)的initEnvironment方法进行环境初始化配置

方式1(已废弃)

       /**
         * @param app            application对象
         * @param isOpenLog      日志开关 true:开启  false:关闭
         * @param openCockroach  bandage开关(全局异常捕获)
         * @param usePortService 端口开关   true:使用端口进行网络请求   false:使用接口进行网络请求
         * @param launchModel    APP启动时资源的拉取方式是同步还是异步
         * @param httpProxy      代理地址(供抓包时配置)
         * @param grayFlag       传入0表示使用默认的灰度ui(弹框),传入除0之外的其它int类型的值表示自定义灰度ui
         * @param callback       初始化回调
         */
        Engine.initEnvironment(this, true, true, false, MADConfig.LaunchModel.SYNC,
                "", 0, new Engine.InitEnvCallback() {
                    @Override
                    public void doInitFinish() {

                    }
                });

方式2 推荐 (版本号>1000)

   EnvironmentConfig config = new EnvironmentConfig.Builder()
                .setOpenLog(false)
                .setOpenCockroach(false)
                .setUsePortService(false)
                .setLaunchModel(MADConfig.LaunchModel.SYNC)
                .setHttpProxy("")
                .setGrayFlag(0)
                .setCustomHttpAdapter(null)
                .setNeedDeviceID(true)
                .setNeedVerifyProcessInfo(true)
     						.setNeedMagician(true)
                .build();
              
  Engine.initEnvironment(app, config, callback);

接口说明

属性 参数 说明
setOpenLog(boolean) true:打开日志 false:关闭日志 日志开关(默认关闭)
setOpenCockroach(boolean) true:打开 false:关闭 bandage开关(全局异常捕获)
setUsePortService(boolean) true:端口模式 false:接口模式 应用内部数据交互模式切换:端口开关,默认使用接口
setLaunchModel(MADConfig.LaunchModel) SYNC:同步 ASYNC:异步 初始化时请求central的方式为异步/同步(当前强制为同步)
setHttpProxy(String) 数据格式:https://127.0.0.1:8080 设置客户端代理地址,
setGrayFlag(int) 0:使用默认灰度弹窗ui 传入0表示使用默认的灰度ui(弹框),传入除0之外的其它int类型的值表示自定义灰度ui
setCustomHttpAdapter(IWXHttpAdapter) IWXHttpAdapter:自定义的weex网络适配器 自定义weex的网络适配器,默认为null
setNeedDeviceID(boolean) true:需要 false:禁止 SDK是否在初始化时获取设备id;**注:**SDK获取设备id后仅存于环境变量中,
setNeedVerifyProcessInfo(boolean) true:需要 false:禁止 MADP初始化前是否需要判断是否是当前进程,默认需要判断,避免多进程情况下多次初始化sdk引发未知问题(**背景:**有些应用市场要求app隐私协议同意之前禁止获取任何信息,包括敏感非敏感信息)
setNeedMagician(boolean) true:打开 false:关闭 行为分析开关-由于GREEN版本包含行为分析,但部分项目在未使用的情况下,依然会触发行为分析接口,获取部分设备信息,因此增加开关控制 (>1078)

同时别忘记在清单文件中进行注册。

2、如果你的项目不需要上述1中类似的初始化工作,SDK中提供了DefaultApplicaiton.java类,该类已经完成了SDK引擎的初始化工作,你只需将其添加在清单文件Application节点中即可,如:

<application
    android:name="tech.madp.core.DefaultApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar">
</application>

引擎初始化方法一般情况下只需要调用一次,并且只能再Application即程序启动时进行调用。

3.2 引擎的启动

SDK里引擎的启动支持启动配置好的完整启动链里的场景(启动链里配置了某个仓库里的各个场景的启动顺序,具体参考其它文档),也支持启动某仓库里配置的某一个单一场景。启动触发的时机可在APP应用内的任何地方。

1、 如果启动已经配置好的完整启动链,可通过Engine.startup()启动,如:

  public class MainActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //启动中心服务器配置好的场景启动链
        Engine.startup();
    }
      
}

此时SDK会进入根据启动链的配置打开场景页面。

SDK提供了DefaultActivity.java,该类内部进行了startup()操作,如果你不想写startup(),可用该类替代,注意使用该类需要在清单文件中进行注册。

备注:DefaultActivity.java和DefaultApplication.java一般用于程序的显示入口和程序的启动入口时才使用,其中DefaultActivity.java还需要在清单文件中配置显示入口,如下所示:

<application
    android:name="tech.madp.core.DefaultApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
 <activity
        android:name="tech.madp.core.DefaultActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application

2、 如果单独启动仓库的某一个场景,可通过Engine.launchStage方法启动,方法说明如下:

  public static void launchStage(String stageid)

参数为String类型的场景id,为中心服务器配置的某个仓库里的场景,参数格式支持形如:
仓库名.场景id?参数key1=参数value1&… &参数key(n)=参数value(n)
其中:仓库名.场景id为必选项, ?参数key1=参数value1&… &参数key(n)=参数value(n)为可选项,用于向即将打开的场景传递参数。

例如:

  public class MainActivity extends AppCompatActivity {
      
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //启动main仓库的launcher(加载器)场景
        Engine.launchStage("main.launcher");
        //启动main仓库的myaccount(我的账户)场景,同时传递参数name=张三丰,age=20给场景
        Engine.launchStage("main.myaccount?name=张三丰&age=20");
    }
      
}

3、离线bundle

当资源打包后的产生的离线bundle,可将生成离线bundle文件夹下的文件拷贝至主工程assets目录下即可。

四、Capricorn后管获取注册表文件(registry.dat)

注意:在后管部署成功的前提下才能通过后管获取注册表

1、浏览器输入后管地址,输入用户名,密码并正常登录

默认用户名:csii,默认密码:111111

2、进入默认应用

3、注册表输入域介绍

中心服务器文件地址:获取中心服务器文件(central.dat)地址,格式:(后管IP+端口)/publish/CID/appid/appid-(default【默认default】或版本号)/central.dat

CID:租户ID,默认是csii,如需修改,请联系商务

appid:如下图

版本号:查看方式,如下图

获取中心服务器文件(central.dat)正确获取方式为后管资源存储的web服务地址,此处为了说明如何以简单方式获取注册表,故此处配置的是后管地址。

4、下载注册表

复制中心服务器文件地址的url全路径,复制到浏览器,修改下载文件为registry.dat,然后回车下载即可。

说明:central.dat、registry.dat和repo_main.dat皆为后管同一路径,所以三个文件都可以通过这种后管的简单方式进行下载。