android studio umeng,Android Studio集成友盟SDK出现的问题解决及原因分析

在集成友盟SDK后,之前调试开发者都正常,但在导出release APK时再次出现以下问题:

Error:Execution failed for task ':app:packageRelease'.

> Unable to compute hash of X:\coding\MyAPP\app\build\intermediates\classes-proguard\release\classes.jar

好吧,有之前那篇博文在,这个完全不是问题,直接翻上面的warning,找到如下问题:

Warning:u.aly.bt: can't find referenced method 'int checkSelfPermission(java.lang.String)' in library class android.content.Context

Warning:there were 1 unresolved references to library class members.

You probably need to update the library versions.

(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)

是u.aly.bt无法找到这个checkSelfPermission的API,我第一反应是,会不会我把这个API给混淆了?但很显然不可能,context这么多API在调用,不可能光混淆这个函数。

然后就查了一下这个API,定义如下:

public abstract int checkSelfPermission (String permission)

---------- Added in API level 23 ----------

Determine whether you have been granted a particular permission.

Parameters

permission

The name of the permission being checked.

Returns ----------

PERMISSION_GRANTED if you have the permission, or PERMISSION_DENIED if not.

原来如此,它是SDKVersion23 也就是Android6.0才添加进来的。用来检查APP是否有这个对应的操作权限,那么为什么要添加这个API呢?因为6.0开始,Android手机也会变得和iOS一样,在一些涉及敏感权限时(如果你的targetSdkVersion是23, 即使你在AndroidManifest.xml里加了这个权限),它也会弹框询问用户是否同意,比如读取IMEI等等,它是用来检查运行时权限的,而不是静态的xml权限。因此,如果你的targetSdkVersion还不想用23的话(毕竟弹框骚扰用户也不好;如果用户不给权限,也会影响你的部分功能正常工作),就换成低版本的友盟SDK吧,在build.gradle里改成如下即可:

compile 'com.umeng.analytics:analytics:5.6.1'

另外吐槽下友盟,官网的帮助文档也应该更新更新了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值