16KB 适配 SDK升级适配

更新时间:
复制为 MD 格式

SDK 16KB 版本升级适配变更说明。

更新内容

  1. 目前 RN 使用的版本较低,且飞燕生态的面板和云智能 app 都已经切换到 H5 的面板,当前版本更新之后,会移除 RN 依赖,同时对应的 v8-android也会被移除;

  2. 更新到使用 H5 相应前端页面之后,本地定时功能将不再支持,有需要可以自己自定义开发;

  3. multiendinonebridge sdk 升级到支持 16KB size 的版本(对应 libcurl.so、libcrypto.1.1.so、libssl.1.1.so会升级到支持 16KB 的版本);

  4. CoAP 支持 16KB 升级;

  5. tnet4android 切换到支持 16KB 版本;

  6. public-channel-core 解耦 id2 版本更新;

SDK变更

更新:

api 'com.aliyun.iot.aep.sdk:sdk-framework:1.1.15.1'
api 'com.alibaba.ailabs.iot:multiendinonebridge:1.0.0.28.2'
api 'com.aliyun.alink.linksdk:coap-sdk:2.0.2'
api 'com.taobao.android:tnet4android:3.1.14.10-open-emas-16kb'
api 'com.taobao.android:networksdk:3.6.0-open'
api 'com.aliyun.alink.linksdk:public-channel-core:0.8.1.noid2'

删除以下内容:

 api 'com.aliyun.iot.aep.page:rn:0.4.3'

新增:

api("com.aliyun.iot.aep.sdk:iot-mc-router:0.0.2") {
    exclude (group = "com.aliyun.ams", module = "alicloud-android-push-iot")
    exclude (group = "com.taobao.android", module = "accs_sdk_taobao")
    exclude (group = "com.taobao.android", module = "networksdk")
}
api("com.aliyun.iot.aep.sdk:lighter4ilop:0.0.2") {
    exclude (group = "com.aliyun.ams", module = "alicloud-android-push-iot")
    exclude (group = "com.taobao.android", module = "accs_sdk_taobao")
    exclude (group = "com.taobao.android", module = "networksdk")
    exclude(group = "com.aliyun.tg.runtime", module = "event")
}
api("com.aliyun.iot.aep.sdk:lighter:0.0.9") {
    exclude (group = "com.aliyun.ams", module = "alicloud-android-push-iot")
    exclude (group = "com.taobao.android", module = "accs_sdk_taobao")
    exclude (group = "com.taobao.android", module = "networksdk")
}

新增初始化代码

可以放在 IoTSmart.init((AApplication) appContext, initConfig); 初始化之后。

说明

使用插件功能需要新增此初始化代码。

BoneConfig.set(APP_CODE, "thirdApp");
try {
    // init router
    RouterBusiness.init(appContext, getAppKey());
} catch (Exception e) {
    ALog.e( JOB_NAME, "RouterBusiness init failed", e);
}

try {
    // BHAInitializer
    String serverEnv = GlobalConfig.getInstance().getApiEnv() != null ? GlobalConfig.getInstance().getApiEnv() : "";
    HashMap<String, Object> params = new HashMap<>();
    params.put(BHAInitializer.appEnvKey, serverEnv);
    params.put(BHAInitializer.apiGateWayKey, "apiclient");
    params.put(BHAInitializer.languageKey, "zh-CN");
    BHAEnvironment.mUseInitLanguageKey = "zh-CN";
    BHAInitializer.init((Application) appContext, params);

    ALog.d(JOB_NAME, "apiEnv = " + iotEnv
            + ", boneEnv = " + boneEnv
            + ", productEnv = " + productEnv
            + ", bha env = " + JSON.toJSONString(params)
            + ", appCode = " + BoneConfig.get(APP_CODE));
} catch (Exception e) {
    ALog.e(JOB_NAME, "BHA init failed", e);
}

打开前端页面参考代码

 /**
 * 打开反馈页面
 *
 * @param context 上下文对象,用于启动页面跳转
 */
public static void openFeedback(Context context) {
    openBHAPage(context, "link://router/feed_back");
}

/**
 * 打开云端定时页面
 *
 * @param context 上下文对象,用于启动页面跳转
 */
