android:hardwareAccelerated=“false“属性慎用!慎用!慎用!
最近对2年前的一个小项目进行二开,记录一下两天呕心沥血找BUG的心情,真是心中一万个草泥马在奔腾。原因一:就很小的一个功能,让我整了两天,惭愧啊,原因二:使用的是小米笔记本(小米Pro 15.6英寸金属轻薄(第八代英特尔酷睿i7-8550U 16G 256GSSD MX150 2G独显)频繁蓝屏,最夸张的时候就是你刚重启打开android studio 运行程序然后就蓝屏了,所以我这边黑一波小米垃圾。
其实功能就是android webview加载本地的assets,然后JS实现高德地图功能之前就开个好的从1.4升级到2.0而已,HTML页面在PC浏览器手机浏览器打开显示没有任何问题,可就在项目中无法渲染界面,这方面也因为高德的地图文档坑了一波
就因为这句话 我以为是他不支持混合打包,然后就在本地开启Tomcat 结果还真能渲染出来,从此越走越偏,由于是单机应用没有服务器,所以资源必须得放在本地,然后我就想把资源文件assets拷贝到手机中通过本地文件 (file:///storage/emulated/0/www/templates/wholeMap.html) 记载,我是不是个人才(◕ᴗ◕✿),结果整到本地还是不渲染地图,这次我就想是不是内核问题,于是我就切换了一个X5内核,居然还是无法显示,
此时,不信邪的耿直程序员性格出现了。
首先,我们新建了一个空白的工程,然后一步步集成sdk后,发现结果正常。
那就只能怀疑是项目中是否有什么特殊配置导致的问题。
于是我决定重新new 一个项目,一顿简单的操作后居然显示出来了,然后我就开始挨着对比两个项目webview加载的配置,原项目配置比较多,最终定位到到在AndroidManifest application截点的 一个属性 AndroidManifest android:hardwareAccelerated=“false“ 于是我把原项目的这行删掉 运行就显示出来了,
调试的过程中,经历过无数的期盼、失望、重头再来。
我的内心几乎要崩溃了,wwwwww。
后来特意去学习了一波AndroidManifest的application属性
android:hardwareAccelerated="ture" 启动硬件加速
android:largeHeap="true" 应用能申请使用更多的内存
android:allowBackup="false" AllowBackup是在Android 2.2中引入的一个系统备份的功能。允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。第三方应用开发者需要在应用的 AndroidManifest.xml 文件中配置 allowBackup 标志(默认为 true )来设置应用数据是否能能够被备份或恢复。
android:supportsRtl="true" 声明你的application是否愿意支持从右到左(原来RTL就是right-to-left 的缩写)的布局。如果设置为true,targetSdkVersion设置为17或更高,各种RTL的API将被激活,系统使用您的应用程序可以显示RTL布局。如果targetSdkVersion设置为16或更低的设置为false,RTL的API将被忽略或没有影响您的应用程序将具有相同的行为无论对用户现场的选择相关的布局方向(你的布局会从左至右)。此属性的默认值是false。此属性被添加到API 17。
android:usesCleartextTraffic="true" 指示应用程序是否打算使用明文网络流量,例如明文HTTP。目标API级别为27或更低的应用程序的默认值为“ true”。面向API级别28或更高级别的应用默认为“ false”。当属性设置为“ false”时,平台组件(例如,HTTP和FTP堆栈,DownloadManager和MediaPlayer)将拒绝应用程序使用明文流量的请求。强烈建议第三方库也采用此设置。避免明文通信的主要原因是缺乏机密性,真实性和防篡改保护;网络攻击者可以窃听所传输的数据,并且还可以对其进行修改而不会被检测到。7