近几天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();
        }
    }

参考:https://www.cnblogs.com/bluestorm/p/10276110.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注