Android APP报错--各种疑难杂症问题

以后我遇到所有的适配问题都会放置在这个里面

1、魅族APK安装报错:

测试手机:华为8.0两款(分刘海屏和非刘海屏),小米两款,oppo两款,魅族一款,vivo一款,锤子一款
只有魅族报错,
报错内容如下

DELETE_FAILED_INTERNAL_ERROR,
Error while Installing APKs

无法安装完全不知道什么鬼,除开魅族手机,其余测试手机都能直接通过debug安装,两个小时多个开发代码版本对比发现,是库和Gradle的锅,这里建议Gradle版本降至3.2.1,不会影响Androidx也不会影响大多数库。

小米手机目前是所有测试机器中最垃圾的,debug测试卡顿这个问题一年了都没得人修复,社区直接删除了debug卡顿的反馈,直接不修复这个,操作秀到我了666,垃圾,测试一次麻烦得要死。

2、全屏适配:Only fullscreen opaque activities can request orientation错误崩溃

描述:activity弹出activitytwo,其中
找到你设置透明的Activity,将theme

true
改成
false
true

有时候这就搞定了
但有时候还不行,不行怎么办?继续改,在AndroidManifest中对应的activity下面添加如下代码,让他跟着父页面进行屏幕适应

android:screenOrientation="behind"

nice搞定,还不行私聊??

3、单例音乐循环播放导致主页面动画卡顿,报错为:MEDIA_PLAYBACK_COMPLETE(2)

情况:主页全是动画,目测最少12个json动画(每个动画各个渲染方式也挺多的,这里就不讲了)

MediaPlayer使用如下

private static MediaPlayer mediaPlayer = null;//声明一个MediaPlayer对象

public static void playBGSound(final Activity activity) {
        if (mediaPlayer != null) {
            mediaPlayer .release();//释放资源
        }
        mediaPlayer = MediaPlayer.create(activity, R.raw.music);
        mediaPlayer .setVolume(0.5,0.5);
        mediaPlayer .setLooping(true);//循环不再做骚操作了,直接循环了
        mediaPlayer .start();
//        //为MediaPlayer添加播放完成事件监听       //下面的写法会与主页面冲突,会导致卡顿
//        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
//            @Override
//            public void onCompletion(MediaPlayer mp) {
//                try {
//                    Thread.sleep(3000);//让线程休眠3秒
//                    playBGSound(activity);//重新播放音乐
//                } catch (InterruptedException e) {
//                    e.printStackTrace();
//                }
//            }
//        });
    }

神奇的bug

4、最近又发现了一个麻烦的问题,Android弹窗的问题,用activity弹出activity不能全屏的问题(dialog弹出会引出虚拟按键,给用户一种屏幕在动的赶脚,太LOW了,当然这里说的仅只是app全屏的情况,非全屏完全不用考虑,直接用dialog就行)

弹窗问题实现后续会贴上来,先说解决办法:

  Window window = this.getWindow();//this===当前activity
        window .setType( WindowManager.LayoutParams.TYPE_APPLICATION_PANEL);
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        window.setLayout( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

直接强制全屏,网上有很多发什么

getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);//(鸡毛用没有)

做个记录大家看一下

5、新问题:突然发现的,前后台切换,有时候会导致触发系统GC,会干掉你的部分数据

应用进入后台,系统可能因为内存紧张而杀掉activity,一般的页面还行,但是当你的页面有滚动条的时候就尴尬了啊,他有可能干掉你滚动条setProgress(int),int可能为空,哦 卖狗的,不说了,提高优先级,防止被kill。
application 里面添加android:persistent="true"
设置后app提升为系统核心级别,只要不是用户主动kill掉就不会被kill掉
还有一些方法,比如保存数据,我这里更加推荐数据保存的方式,存储在SharedPreference里面,在application 里面初始化主要的数据也行,数据保存就不多说了,网上一搜一大把,自己找找,用什么办法看自己吧!这个错误记录到这里了。

