今天用我自己的手机安装我正在开发的APP的时候,出现闪退现象,我手机Android9的,在此记录下原因
代码逻辑有问题也可能导致闪退,我讲的不是代码逻辑的问题,而是配置的问题,你得先确定自己代码逻辑没问题再来看我说的。首先,Android8以上的手机需要配置以下权限,大概就是允许安装未知应用的权限吧(我也不太了解,猜的,反正加上就是了,不然更新的自动安装的时候会安装不上)
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
然后Android9的手机安装闪退,并且报:
Android9.0_P:ClassNotFoundException:Didn't find class "org.apache.http.ProtocolVersion" on path:XXXXX
这么一个错。
java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted
这样的错,网上找了一下据说是Android9.0 默认是禁止所有的http请求的,我们还需要在AndroidManifest.xml的application节点中加上android:usesCleartextTraffic="true"属性,如下:
<application
android:name=".application.MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:largeHeap="true"
android:theme="@style/QMUI.Compat.NoActionBar"
android:usesCleartextTraffic="true"
tools:ignore="GoogleAppIndexingWarning">
<!--android9闪退-->
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
这样Android9闪退的问题就解决啦!