Android 目录工程各文件的说明
proguard-rules.pro 代码混淆
Android studio写在proguard-rules.pro中,
写在proguard-android.txt中也可以。
Apache HTTP 客户端弃用影响采用非标准 ClassLoader 的应用
借助 Android 6.0取消了对 Apache HTTP 客户端的支持。
此变更对大多数
不以 Android 9 或更高版本为目标的应用没有任何影响。
不过此变更会影响使用非标准 ClassLoader 结构的某些应用,即使这些应用不以 Android 9 或更高版本为目标平台。
如果应用使用显式委托到系统 ClassLoader 的非标准 ClassLoader,则应用会受到影响。 在 org.apache.http.* 中查找类时,这些应用需要委托给应用 ClassLoader。
如果它们委托给系统 ClassLoader,则应用在 Android 9 或更高版本上将失败并显示 NoClassDefFoundError,
因为系统 ClassLoader 不再识别这些类。 为防止将来出现类似问题,一般情况下,
应用应通过应用 ClassLoader 加载类,而不是直接访问系统 ClassLoader。
Android中的ClassLoader类型
和Java中的ClassLoader类型类似,也分为两种类型,
分别是系统ClassLoader和自定义ClassLoader。
其中系统ClassLoader包括三种分别是BootClassLoader、PathClassLoader和DexClassLoader。
BootClassLoader
Android系统启动时会使用BootClassLoader来预加载常用类,是由Java实现的。
PathClassLoader
Android系统使用PathClassLoader来加载系统类和应用程序的类。
DexClassLoader
DexClassLoader可以加载dex文件以及包含dex的apk文件或jar文件,也支持从SD卡进行加载。非标准 ClassLoader 结构的某些应用?
Android9以后应用支持 Apache HTTP 客户端
Android9.0_P:ClassNotFoundException: Didn't find class "org.apache.http.conn.scheme.SchemeRegistry"
Apache HTTP 客户端弃用
在 Android 6.0 中,我们取消了对 Apache HTTP 客户端的支持。 从 Android 9 开始,默认情况下该内容库已从 bootclasspath 中移除且不可用于应用。
要继续使用 Apache HTTP 客户端,以 Android 9 及更高版本为目标的应用可以向其 AndroidManifest.xml的application节点下 添加以下内容:
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
网友评论