扩展:我本以为只有上面这种:系统可能因为内存紧张而杀掉activity,实际还有一种可能,后续更新,https://www.jianshu.com/p/635970ac603a里面提到的,也是可以解决的。

6、关于webview加载html(不能用腾讯的X5内核,腾讯X5内核截止到现在都不支持直接调用本地域名地址---被这个问题搞到绝望,最后才发现)

1、webview加载本地手机SD存储的html(图片也在本地)
体验比较好,加载速度快,包小
2、webview加载assert里面的html文件(不推荐,html内容比较多的情况下,包很大)
3、webview加载类似wap的网页url(图片和域名都采用http/https)(图片加载缓慢,体验不好)
4、webview加载类似wap的网页url(域名都采用http/https,图片下载在本地)
这个方法需要重写WebResourceResponse拦截url,把图片转文件流再放到html上去,缺点很明显,低端机经常加载不出来,尴尬
具体代码需要可以留言,主要是网上很多,这里也不想过多缀述不然看着累

一切为了体验和性能加油

7、继续升级Android studio3.5,报错Unable to start the daemon process

org.gradle.jvmargs=-Xmx1536m改成
org.gradle.jvmargs=-Xmx512m

8、这里说一个android studio比较奇怪的一个问题,打包失败的情况,android studio并不是每次都打包成功,极少极少的情况会出现打包失败的情况,因此在做打包的操作的时候,需要先clean project一遍然后再rebuild一遍,最后再去通过build进行打包,习惯很重要啊

9、错误报错:如下

Rejecting re-init on previously-failed class java.lang.Class

解决办法:添加库文件如下即可解决

implementation 'org.conscrypt:conscrypt-android:2.2.1'

10、报错内容如下:

Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/view/View$OnUnhandledKeyEventListener;

很多人都在说降低版本就行,确实是一个解决办法,

11、升级android studio4.0版本报错

          报错情况                                        正确修改方式
response.body.string()           response.body?.string().toString()


类似下面这种写法
var url: String? = null 
Log.e("urlagent", url)             
改成
var url: String? = null 
Log.e("urlagent", url!!)  

现在定义后要做为空的检查了。。

12、Android WebView 加载失败net::ERR_CLEARTEXT_NOT_PERMITTED

方法1(有可能没用):在application里面添加如下(Android 9.0(API级别28)开始,默认情况下禁用明文支持)这里打开明文支持,不过没得有可能有用
android:usesCleartextTraffic="true"
方法2(实测有用):res 下新建 xml 目录新建文件network_security_config.xml



    

AndroidManifest.xml 的 application里再添加

 android:networkSecurityConfig="@xml/network_security_config"

13、android WebView LayoutAlgorithm.SINGLE_COLUMN失效问题

webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);只针对4.4以下有效,4.4后就无效了,目前比较常用的方式就是在html的标签里面添加

width: 100%;height: auto;

14、添加线程报错

结果Call from user 0 as user without permission INTERACT_ACROSS_USERS
目前不知道为什么,还早找原因,线程添加的object的wait和notify
不加就没事,加了就直接报错

15、xml无法编译

网上说的删除.im文件啊,什么勾选啊之类的全部无效
我用了个最最直白的方式,直接删除下载最新版
https://developer.android.google.cn/studio/#downloads

16、PictureSelector has no zero argument constructor

End of input at character 0 of

17 高德地图嵌入卡顿问题,

可能的情况有两种
1、高德版本问题
这个情况升级版本就行,有问题的版本可能是7.几的版本。具体是多少忘记了

2、外层嵌套问题,导致焦点获取不准确
外层只要嵌入NestedScrollView或者ScrollView等滚动类型的控件都会出现这样的问题
需要对页面进行重新布局就行,不行的话,你就只有监听点击事件对对应的区域进行管理就行

18

后续继续更新

你可能感兴趣的:(Android APP报错--各种疑难杂症问题)