# LearnMachineSDKDemo **Repository Path**: github-7532319/learn-machine-sdkdemo ## Basic Information - **Project Name**: LearnMachineSDKDemo - **Description**: 学习机SDK及demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-11-15 - **Last Updated**: 2021-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 平板定制SDK说明文档 [TOC] SDK需求大致流程图: ![WechatIMG43](media/WechatIMG43.png) **红圈里的表示工厂端的安卓系统需要处理的。** **如有问题,请指正!** ## 开发计划 - 项目启动开发日期:2021-07-22 - 项目预计完成日期:2021-08-4 - 项目预计耗时:10工作日 甘特图: ![](media/16268710501278.jpg) 导入工程前期工作: 1 , 工程目录下创建 libs文件夹 需要把sdk的aar拷贝进libs目录下 2 , build 配置 : ```java dependencies{ implementation fileTree(dir: 'libs', include: ['.aar', '.jar'], exclude: []) } ``` 3 , so库的拷贝 : 拷贝路径 app/src/main/ 目录下创建jniLibs文件夹存放相应so文件。 备注:so文件在demo同步目录下。 ## 获取apk数据路径调用详情: **使用详情** ```java LearnMachineSDK.init(new LearnMachineCofig(this).setEventPopupListener(new EventPopupListener() { @Override public void onLoadSuccess(String var1) { Log.e("===============>", var1); } @Override public void onLoadFailed(String var1, int var3) { Log.e("===============>", var1); Log.e("===============>", "code:" + var3); } }).loadApkList().setActivity(this)); ``` 详解: 需要传入一个LearnMachineCofig对象 LearnMachineCofig详解: 1. `setEventPopupListener:`路径回调接口 onLoadSuccess成功 onLoadFailed失败 2. `.loadApkList()` 定时load Apk数据接口 3. 如需要sdk处理权限问题调用 `.setActivity(this)` this为当前Activty。 ## API动态安装 需求方在服务器上建立预安装列表,以API接口的形式,向硬件客户端提供接入服务。 硬件客户端【每次开机】或【开机后每24小时】,向服务器拉取列表,进行apk下载、签名等操作,最终安装在设备上。 ⚠️:**提供apk下载路径** ## 数据埋点 类名:**LearnMachineSDK**,使用单例,不需要调用初始化函数。 SDK埋点接口说明: **统计数据上传使用** 备注: 所有数据使用map形式提交 例如: ```java Map map = new HashMap<>(); map.put("et", "sys_start"); map.put("ev", "{"id" : "SN序列号","model" : "iPhone X","session_id" : "",...}"); ``` 内部方法: ```java public static void setBaseLearnMachineCofig(Map learnMachineLogMap, Context context) { } public static void setBaseLearnMachineCofigList(List> learnMachineLogMap, Context context) { } ``` 调用详情: ``` LearnMachineSDK.setBaseLearnMachineCofig(learnMachineLogMap, context); ``` **接口字段说明:** | 字段 | 描述 | | --- | --- | |content | 上报数据内容,json字符串,对json对象进行encode成json字符串| |contentList | 上报数据内容,json字符串列表,对应content列表| |callback | 回调函数| **回调字段说明:** | 字段 | 描述 | | --- | --- | | code |状态码,0表示成功,非0表示有异常| | message |描述信息| **content的参数说明:** 用**et**作为事件的key,表示事件类型,用**ev**作为事件参数的key,具体可参考下面的埋点事件及参数,示例如下: ``` // 开机事件: { "et": "sys_start", "ev": { "id" : "SN序列号", "model" : "iPhone X", "session_id" : "", ... } } // 关机事件: { "et": "sys_end", "ev": { "id" : "SN序列号", "model" : "iPhone X", "session_id" : "", ... } } // APP打开事件 { "et": "app_start", "ev": { "id" : "SN序列号", "app_name" : "向日葵妈妈", "app_package" : "com.xxx.xxx", ... } } ``` 埋点事件及参数见: ![未命名文件](media/%E6%9C%AA%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6.jpg) **⚠️:其中,APP关闭事件中的APPid参数应该对应APP打开事件,所以没有APPid参数,改为APP包名,app_package**