美文网首页
Android工程compileSdkVersion改为6.0引

Android工程compileSdkVersion改为6.0引

作者: zizi192 | 来源:发表于2017-08-24 17:43 被阅读0次

    在开发中因获取上文获取mac地址的需要,将compileSdkVersion改为6.0(23).本文记录compileSdkVersion更改后引入的编译问题。

    1、无法识别org.apache.http.Header

    解决方法:引入org.apache.http.legacy。
    一、In Android Studio,在build.gradle中添加useLibrary

    android {
        useLibrary 'org.apache.http.legacy'
    }
    

    二、In Eclipse copy,将 AndroidSDK/platforms/android-23/optional 文件夹中的org.apache.http.legacy.jar拷贝至libs目录

    2、不能识别Notification.setLatestEventInfo

    这个版本移除了 Notification.setLatestEventInfo() 方法。
    网上一般建议使用 Notification.Builder 类来代替,但在使用过程中,会出现如下编译错误。

    Call requires API level 16 (current min is 14): android.app.Notification.Builder#build
    

    但目前工程兼容4.0版本,minSdkVersion还是14。这时候需要做兼容处理。
    这个时候针对API level低于16的版本,可以使用Notification.Builder来构造函数,但需要 使用getNotification()来获取Notification。在API level为16及以上的版本,则使用Builder.build来处理。

    网上也看到别的方案,在API level低于16时,用反射来调用setLatestEventInfo方法。具体未验证,可参考

    //反射代码
    Class clazz = mNotification.getClass();  
    try {  
        Method m2 = clazz.getDeclaredMethod("setLatestEventInfo", Context.class,CharSequence.class,CharSequence.class,PendingIntent.class);  
        m2.invoke(mNotification, mContext, mContentTitle,  
                                    contentText, mContentIntent);   
    } catch (Exception e) {  
        // TODO: handle exception  
        e.printStackTrace();  
    }  
    

    3、FloatMath找不到方法

    在 Android6.0 之后 FloatMath 类就被弃用了,使用 Math 类来替代。
    如:FloatMath.floor () 改为 Math.floor();

    参考文档:
    http://blog.csdn.net/s13488941815/article/details/53464869
    http://blog.csdn.net/solo_two/article/details/51457149
    http://blog.csdn.net/iblue007/article/details/51917115

    相关文章

      网友评论

          本文标题:Android工程compileSdkVersion改为6.0引

          本文链接:https://www.haomeiwen.com/subject/qwocdxtx.html