一、前言

写这个主题的原因,出于刚入门u3d,需要接入爱贝云支付的内容,苦于爱贝支付是一个Android的Library库,看到网上漫天遍野都是Android接入的帖子,但却没有我想要的关于Library的接入指导。最后,通过不断的反编译研究其他的SDK(看过了友盟、小米等等的SDK),终于还是摸到了一些关键点,这也促成了前面两篇的内容。这一篇的关键的技术点在前两篇基本上都有讲过,在此回顾一下接入过程中遇到的问题和自己的思考,补充一些漏掉的东西。

有兴趣的可以看看我的前两篇文章:
Unity3d Android SDK接入解析(一)Unity3d 与 Android之间的互相调用:
http://blog.csdn.net/yang8456211/article/details/51331358

Unity3d Android SDK接入解析(二)Unity3d Android SDK的设计与两种接入方式
http://blog.csdn.net/yang8456211/article/details/51356193

让我们进入正题

二、对于Library应该考虑什么?

(首先声明两点)
1. 我们讨论的是Library的Plugins接入方式,导出工程式的方式比较直观就不赘述了。
2. 并不是所有的Library形式的SDK都可以Plugins的形式进行接入。

2.1 分离Library的内容

一般u3d的SDK会直接提供代码+资源的形式,但Library并没有直观的给出这两者,不过我们可以自己把它分离出来:

  • 代码:

    通常放在libs文件夹,分为两种形式,一种是jar包的形式,一种是so库文件的形式。(assets可能也会有一些bin类型的文件)

    jar包即为源码,so文件一般是一些依赖库,放在不同的ABI文件夹里面(armeabi),需要注意的是,u3d编译的时候支持的cpu类型主要有两种,一种是armeabi-v7a,一种是x86,所接入的SDK最好需要有这两个cpu类型的so文件。

  • 资源:

    资源通常是放在res文件夹中(也有可能放在assets中),要注意的是当接入多个SDK的时候,value里面的string等资源的id不要重复了。

  • 配置:

    一般只有AndroidManifest文件。

我们分离出这三个部分,就可以把这个几个部分分别放到Plugins对应的文件夹中去了。

2.2 怎么样的Library能够接入

如果Library中的代码部分没有经过处理,一般是不能够用Plugins形式进行接入的,因为拆分了代码和资源,会导致R文件找不到资源的id。那这种情况应该怎么处理呢,我在中篇的内容中有讲到,如果我们自己编写SDK的话,就需要修改所有R文件的资源读取方式为包名+类名的反射调用。

而对于其他的SDK呢,我们无法对其进行修改,不过我们可以通过观察源码来判断这个SDK是否能够被接入:(以爱贝的jar为例)

1)通过JD-GUI查看SDK的jar包

2)随便搜索一个findViewById方法,可以看到爱贝的读取资源的方式并不是通过R来取得的,而是通过包名+c.a.a(这里是爱贝进行了代码混淆)

我们点进a方法继续查看

虽然进行了混淆,但是不难看出就是通过反射的机制来取的资源,所以这样的Library是可以以Plugins的方式进行接入的。

当然,如果觉得找代码比较麻烦,可以在接入SDK之前,写一个简单的demo试试,如果能够正常调用而没有爆出R$string找不到这类异常的话,那就是没有问题的。

三、还需要修改些什么?

我们知道了一个Library能够进行接入还是不够的,因为U3d和Android进行交互的时候(看前篇),有两个问题:

  • 第一是U3d没有办法在调用Android接口时传入一个Listener的参数

    所以我们没有办法直接在U3d调用一个参数需要listener的Android函数。

  • 第二是没有办法接收到Listener的异步回调。

所以最好的方法是在Android层再进行一层的封装,封装给U3d调用的方法接口和回调函数,那样我们在接入Library的时候只用在Cs脚本里面处理相关的调用和回调就可以了,当SDK进行了修改,我们也只用修改我们封装的接口层(通常只是一个jar包),而不用修改我们的Cs代码和游戏的接入逻辑。

至于接口层该怎么去写,每个人的习惯和喜好都不同,就因人而异了。

四、总结


U3d接入Android的SDK看上去简单,但为了研究他我也花了不止一个星期的时间,在研究SDK接入的同时也理解怎么自己去做一个方便U3d接入的SDK,了解了移动端cpu的主流架构等等,知识总是无穷无尽的,知道的越多不知道的就越多。对于此系列来说,自我感觉已经讲清楚了很多问题,如果还有不明白的地方,希望可以给我留言~

杨光(atany)原创,转载请注明博主与博文链接,未经博主允许,禁止任何商业用途。
博文地址:http://blog.csdn.net/yang8456211/article/details/51435465
博客地址:http://blog.csdn.net/yang8456211
本文遵循“署名-非商业用途-保持一致”创作公用协议