public static void openCloudTimer(Context context) {
    // 旧 RN
    // openBHAPage(context, "link://router/cloudtime");
    openBHAPage(context, "link://router/cloud_time");
}

/**
 * 打开设备通知页面
 *
 * @param context 上下文对象,用于启动页面跳转
 */
public static void openDeviceNotification(Context context) {
    // 旧版本 RN
//        openBHAPage(context, "link://router/devicenotices");
    openBHAPage(context, "link://router/device_notices");

}

public static void openBHAPage(Context context, String url) {
    Bundle bundle = new Bundle();
    bundle.putString("mobileModel", Build.MODEL);
    bundle.putString("mobileSystem", Build.VERSION.RELEASE);
    bundle.putString("appVersion", "1.0.0");
    Router.getInstance().toUrl(context, url, bundle);
}

/**
 * 打开设备面板页面
 * <p>
 * 该方法通过路由跳转到指定的设备面板页面,并传递必要的设备信息和配置参数
 *
 * @param context Activity上下文,用于页面跳转
 * @param url     设备链接地址(注:当前实现中未使用该参数)
 */
public static void openDevicePanel(Activity context, String url) {
    Bundle bundle = new Bundle();
    bundle.putString("mobileModel", Build.MODEL);
    bundle.putString("mobileSystem", Build.VERSION.RELEASE);
    bundle.putString("appVersion", "1.0.0");
    bundle.putString("iotId", "A9war47OIVzGEtkexjkg000000");
    bundle.putBoolean("ProgressLoadUINeeded", true);
    Router.getInstance().toUrlForResult(context, "link://router/a1fW24tvg7B", 10010, bundle);
}

完整sdk 依赖

sdk依赖

api 'com.aliyun.iot.aep.sdk:apiclient:0.1.9'
api 'com.aliyun.iot.aep.sdk:sdk-framework:1.1.15.1'
api 'com.aliyun.iot.aep.sdk:iot-credential:0.0.4.1'
api 'com.aliyun.alink.linksdk:api-client-biz:1.0.3'
api 'com.aliyun.iot.sdk:account-oa-ui:1.0.0.6'
api 'com.alibaba.sdk.android.openaccount:openaccount-ui-default:3.7.17'
api('com.alibaba.ailabs.iot:aisbase:1.0.0.131-aisbase') {
    exclude group: 'com.taobao.android', module: 'mtopsdk_allinone'
}
api 'com.aliyun.iot.aep.component:router-external:0.1.20'
api 'com.aliyun.iot.aep.sdk:jsbridge-external:0.1.8.4'
api 'com.aliyun.alink.linksdk:connectsdk:1.0.3.2'
api 'com.alibaba.ailabs.tg:baseutils:1.0.2.10'
//长连接SDKframework
api 'com.aliyun.iot.aep.sdk:connectchannel:0.1.5.1'
api 'com.aliyun.alink.linksdk:public-channel-mobile:1.5.7'
api 'com.aliyun.alink.linksdk:public-channel-core:0.8.1.noid2'

//配网、设备模型SDK
api ('com.aliyun.alink.linksdk:public-tmp:2.1.5') {
    exclude(group = "com.aliyun.alink.linksdk", module = "coap-sdk")
}
api('com.aliyun.alink.linksdk:devicecenter:1.13.0.2') {
    exclude(group = "com.aliyun.alink.linksdk", module = "coap-sdk")
}
api('com.aliyun.alink.linksdk:devicecenter-provision-core:1.13.0.2')
api('com.aliyun.alink.linksdk:devicecenter-provision-reserve:1.13.0.2')
api('com.alibaba.ailabs.iot:meshsdk:1.0.9.6') {
    exclude(group: 'com.alibaba.ailabs.iot', module: 'multiendinonebridge')
}
api('com.alibaba.ailabs.iot:gattlibrary:1.0.0.39-gatt')
api('com.alibaba.ailabs.iot:bluetoothleSDK:1.0.0.48')
api 'com.alibaba.ailabs.iot:multiendinonebridge:1.0.0.28.2'
api ("com.taobao.android:tnet4android:3.1.14.10-open-emas-16kb")
api("com.taobao.android:networksdk:3.6.0-open")

