由于最近华为手机出现弹框,提示:此应用专为旧版设备打造,虽然这个弹框不影响游戏运行,但是影响用户体验,用户需要点击,方可继续游戏
为了解决这个问题,查阅资料得知,需要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的普及,我还是推荐大家尽量给项目加上动态权限时的判断以及逻辑处理。
网友评论