无法升级到新的com.android.support:support-v4:24.2.0库

时间:2016-08-25 16:23:43

标签: android

我有一个在24.0.0上正常运行的Android应用程序 - 下面是我的gradle依赖项:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.android.support:cardview-v7:24.0.0'
    compile 'com.android.support:recyclerview-v7:24.0.0'
    compile 'com.android.support:palette-v7:24.0.0'
    compile files('libs/ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar')
}

但是我下载了最新的SDK,并且有兴趣升级到24.2.0。由于我需要支持库,因此我将com.android.support:support-v4添加到依赖项中,如下所示:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:support-v4:24.2.0'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.android.support:design:24.2.0'
    compile 'com.android.support:cardview-v7:24.2.0'
    compile 'com.android.support:recyclerview-v7:24.2.0'
    compile 'com.android.support:palette-v7:24.2.0'
    compile files('libs/ksoap2-android-assembly-3.6.1-jar-with-dependencies.jar')
}

这会导致以下异常:

   java.lang.NullPointerException: Attempt to invoke virtual method 
     'android.graphics.drawable.Drawable[] android.widget.TextView.getCompoundDrawables()' 
     on a null object reference
     at android.support.v4.widget.TextViewCompat.getCompoundDrawablesRelative(TextViewCompat.java:285)

在升级时,我是否遗漏了文档中除了包括support-v4之外我应该做的事情?这是我的参考: https://developer.android.com/topic/libraries/support-library/features.html#v4

  

注意:在支持库版本24.2.0之前,有一个v4支持库。该库分为多个模块以提高效率。为了向后兼容,如果您在Gradle脚本中列出support-v4,则您的APK将包含所有v4模块。

感谢您的帮助!

4 个答案:

答案 0 :(得分:6)

升级到支持库版本24.2.0和构建工具24.0.2后,我尝试对包含TextInputLayout的布局进行膨胀时得到完全相同的异常,该布局中没有EditText。

如果我在没有EditText的情况下注释掉TextInputLayout,那么异常就会消失。如果无法做到这一点,我建议回滚到以前版本的支持库,直到解决此问题。

答案 1 :(得分:0)

将您的Android Sdk Build-tools更新为

system

并在模块应用build.gradle

中将它们添加为buildtools

尝试清洁&重建你的项目 它有助于从缓存中清除以前应用的依赖项。

<强>更新

尝试使用7.0模拟器在Api24中运行此应用程序,因为目标sdk为24 可能它会帮助你 但是因为你的min sdk是21,所以这也适用于那些模拟器。
也遵循这个 Android Studio-&gt;档案 - &gt;使缓存无效并重新启动android studio 无效重启

答案 2 :(得分:0)

可能是你正在包装

以外的东西
android.support.design.widget.TextInputEditText

android.support.design.widget.TextInputLayout

答案 3 :(得分:0)

我最近遇到了这个问题,发现布局文件中存在以下问题

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="100dp">

        </android.support.design.widget.TextInputEditText>

这是来自默认的google登录示例。

删除此修复了nullpointer错误。