//推送SDK,可选
api('com.aliyun.iotx:iot-push:2.1.5-SNAPSHOT') {
    exclude group: 'com.taobao.android', module: 'utdid4all'
    exclude group: 'com.taobao.android', module: 'tlog_adapter'
    exclude group: 'com.taobao.android', module: 'tnet4android'
}
api 'com.aliyun.ams:alicloud-android-utdid:2.6.0'
//插件SDK,可选

api 'com.aliyun.alink.linksdk:public-tmp-ext-boneplugin:1.10.1'

//蓝牙SDK,可选
api 'com.aliyun.alink.linksdk:lpbs-plugin-breeze:1.2.2'
api 'com.aliyun.alink.linksdk:breeze:1.4.5'
api('com.aliyun.alink.linksdk:breeze-biz:2.0.7') {
    exclude(group: 'com.alibaba.ailabs.iot', module: 'aisbase')
}
api 'com.aliyun.alink.linksdk:ble-library:1.3.2'
api 'com.aliyun.alink.linksdk:breeze-ota:1.2.2'

api("com.aliyun.iot.aep.sdk:iot-mc-router:0.0.2") {
    exclude (group = "com.aliyun.ams", module = "alicloud-android-push-iot")
    exclude (group = "com.taobao.android", module = "accs_sdk_taobao")
    exclude (group = "com.taobao.android", module = "networksdk")
}
api("com.aliyun.iot.aep.sdk:lighter4ilop:0.0.2") {
    exclude (group = "com.aliyun.ams", module = "alicloud-android-push-iot")
    exclude (group = "com.taobao.android", module = "accs_sdk_taobao")
    exclude (group = "com.taobao.android", module = "networksdk")
    exclude(group = "com.aliyun.tg.runtime", module = "event")
}
api("com.aliyun.iot.aep.sdk:lighter:0.0.9") {
    exclude (group = "com.aliyun.ams", module = "alicloud-android-push-iot")
    exclude (group = "com.taobao.android", module = "accs_sdk_taobao")
    exclude (group = "com.taobao.android", module = "networksdk")
}

仓库

repositories {
    flatDir {
        dirs 'libs'
    }

    mavenLocal()

    maven {
        url "http://maven.aliyun.com/nexus/content/repositories/releases"
    }

    maven {
        url "http://maven.aliyun.com/nexus/content/repositories/snapshots"
    }

    maven {
        url 'https://developer.huawei.com/repo/'
    }

    jcenter()

    google()
}

exclude处理

重要

本次更新了 tnet4andorid 库,删除全局 exclude tnet4andorid 的 代码。

    configurations {
        cleanedAnnotations
        all*.exclude group: 'org.jetbrains', module: 'annotations'
        //去无线保镖
        all*.exclude group: 'com.aliyun.iot.aep.sdk.external', module: 'securitybody'
        all*.exclude group: 'com.aliyun.iot.aep.sdk.external', module: 'securityguard'
        all*.exclude group: 'com.taobao.android', module: 'securityguardsdk'
        all*.exclude group: 'com.taobao.android', module: 'securityguardaar'
        all*.exclude group: 'com.taobao.android', module: 'utdid4all'
        all*.exclude group: 'com.taobao.android', module: 'mtopsdk_allinone'
        all*.exclude group: 'com.aliyun.ams', module: 'alicloud-android-push-iot'
    }

常见问题

如发现so库冲突

    packagingOptions {
        pickFirst 'lib/armeabi/libtnet-3.1.14.so'
        pickFirst 'lib/arm64-v8a/libc++_shared.so'
        pickFirst 'lib/armeabi-v7a/libc++_shared.so'
        pickFirst 'lib/x86/libc++_shared.so'
    }

权限获取

说明

注意:OA 不请求基站、imei、位置等信息,设置之后,请自行测试 api 请求是否正常;

OpenAccountSDK.setProperty("disableGetImei", "true");
OpenAccountSDK.setProperty("disableLocationService", "true");
OpenAccountSDK.setProperty("disableQueryCellLocation", "true");