项目的SDK要升级,要把Target API level调整31。项目使用的是Unity2017.4.x,接完SDK后打完APP包装到手机上,启动直接黑屏。看Log,也没定位到具体的原因。然后网上搜索,发现一个解决办法(网址https://answer.uwa4d.com/question/63049f1a6d82e96d844891ec)。 上面说的原因是:因为TelephonyManager的listen函数在Android12过期了,如果没有授权READ_PHONE_STATE权限,此函数会抛出一个SecurityException,而Unity在启用了自带的音频系统的情况下,恰巧在启动时机会去调用这个方法以实现“在用户接电话时游戏静音”的功能,抛出的异常影响了后续的流程导致卡死。解决办法:1.升级Unity版本,但是我们的项目升级Unity版本的成本太大啦。2.反编译classes.jar,修改UnityPlayer类的addPhoneCallListener实现,判断if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) return;再编回classes.jar。然后决定跟着这个办法操作一下。

第一次接触,也不知道用什么反编译工具,也是各种搜索,各种操作对比。最终用jd-gui直接查看.jar文件,用jbe实现对改UnityPlayer的编辑。
1.classes.jar解压,
2.用jbe打开解压好的文件中的UnityPlayer.class,找到addPhoneCallListener方法然后编辑,上面提到解决办法是加入 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) return; 但是打开后显示的是字节码,然后IDEA建了一个同名的UnityPlayer.java,把addPhoneCallListener 复制一下再加入if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) return;在添加引用。转成.class。用jbe打开后和解压好后的文件中UnityPlayer.class对比发现多了这些。
getstatic android/os/Build$VERSION/SDK_INT I
bipush 31
if_icmplt 5
return
添加完毕后点击保存。
3.用解压软件打开classes.jar,然后替换UnityPlayer.class文件。
我当时操作完重新出包,结果依旧闪退。后来才发现我修改的classes.jar文件是Window下的Unity里的,打包机是Mac,然后用Mac下的Unity中的classes.jar,进行上面相同的操作,重新出包进到游戏终于不黑屏啦。

然后在进点击进入游戏后闪退,查看日志发现报出这样的错Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specif 。 网上又一通搜,发现(网址https://www.jianshu.com/p/2ce130a96b25)这个人写我用了解决了问题。
1.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.S) { alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, PendingIntent.getBroadcast(getApplicationContext(), 0, alertIntent, PendingIntent.FLAG_MUTABLE)); } else { alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, PendingIntent.getBroadcast(getApplicationContext(), 0, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT)); }

2.将 implementation ‘androidx.work:work-runtime:2.7.1’ 添加到 build.gradle
3.添加权限

最终重新出包,装到手机上正常啦。

Android平台 Target API level 升级到 31,在Android 12上启动黑屏卡死相关推荐

  1. Android Studio Error: Google Play requires that apps target API level 30 or higher.

    Android Studio Error: Google Play requires that apps target API level 30 or higher. flyfish 在build.g ...

  2. Error: Google Play requires that apps target API level 26 or higher. 两种解决办法

    这个问题是Android Studio和SDK升级后出现的,在编译Release版本的时候报错.两种解决办法:1)在targetSdkVersion 上面一行加注释://noinspection Ex ...

  3. android call require api level

    android  call require api level 5 等错误,需要在project -> android tools-> clear lint markers 来清楚 转载于 ...

  4. Android studio 模拟器启动黑屏解决办法

    Android studio 模拟器启动黑屏 这学期选修了Android应用开发,学习过程中使用Android studio也遇到了一些小问题,写一些遇到的问题记录一下. 前两天上机实验时模拟器打开全 ...

  5. 苹果xr黑屏转圈圈解决方法_苹果iPhone XR升级iOS 12.3后黑屏转圈圈怎么办?附解决办法...

    北京时间5月14日凌晨,苹果公司正式向iPhone 5S及以上机型推送了iOS 12.3正式版,本次更新包大小约在500MB左右,主要更新内容为支持启用[隔空播放2]的电视,根据更新介绍显示,&quo ...

  6. 【转】Android APP 启动黑屏优化补丁 (2016-01-18 10:35:23)

    [转]Android APP 启动黑屏优化补丁 (2016-01-18 10:35:23) 转载▼ 这个必须转,这才是高手,解决官方都解决不好的问题! 原文地址,以下为转贴内容: 使用说明 ***** ...

  7. Mac 升级新系统导致VMvare Fusion启动黑屏

    我的VMvare Fusion的版本号:8.1.1 我升级的系统是:10.15.1 导致VMvare Fusion启动黑屏.以下是解决方法: 第一步:需要在"设置"-"安 ...

  8. Android Call requires API level 11 (current min is 8)的解决方案

    [错误描述] 在用Eclipse开发过程中,为了兼容Android2.2和4.0以上版本,我在使用Notification类时做了2个版本的代码,代码根据系统版本不同执行相应模块,结果,等我输完代码, ...

  9. Android 应用开发---API Level对应Android版本一览表

    Android 1-8.1的版本名称.版本号.API level对应关系

最新文章

  1. 可简单图化算法(Havel算法)
  2. (48)Xilinx Adder IP核配置(九)(第10天)
  3. (转)HTML5开发中Access-Control-Allow-Origin跨域问题
  4. Kafka 安装部署、集群启动、命令行操作 与 可视化工具 Kafka Tool
  5. 前端开发者必会的英语单词
  6. jsplacement1.3中文汉化版
  7. matlab图形界面fig文件打开不能编辑
  8. python检测excel表是否存在空值
  9. java parser_愿你走出半生,归来仍是Java Parser
  10. java数组计算奇数的和,JAVA从键盘中输入20个整数将奇数和偶数存入不同的两个数组中 计算这两个数组中所有数据之和...
  11. 数据分析/大数据研发面经笔经(阿里/腾讯/网易/招行信用卡中心/小红书/vivo等)
  12. 青柚文案:水果店青柚推广文案,水果青柚广告文案
  13. 大数据存储技术期末复习(自用)
  14. Android Bitmap关于setPixel设置的值和getPixel获得的值不一样的问题
  15. tl wn322g linux驱动下载,TL-WN322G+驱动
  16. imgui Study
  17. 程序与进程的区别 和 联 系
  18. 使用Angular和API服务器显示相关表中的数据
  19. 基础零信任服务相关软件的安装和调试
  20. 【姿态检测】win10+Azure Kinect Dk 人体姿态跟踪使用教程

热门文章

  1. 微软今天发布的紧急安全公告 MS08-067
  2. Hangfire 基本使用
  3. SuperData上线VR数据平台,做行业发展的“指明灯”
  4. MCU器件选型---主流厂商
  5. 单片机设计:基于stm32智能语音识别蓝牙音响(ld3320语音识别模块+mp3模块+喇叭+点阵屏+OLED+蓝牙+手机app)
  6. 钱都花哪去了?预算费用控制管理系统帮企业精准管理“金脉”
  7. 小程序 - 分享功能
  8. 智能环境监控系统解决方案及应用背景
  9. 遥信、遥测、遥脉和数字量的区别
  10. OCJP 1Z0-808考题全解析(含题目下载,持续更新中(60/236))