前几天公司项目中需要接入百川SDK,按理说像阿里这种大公司应该是开发文档写的清清楚楚,明明白白,接入过程不会有太多的意外。但是,在实际接入的时候却是踩了一个又一个坑。下面就简单的复盘一下自己曾经踩的坑,也让后面需要开发百川SDK的小伙伴遇到问题的时候,有一个解决方案。
1. 查看文档。
一般就参考百川文档中心的demo文档就可以了,不用管其他的一些说明文档。在实际接入过程中会发现在百川的开发平台上有很多地方有开发文档,而且相互之间还都不太一样。给人感觉不是一帮人在维护,而是好几帮人在各自更新各自的文档,根本没有一个统一的标准。所以也不必纠结那么多的不同点,我们就以 百川电商SDK 的文档为准
2. 引入的sdk包,我列出我引用的包,仅供参考:
3. Android resource compilation failed
......\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:217: error: <item> inner element must either be a resource reference or empty.
错误提示1上面是我遇到的第一个大坑。在引入了百川的那一堆.jar .aar 后,我开始运行编译,结果报出上面的错误。
点进去查看这个错误,说是
\alibc_trade_sdk-3.1.1.99.aar\40d0b5d0d01bfc939400c2aec506d39f\res\values\values.xml: AAPT: error: <item> inner element must either be a resource reference or empty.
意思大概就是说在alibc_trade_sdk-3.1.1.99.aar 的values.xml里面有个资源为空或者引用不对。 一个大公司生成的sdk包怎么会出这种问题呢~
解决方法:
在项目的/res/values/strings.xml 中添加如下内容
<item name="webviewload_monitor_cancel_point" type="id"/>
4.Manifest merger failed
我们解决上面那个问题后,再次运行编译,结果又出来新的问题了。
Manifest merger failed : Attribute application@allowBackup value=(true) from AndroidManifest.xml:8:9-35
is also present at [com.taobao.android:securityguardaar3:5.1.96] AndroidManifest.xml:25:9-36 value=(false).
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:7:5-23:19 to override.
从字面意思大概也能看出问题出在哪里。重点是还给出了suggestion。那我们就按照它给出的suggestion操作就可以了。
解决方法:
在项目的AndroidManifest.xml 中添加 tools:replace="android:allowBackup",如下:
在我自己新建的工程demo中,通过天骄上面那一行代码的确可以解决这个问题,但是放在公司的项目中,发现仅仅是添加上上面的一行代码,还是没用,最终我是整个都给replace了才解决问题。如下:
5. com.alibaba.baichuan.android.trade.model.InitResult.errorCode
java.lang.NullPointerException: Attempt to read from field 'int com.alibaba.baichuan.android.trade.model.InitResult.errorCode' on a null object reference
这个坑,其实是自己粗心造成的,但是一开始并没有意识到,所以也是困扰了自己很长时间。
主要原因是自己引用的安全图片错误。在生成安全图片的时候,需要选择图片版本,分为v4 和v5.
判断方法为对应不同的安全sdk版本。结果自己一开始看错了,选择了v5的图片版本,导致了上面的错误。
解决方法:
选择v4版本,生成新的安全图片即可。
网友评论