Unity3d Android SDK接入解析(三)接入Android Library的理解(爱贝云支付为例)相关推荐

  1. android sdk如何瘦身,给Android应用开发者的十条瘦身建议

    1保持良好的编码习惯 随着iOS和Android智能手机.平板电脑的高速发展,移动设备的运行速率越来越快,对应用软件也有了更高的标准.不过对于Android系统来说,开发者们在创建高性能应用的同时,仍 ...

  2. 【爱贝云计费】支付接入流程

    1.注册商户 用真实邮箱注册,填写企业信息并上传证照. 确保填写信息与您即将签约的信息一致. 爱贝云计费工作人员会尽快完成审核.立即注册 2.创建应用 审核通过后,在后台创建应用以获取接入参数. 不会 ...

  3. 爱贝云计费服务端接入

    本文主要描述爱贝云计费平台服务端为商户提供的API接口,用于指导商户接入并使用爱贝计费平台的相关能力. API接口列表简介 登录令牌认证:商户使用计费平台账号作为用户的应用登录账号时,应用客户端调用计 ...

  4. Android AOSP基础(三)Android系统源码的整编和单编

    本文首发于微信公众号「刘望舒」 关联系列 Android AOSP基础系列 Android系统启动系列 前言 在上一篇文章Android AOSP基础(二)AOSP 源码下载 中,我们顺利的将AOSP ...

  5. cocos2dx项目接入爱贝第三方支付sdk遇到的问题及解决方案

    1.今天接入cocos2dx项目爱贝sdk,再点击计费点,游戏崩溃终止,我一直以为是自己的支付接口接的不对,一直修改,但是毫无进展, 我联系了一下爱贝客服,爱贝客服那边帮我想了个办法,pay_prox ...

  6. android 学习笔记(三) Android学习路线之3.2 游戏程序员的学习资料

    看到一篇文章,总结一个游戏程序员的学习资料,作者是一个大二的学生,很羡慕作者大二时就有这么清晰的职业目标.我大学学的是自动化专业,大学时也算博览群书,可惜现在大多不知道遗忘在那个角落了.毕业后,单片机 ...

  7. 浅入浅出 Android 安全:第三章 Android 本地用户空间层安全

    第三章 Android 本地用户空间层安全 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 本地用户空间层在 Android ...

  8. 腾讯微博android sdk,腾讯微博java(android)sdk时间线api详细介绍

    本文主要介绍腾讯微博android sdk中时间线有关的20个接口,以及正常获取及翻页的使用的示例代码及部分特例 注意:以下所有的api示例代码都需要先新建QqTSdkService类对象qqTSdk ...

  9. 有米android sdk,有米积分墙Android SDK开发者常见问题

    有米积分墙Android SDK开发者常见问题,给大家学习学习~ 有米积分墙Android SDK开发者常见问题 1.环境配置问题 1.1 有米广告SDK使用哪种字符编码 有米广告SDK使用UTF-8 ...

最新文章

  1. 你以为用了BigDecimal后,计算结果就一定精确了?
  2. excel 第六次人口普查_计算机二级考试真题-Excel-第六次人口普查数据的统计分析...
  3. 前端html静态页面化妆品电商购物网站.rar(含html源码)
  4. python battleship_一个python初学者的作业,battleship
  5. Qt之自定义QLineEdit右键菜单
  6. Alink漫谈(二十二) :源码分析之聚类评估
  7. 颈椎病自我治疗预防颈椎病
  8. Clickhouse外部储存表引擎(HDFS、MySQL、JDBC、Kafka、File)
  9. 【Auto.js】QQ名片点赞
  10. 使用pgadmin3操作数据库 简介,误删数据表格后用Django重新生成表
  11. 如何使用 CSS flex box 和 Javascript 设计棋盘
  12. 消费者应该如何回收处理电子垃圾?
  13. html转exe 酷狗,exe视频格式转换器
  14. linux没有ifconfig命令
  15. 用SQL生成一份中国行政表
  16. 3行Python代码,实现批量抠图和换底色的方法
  17. 互斥锁解决缓存雪崩问题(一)
  18. 2023湖北土建施工员证报考条件考试时间及报考流程 启程别
  19. FANUC 0M 0T系统维修必备打包处理
  20. 我的世界1.10.2服务器文件,我的世界1period;10period;2服务器起床战争服务器 | 手游网游页游攻略大全...

热门文章

  1. ps中图层放到顶层的快捷键是什么?
  2. 八道C语言指针笔试题——拿捏指针
  3. 图片怎么转PDF文件?免费图片转PDF方法推荐
  4. 秒懂Excel的三种引用
  5. 更改文件类型方法(文本文档改为lic文件)
  6. vue路由的两种模式:hash与history的区别
  7. Windows电脑上有哪些好用的小说阅读器?
  8. 用c语言做99玫瑰花,计算机技术基础(c语言)用C语言描绘玫瑰花.doc
  9. ZEGO:如何从零搭建H5直播平台
  10. .* 与* 和./与/