美文网首页
Android APP报错--各种疑难杂症问题

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

作者: 白夜的地平线 | 来源:发表于2019-08-21 21:40 被阅读0次

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

    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

    <item name="android:windowIsTranslucent">true</item>
    改成
    <item name="android:windowIsTranslucent">false</item>
    <item name="android:windowDisablePreview">true</item>
    

    有时候这就搞定了
    但有时候还不行,不行怎么办?继续改,在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<okhttp3.internal.platform.ConscryptPlatform$configureTrustManager$1>
    

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

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

    10、报错内容如下:

    Rejecting re-init on previously-failed class java.lang.Class<androidx.core.view.ViewCompat$2>: 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

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    

    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 No signature of method: build_tyj1ke2ug0kj94sw357d7sh2.android() is applicable for argument types:

    后续继续更新

    相关文章

      网友评论

          本文标题:Android APP报错--各种疑难杂症问题

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