Android错误收集,未完待续

该博客旨在记录android中出现的错误

0、vivo9.0 webview下载不弹出

出现情况,vivo9.0手机上webview下载时不能调起下载,而华为和小米9.0手机是可以的。
修改:setting.setSupportMultipleWindows(true);

1、Only fullscreen opaque activities can request orientation

原因以及出现的时机:当targetsdk>=27且手机的Android系统是26,27的时候会crash

解决方式:
(1)设置target为26及以下,27版本属性不能共存(全屏和横竖屏),看了源码后发现这个问题在28的时候被修正回来了,所以目前只有target为27的时候才会出现这个问题。
(2)设置横竖屏为behind等非固定方向条件
(3)使用Hook动态修改横竖屏,参考我上一篇博客链接: Android使用Hook解决Only fullscreen opaque activities can request orientation的crash问题.

2、Apache Http在手机系统android P以上版本被移除

出现 org/apache/http/client/methods/HttpGet 找不到的问题。
解决方法:只需要在AndroidManifest.xml的application标签下和activity同级别,增加如下代码:

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

参考我之前的文章: Classloader关于apache的jar在android里targetSdkVersion小于28时的表现调研.

3、Android P网络适配 Http访问失败报错CLEARTEXT

解决方法:
方法一:在 AndroidManifest.xml application 标签内应用上面的xml配置

android:networkSecurityConfig="@xml/network_security_config"

network_security_config.xml

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

方法二:在 AndroidManifest.xml application 标签内应用上面的xml配置android:usesCleartextTraffic=“true”

<application
        android:allowBackup="false"
        android:icon="@drawable/demo_icon"
        android:label="@string/demo_app_name" 
        android:usesCleartextTraffic="true">

4、java.lang.IllegalArgumentException: Invalid Region.Op - only INTERSECT and DIFFERENCE are allowed

出现错误的原因:当target为28时,且在android 9.0以上手机上。

报错代码:

 canvas.clipPath(mPath0, Region.Op.XOR);

解决方法:

 if(Build.VERSION.SDK_INT >= 28){
     canvas.clipPath(mPath0);
 }else {
     canvas.clipPath(mPath0, Region.Op.XOR);
 }

5、INSTALL_FAILED_INSUFFICIENT_STORAGE

内存问题,由于空间不足安装失败:Installation failed with message INSTALL_FAILED_INSUFFICIENT_STORAGE.

It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.

WARNING: Uninstalling will remove the application data!

Do you want to uninstall the existing application?

6、Failed to install MD_60005_20180709_3.6.5_135 (1).apk: Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION

暂时还没有解决,可能是apk的签名有问题,针对9.0的手机

Failed to install MD_60005_20180709_3.6.5_135 (1).apk: Failure [INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION:

Failed reading assets/360sdk_res/res_656_5.dat in android.util.jar.StrictJarFile@353a20d: META-INF/MANIFEST.MF has invalid digest forassets/360sdk_res/res_656_5.dat in assets/360sdk_res/res_656_5.dat]

7、Detected problems with API compatibility(visit g.co/dev/appcompat for more info)

原因:在Android P以上手机上运行debug安装包,如果调用了了android中hide的api,比如使用反射调用等方式调用隐藏的api,此时会弹出上述错误的对话框。不过不用担心,仅仅是在调试模式(debug)下会这样,切换成release不会提示。

解决方法:切换成release模式即可

8、在Activity的onCreate()方法中调用requestPermission会出现闪现,延时100毫秒则没事,研究下requestPermission在这中间干啥了

9、迁移到 androidx后 android.support.v4.content.FileProvider找不到问题。

同:java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider: java.lang.ClassNotFoundException: Didn’t find class “android.support.v4.content.FileProvider” on path:

解决方法:

将 android.support.v4.content.FileProvider修改为
androidx.core.content.FileProvider

10、与JS交互报错:Java exception was raised during method invocation

在与JS交互的方法中不能直接操作View或者一些在UI线程的操作都不可以,需要post到主线程才能生效

未完待续

猜你喜欢

转载自blog.csdn.net/fanwei4751/article/details/97916705