SDK嵌入方法及装置、计算机可读存储介质.pdf
《SDK嵌入方法及装置、计算机可读存储介质.pdf》由会员分享,可在线阅读,更多相关《SDK嵌入方法及装置、计算机可读存储介质.pdf(9页完成版)》请在专利查询网上搜索。
1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010442806.1 (22)申请日 2020.05.22 (71)申请人 网宿科技股份有限公司 地址 200030 上海市徐汇区斜土路2899号 光启文化广场A幢5楼 (72)发明人 梁少泽 (74)专利代理机构 北京华智则铭知识产权代理 有限公司 11573 代理人 陈刚 (51)Int.Cl. G06F 8/30(2018.01) G06F 8/41(2018.01) (54)发明名称 一种SDK嵌入方法及装置、 计算机可读存储 介质 (57)摘要 本发明公开了一种。
2、SDK嵌入方法, 所述方法 包括: 将辅助嵌入插件部署至项目工程中; 在项 目工程的编译阶段运行所述辅助嵌入插件, 以获 取所述项目工程的编译信息; 当所述项目工程的 编译信息出错时, 所述辅助嵌入插件触发中断编 译, 并发出异常信息。 本发明还提供了一种SDK嵌 入装置、 计算机可读存储介质。 本发明提供的SDK 嵌入装置、 计算机可读存储介质, 可以在SDK嵌入 阶段定位并排查SDK嵌入过程中的问题, 避免APP 上线以后并提供给最终用户下载并安装运行以 后才能发现异常。 权利要求书1页 说明书5页 附图2页 CN 111752548 A 2020.10.09 CN 111752548 A。
3、 1.一种SDK嵌入方法, 其特征在于, 所述方法包括: 将辅助嵌入插件部署至项目工程中; 在所述项目工程的编译阶段运行所述辅助嵌入插件, 以获取所述项目工程的编译信 息; 当所述项目工程的编译信息出错时, 所述辅助嵌入插件触发中断编译, 并发出异常信 息。 2.根据权利要求1所述的方法, 其特征在于, 所述将辅助嵌入插件部署至项目工程中的 步骤具体包括: 将SDK业务层代码的归档文件拷贝到所述项目工程的libs目录下; 在所述项目工程的bulid.gradle目录添加所述辅助嵌入插件的归档文件的依赖路径; 在app目录下的build.gradle子目录通过apply plugin的方式引入所。
4、述辅助嵌入插 件。 3.根据权利要求1所述的方法, 其特征在于, 所述项目工程的编译阶段包括: 将java源 文件转换为java字节码文件, 然后再将java字节码文件转换成Dalvik字节码文件。 4.根据权利要求3所述的方法, 其特征在于, 在将所述java源文件转换为所述java字节 码文件之前运行所述辅助嵌入插件。 5.根据权利要求1所述的方法, 其特征在于, 所述编译信息包括: SDK版本信息、 Gradle 插件信息, 以及工程信息中的一者或多者。 6.根据权利要求5所述的方法, 其特征在于, 所述工程信息包括: 通过iml文件获取的工程结构和引入的第三方库; 通过build.gr。
5、adle文件获取的项目工程插件引入信息; 通过proguard-rules.pro文件获取的混淆配置信息; 以及 通过AndroidManifest.xml文件获取的权限配置信息中的一者或多者。 7.根据权利要求1所述的方法, 其特征在于, 还包括将所述异常信息保存至编译日志的 步骤。 8.根据权利要求1所述的方法, 其特征在于, 还包括在运行所述辅助嵌入插件之后, 所 述辅助嵌入插件检查是否按照嵌入文档要求的顺序进行SDK嵌入的步骤。 9.一种SDK嵌入装置, 其特征在于, 所述SDK嵌入装置包括处理器和存储器, 所述存储器 中存储有至少一条指令、 至少一段程序、 代码集或指令集, 所述至少。
6、一条指令、 所述至少一 段程序、 所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至8任一项所述 的SDK嵌入方法。 10.一种计算机可读存储介质, 所述存储介质中存储有至少一条指令、 至少一段程序、 代码集或指令集, 所述至少一条指令、 所述至少一段程序、 所述代码集或指令集由处理器加 载并执行以实现如权利要求1至8任一项所述的SDK嵌入方法。 权利要求书 1/1 页 2 CN 111752548 A 2 一种SDK嵌入方法及装置、 计算机可读存储介质 技术领域 0001 本发明涉及通信技术领域, 特别涉及一种SDK嵌入方法及装置、 计算机可读存储介 质。 背景技术 0002 软体。
7、开发工具包(Software Development Kit, SDK)是用于为特定的软件包、 软件 框架、 硬件平台、 操作系统等建立应用软件的开发工具的集合。 有了SDK以后, 应用软件 (Application, APP)开发者不需要再对产品的每个功能进行开发, 只需要将SDK嵌入APP中, 就可以迅速的在APP中集成某项功能。 0003 APP开发者在将SDK嵌入到APP过程中可能会存在各种问题, 如果这些问题在嵌入 阶段无法被定位出来, 就有可能导致上线的APP也是有问题的。 有鉴于此, 有必要提供一种 可在SDK嵌入阶段就把异常定位出来的SDK嵌入方法。 发明内容 0004 为了解。
8、决现有技术中的问题, 本发明实施例提供一种SDK嵌入方法及装置, 以解决 现有技术中无法在SDK嵌入阶段把异常定位出来的问题。 所述技术方案如下: 0005 第一方面, 提供了一种SDK嵌入方法, 所述方法包括: 0006 将辅助嵌入插件部署至项目工程中; 0007 在所述项目工程的编译阶段运行所述辅助嵌入插件, 以获取所述项目工程的编译 信息; 0008 当所述项目工程的编译信息出错时, 所述辅助嵌入插件触发中断编译, 并发出异 常信息。 0009 可选的, 所述将辅助嵌入插件部署至项目工程中的步骤具体包括: 0010 将SDK业务层代码的归档文件拷贝到所述项目工程的libs目录下; 001。
9、1 在所述项目工程的bulid.gradle目录添加所述辅助嵌入插件的归档文件的依赖 路径; 0012 在app目录下的build.gradle子目录通过apply plugin的方式引入所述辅助嵌入 插件。 0013 可选的, 所述项目工程的编译阶段包括: 将java源文件转换为java字节码文件, 然 后再将java字节码文件转换成Dalvik字节码文件。 0014 可选的, 在将所述java源文件转换为所述java字节码文件之前运行所述辅助嵌入 插件。 0015 可选的, 所述编译信息包括: SDK版本信息、 Gradle插件信息, 以及工程信息中的一 者或多者。 0016 可选的, 所。
10、述工程信息包括: 0017 通过iml文件获取的工程结构和引入的第三方库; 说明书 1/5 页 3 CN 111752548 A 3 0018 通过build.gradle文件获取的项目工程插件引入信息; 0019 通过proguard-rules.pro文件获取的混淆配置信息; 以及 0020 通过AndroidManifest.xml文件获取的权限配置信息中的一者或多者。 0021 可选的, 所述方法还包括将所述异常信息保存至编译日志的步骤。 0022 可选的, 所述方法还包括在运行所述辅助嵌入插件之后, 所述辅助嵌入插件检查 是否按照嵌入文档要求的顺序进行SDK嵌入的步骤。 0023 第。
11、二方面, 提供了一种SDK嵌入装置, 所述SDK嵌入装置包括处理器和存储器, 所述 存储器中存储有至少一条指令、 至少一段程序、 代码集或指令集, 所述至少一条指令、 所述 至少一段程序、 所述代码集或指令集由所述处理器加载并执行以实现上述SDK嵌入方法。 0024 第三方面, 提供了一种计算机可读存储介质, 所述存储介质中存储有至少一条指 令、 至少一段程序、 代码集或指令集, 所述至少一条指令、 所述至少一段程序、 所述代码集或 指令集由处理器加载并执行以实现上述SDK嵌入方法。 0025 本发明实施例提供的技术方案带来的有益效果是: 0026 本发明实施例在SDK嵌入阶段, 特别是在将j。
12、ava源文件转换为java字节码文件之 前, 通过在项目工程中引入辅助嵌入插件, 以检查项目工程的编译信息是否出现异常, 并在 检查到异常时停止编译, 发出异常信息, 并将异常信息写入到编译日志中。 如此一来, 无论 是SDK开发者还是APP开发者都可以通过编译日志在SDK嵌入阶段定位并排查SDK嵌入过程 中的问题, 避免APP上线以后并提供给最终用户下载并安装运行以后才能发现异常。 附图说明 0027 为了更清楚地说明本发明实施例中的技术方案, 下面将对实施例描述中所需要使 用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施例, 对于 本领域普通技术人员来讲, 在不。
13、付出创造性劳动的前提下, 还可以根据这些附图获得其他 的附图。 0028 图1是本发明实施例中SDK嵌入方法的示意图; 0029 图2是本发明实施例中SDK嵌入装置的示意图。 具体实施方式 0030 下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。 基于 本发明中的实施例, 本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 0031 通常而言, SDK开发者可以根据APP开发者所提出的业务需求, 开发出与业务需求 功能一致的SDK提供给A。
14、PP开发者嵌入APP中。 SDK开发者可以通过Android Studio或者 Eclipse开发工具, 将SDK打包为jar(Java Archive)包或者aar(Android Archive)包, 连同 SDK示例代码和SDK嵌入文档上传至SDK开发者网站供APP开发者下载。 APP开发者下载SDK 后, 同样通过Android Studio或者Eclipse开发工具将SDK嵌入APP。 比如可以通过Eclipse 开发工具中导入jar包, 并安装adt(Android Development Tools)插件, 使得Eclipse开发 工具可以和SDK建立连接。 然后, 按照SDK嵌。
15、入文档修改配置文件后, 即可完成SDK嵌入APP。 说明书 2/5 页 4 CN 111752548 A 4 0032 APP开发者在将SDK嵌入APP时, 如果没有按照嵌入文档的要求进行嵌入, 或者配置 编译信息异常(包括SDK版本信息、 Gradle插件信息, 以及工程信息中的一者或多者), 均会 导致SDK嵌入出错或者在APP的运行过程中出现异常。 由于SDK通常至少包括业务层代码和 插件, 本发明实施例在SDK的插件部分部署有辅助嵌入插件, 在编译阶段检查项目工程的编 译信息是否出现异常, 并在检查到异常时收集异常信息, 写入到编译日志中, APP开发者可 以通过编译日志排查嵌入过程中。
16、的问题。 0033 请参阅图1, 本发明实施例提供的SDK嵌入方法包括如下步骤: 0034 S101, 将辅助嵌入插件部署至项目工程中; 0035 在一个可选的实施例中, 项目工程指APP开发者使用的代码工程环境, 以Android Studio开发工具为例, 项目工程是以目录的形式进行表征, 每一个目录就是一个文件夹, 每 个目录下还可以包含子目录(也称作模块)。 Android Studio下的项目工程通常至少包括 .gradle、 .idea、 app、 build、 build.gradle等目录, .gradle和.idea目录存放的是Android Studio自动生成的文件, b。
17、uild存放的是编译时自动生成的文件, build.gradle存放的是项 目全局的gradle构建脚本, app目录存放的是项目中的代码、 资源等内容。 app目录通常又至 少包含libs子目录和build .gradle子目录, libs子目录存放的是第三方的jar包, build.gradle存放的是app模块的gradle构建脚本, 该子目录中指定有与项目构建相关的 配置。 0036 本实施例中, 辅助嵌入插件可以是基于自动存储管理(Automatic Storage Management, ASM)编写的Gradle插件。 所述Gradle插件在编译过程中可以执行代码并影响 编译结果。
18、, 当然也可以是其它插件, 本发明对此不作限定。 ASM技术为Java字节码的操纵框 架, 因此所述辅助嵌入插件可以读取Java字节码中的类, 并可以改变类在Java字节码中的 行为, 以及分析类的Java字节码信息, 还可以生成自定义的新类。 辅助嵌入插件可以打包成 为Jar包或者aar包。 0037 将辅助嵌入插件部署至项目工程中的具体过程可以为: 首先将SDK的业务层代码 的归档文件(可以是jar包或者aar包)拷贝到项目工程的libs目录下, 然后在项目工程的 bulid .gradle目录添加辅助嵌入插件的归档文件的依赖路径, 最后在app目录下的 build.gradle子目录通过。
19、apply plugin的方式引入辅助嵌入插件。 辅助嵌入插件部署至 APP开发者的项目工程后, 在所述项目工程中扫描APP开发者的代码执行过程与代码工程环 境。 0038 S102, 在项目工程的编译阶段运行辅助嵌入插件, 以获取项目工程的编译信息; 0039 在SDK嵌入的过程中, 需要通过编译器对SDK文件进行编译并打包, 具体过程为先 将java源文件(后缀为.java)转换为java字节码文件(后缀为.class), 然后再将java字节 码文件转换成Dalvik字节码文件(后缀为.dex), 最后再打包成安卓安装包(后缀为.apk)。 0040 本发明实施例中, 在将java源文件。
20、转换为java字节码文件之前就开始触发辅助嵌 入插件运行以获取项目工程的编译信息。 辅助嵌入插件运行以后, 如果检测到异常, 则发出 RunTime异常信息, 编译器收到RunTime异常信息之后就中断编译, 促使APP开发者关注到异 常提示信息并解决异常, 不会像现有的编译流程, 在SDK编译完成APP, 并在线上发布以后并 使用以后才发现异常, 也就能从根本上把异常杜绝在SDK嵌入刚开始的阶段。 0041 在一个可选的实施例中, 编译信息至少包括: SDK版本信息、 Gradle插件信息, 以及 说明书 3/5 页 5 CN 111752548 A 5 工程信息中的一者或多者。 工程信息可。
21、以包括工程配置信息、 项目工程插件引入信息、 混淆 配置信息, 以及权限配置信息中的一者或多者。 0042 SDK版本信息是通过transform的方式扫描SDK的字节码获取, 然后比对SDK版本信 息, 以确认SDK版本是否匹配, 如果版本不匹配则发出RunTime异常, 并在编译日志中记录该 异常信息。 具体而言, 由于一个SDK可能包含了多个业务, 每一个业务由对应的程序包和插 件组成, 所以一个SDK也可能包含多个程序包和插件, 而不同业务的程序包或者插件之间可 能有版本依赖关系; 当APP开发者所使用的第三方插件或第三方程序包的版本与SDK的程序 包和插件的版本不对应时, 会导致SD。
22、K嵌入出错或者在APP的运行过程中出现异常, 因此需 要获取SDK版本信息进行比对。 由于本步骤在编译开始之前, 就获取SDK版本信息进行比对, 就可以避免在APP上线并使用以后才发现, 也就避免了SDK开发者在APP运行出现问题以后 需要反复与APP开发者之间的反复沟通。 因此, 在本步骤中, 如果二者的版本不一致则进入 步骤S103。 0043 在SDK的嵌入过程中, 通常需要通过Gradle插件构建编译环境, 如果SDK开发者所 使用的Gradle插件版本和APP开发者SDK所使用的Gradle插件的版本不一致, 就可能导致在 SDK嵌入过程中会出现异常。 因此本实施例中可以通过嵌入辅助。
23、插件, 在编译阶段提前获取 项目工程的Gradle插件信息, 如果二者的版本不一致则进入步骤S103。 0044 工程配置信息通常在iml文件中描述或者定义, 工程配置信息可以包含工程结构 和引入的第三方库。 iml文件是由IntelliJ IDEA自动创建的模块文件, 当APP开发者的工程 配置信息出错, 则进入步骤S103。 0045 项目工程插件引入信息可以在build.gradle文件中描述或者定义。 例如, 当APP开 发者没有按照嵌入文档要求的顺序引入SDK插件, 或定义SDK插件的配置项异常, 则进入步 骤S103。 0046 混淆配置信息在proguard-rules.pro文。
24、件中描述及定义; APP开发者在APP打包过 程中, 会对APP进行混淆, 如果没有按照proguard-rules.pro文件中的混淆配置信息进行混 淆, 比如将SDK源代码一起混淆, 就会导致混淆后的APP出现异常; 因此在本步骤中, 可以通 过辅助嵌入插件在编译阶段, 检测项目工程的SDK混淆配置是否异常, 如果异常则进入步骤 S103。 0047 权限配置信息在AndroidManifest.xml文件中描述或者定义。 APP开发者在APP打 包过程中, 需要获取一定的访问权限(比如访问外部存储路径、 访问网络等), 如果没有给 APP配置相应的权限, 就会导致APP在运行时才发现, 。
25、因此本实施例可以通过辅助嵌入插件 在编译阶段提前发现权限配置是否异常, 如果异常则进入步骤S103。 0048 在一个可选的实施例中, 如果APP开发者在将SDK嵌入到APP过程中, 如果没有按照 嵌入文档要求的顺序进行SDK嵌入, 所打包的APP在运行过程中也会出现异常。 因此, 还可以 通过辅助嵌入插件检查是否按照嵌入文档执行嵌入, 如果没有按照嵌入文档执行嵌入, 也 会被判定为异常, 并进入步骤S103。 0049 S103, 当项目工程的编译信息出错时, 辅助嵌入插件触发中断编译, 并发出异常信 息。 0050 在步骤S102中, 只要辅助嵌入插件检查出异常, 都会触发中断编译, 并发。
26、出异常信 息。 在一个可选的实施例中, 在发出异常信息之后, 还可以将异常信息保存到编译日志, 编 说明书 4/5 页 6 CN 111752548 A 6 译日志可以作为后续排查异常的依据。 如果触发异常以后, APP开发者无法根据发出的异常 信息解决异常, 需要SDK开发者介入协助用户排查原因, SDK开发者可以根据所保存的编译 日志, 模拟与APP开发者的开发环境进行复现和排查。 0051 本发明实施例提供的SDK嵌入方法, 可以在SDK嵌入阶段, 特别是在将java源文件 转换为java字节码文件之前, 通过在项目工程中引入辅助嵌入插件, 以检查项目工程的编 译信息是否出现异常, 并在。
27、检查到异常时停止编译, 发出异常信息, 并将异常信息写入到编 译日志中。 如此一来, 无论是SDK开发者还是APP开发者都可以通过编译日志在SDK嵌入阶段 定位并排查SDK嵌入过程中的问题, 避免APP上线以后并提供给最终用户下载并安装运行以 后才能发现异常。 0052 图2是本发明实施例提供的SDK嵌入装置的结构示意图。 该SDK嵌入装置1100可因 配置或性能不同而产生比较大的差异, 可以包括一个或一个以上中央处理器1122(例如, 一 个或一个以上处理器)和存储器1132, 一个或一个以上存储应用程序1142或数据1144的存 储介质1130(例如一个或一个以上海量存储设备)。 其中, 。
28、存储器1132和存储介质1130可以 是短暂存储或持久存储。 存储在存储介质1130的程序可以包括一个或一个以上模块(图示 没标出), 每个模块可以包括对SDK嵌入装置1100中的一系列指令操作。 更进一步地, 中央处 理器1122可以设置为与存储介质1130通信, 在SDK嵌入装置1100上执行存储介质1130中的 一系列指令操作。 0053 SDK嵌入装置1100还可以包括一个或一个以上电源1129, 一个或一个以上有线或 无线网络接口1150, 一个或一个以上输入输出接口1158, 一个或一个以上键盘1156, 和/或, 一个或一个以上操作系统1141, 例如Windows Server。
29、, Mac OS X, Unix, Linux, FreeBSD等 等。 0054 SDK嵌入装置1100可以包括有存储器, 以及一个或者一个以上的程序, 其中一个或 者一个以上程序存储于存储器中, 且经配置以由一个或者一个以上处理器执行所述一个或 者一个以上程序包含用于进行上述SDK嵌入特征的指令。 0055 本发明实施例提供的SDK嵌入装置可以实现如图1所示的SDK嵌入方法相同的技术 效果, 在此不再赘述。 0056 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件 来完成, 也可以通过程序来指令相关的硬件完成, 所述的程序可以存储于一种计算机可读 存储介质中, 上述提到的存储介质可以是只读存储器, 磁盘或光盘等。 0057 以上所述仅为本发明的较佳实施例, 并不用以限制本发明, 凡在本发明的精神和 原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。 说明书 5/5 页 7 CN 111752548 A 7 图1 说明书附图 1/2 页 8 CN 111752548 A 8 图2 说明书附图 2/2 页 9 CN 111752548 A 9 。
- 内容关键字: SDK 嵌入 方法 装置 计算机 可读 存储 介质
介孔蛋黄壳纳米颗粒及其在构建分泌物代谢指纹谱图中的应用和用其筛选的代谢标志物.pdf
制袋机的放卷机构.pdf
双枪激光焊机.pdf
锂离子正极材料异常料筛分装置.pdf
用于芯片开盖的可调整平台.pdf
防腐伸缩蝶阀.pdf
可分离式检修插座箱.pdf
自承重保温复合屋面板.pdf
螺杆钻具定子壳体打磨装置.pdf
提升机机尾增压防尘结构.pdf
简易分条机构.pdf
煤矿探水钻孔快速密封装置.pdf
新能源电池储能充电用触发控制电路.pdf
加速植株晾干设备.pdf
高可靠电容切换开关.pdf
散热器翅片的冲片装置.pdf
可拆式偏心加强撑.pdf
农业种植用可调节式农业种植架.pdf
饮品和冰棒的新型包装袋.pdf
卧式搅拌反应釜.pdf
平板玻璃切割加工系统.pdf
器件复用的射频收发电路及其控制方法.pdf
基于单片FPGA的PET正弦图数据压缩存储方法、系统及设备.pdf
风机轴承剩余有效寿命优化方法、设备及介质.pdf
远程控制车辆分享解锁方法及系统.pdf
多轴分布式电驱车辆转向控制方法及车辆.pdf
无对照HRD检测方法、系统及装置.pdf
人工植入物以及介入系统.pdf
实心分割铝导体高压电缆制备方法.pdf
基于图像处理的影动方向计算系统及屈光度估计系统.pdf
热塑性复合工程材料缸盖罩自动校平装置及校平方法.pdf
多尺寸的晶圆传输装置、方法及电子设备.pdf