美文网首页
升级androidSdk 遇到的坑,基于cocos2.X 0x5

升级androidSdk 遇到的坑,基于cocos2.X 0x5

作者: 一枚64byte的仙女 | 来源:发表于2019-04-25 17:19 被阅读0次

    由于最近华为手机出现弹框,提示:此应用专为旧版设备打造,虽然这个弹框不影响游戏运行,但是影响用户体验,用户需要点击,方可继续游戏

    为了解决这个问题,查阅资料得知,需要androidAPI 大于17

    因为是老项目,于是就是要去想办法更新安卓sdk 或者直接提高android:targetSdkVersion 这个值大于17

    但是修改后,从大厅进游戏黑屏,log如下

    log

    一眼看上去,以为是OpenGL的锅,于是吭哧吭哧的看了1天这些东西,无果,查阅资料,发现以下三个方向

    1.native层

    2.androidSdk 涉及的图片尺寸需要是 8或者是16的倍数

    3.android:launchMode 的问题

    但是经过一个一个的推敲,发现并没有任何用处

    最后发现一个奇怪的log,onPause 竟然有OnDestoryed,觉得很奇怪

    log1

    最后发现,因为游戏中涉及到横竖屏切换

    所以发现横竖屏显示, 然后坑就来了,在setRequestedOrientation后 activity会先销毁原来的Activity然后重新创建, create走了两遍

    会走两遍onCreate!!!!!!

    解决方案

    :android:configChanges="orientation|keyboardHidden|screenSize"

    历时2天升级安卓sdk,成功.

    后期发现手机在安卓7.x的系统上黑屏

    查看log发现 

    Pending exception java.lang.SecurityException: getDeviceId: Neither user 10571 nor current process has android.permission.READ_PHONE_STATE.

    这里的getDeviceId可能是获取系统状态或内容的操作,最后的android.permission.READ_PHONE_STATE也可能是其它权限,

    具体可以查看Android文档中的权限分组

    产生原因

    使用Android Studio编译项目的时候将app/build.gradle中的defaultConfig设置中的targetSdkVersion设置为了23, 这样 Android Studio在编译的时候会使用 Android 23 API即Android 6.0来编译项目,但是,如果你没有给项目加上动态权限请求的话,你的应用在安装到手机的时候将不会获取任何权限!!!可以去查看应用的应用信息,其中的Permissions权限列表中所有的权限组都是关闭状态。

    解决办法

    如果你需要紧急避免自己的应用继续在Android 6.0的系统上崩溃,可以将app/build.gradle中的 targetSdkVersion和compileSdkVersion设置为22或以下版本,这样的话,编译出来的app会在Android 6.0上以兼容模式运行,可以获取需要的权限,但随着Android 6.0的普及,我还是推荐大家尽量给项目加上动态权限时的判断以及逻辑处理。

    相关文章

      网友评论

          本文标题:升级androidSdk 遇到的坑,基于cocos2.X 0x5

          本文链接:https://www.haomeiwen.com/subject/nhjzlqtx.html