Updated on 四月 25, 2019
近几天Android开发遇到的问题
个别机型崩溃报Unable to instantiate application java.lang.RuntimeException: MultiDex installation failed
使用multidex后,个别机型报crash报如上错误。尝试将compile ‘com.android.support:multidex:x.x.x’版本由1.0.3降为1.0.1,暂时修复此问题
Android P http访问连接失败问题
程序运行在Android P上时,无法访问网络。原因是Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接。解决办法最简单的是将targetSdkVersion降到27以下。
但这貌似不是最佳方案,参见:https://stackoverflow.com/questions/45940861/android-8-cleartext-http-traffic-not-permitted
Android P弹窗Detected problems with API compatibility(visit g.co/dev/appcompat for more info)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { closeAndroidPDialog(); } private void closeAndroidPDialog(){ try { Class aClass = Class.forName("android.content.pm.PackageParser$Package"); Constructor declaredConstructor = aClass.getDeclaredConstructor(String.class); declaredConstructor.setAccessible(true); } catch (Exception e) { e.printStackTrace(); } try { Class cls = Class.forName("android.app.ActivityThread"); Method declaredMethod = cls.getDeclaredMethod("currentActivityThread"); declaredMethod.setAccessible(true); Object activityThread = declaredMethod.invoke(null); Field mHiddenApiWarningShown = cls.getDeclaredField("mHiddenApiWarningShown"); mHiddenApiWarningShown.setAccessible(true); mHiddenApiWarningShown.setBoolean(activityThread, true); } catch (Exception e) { e.printStackTrace(); } }