Android Studio Gradle API兼容性

时间:2016-10-23 23:06:27

标签: android api android-studio gradle compatibility

我正在Android Studio中编写应用程序。它在Marshmallow上编译并完美运行,但是当我尝试使用Jelly Bean模拟器(API 16)执行它时,它会失败。我还尝试将compileSdkVersion更改为16,因此也更改了旧版本的所有依赖项,但它仍然无法正常工作。你能救我吗?

这是错误:

FATAL EXCEPTION: main
                                                                         java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.carlo.application/com.example.carlo.clashofschools.MainActivity}: android.view.InflateException: Binary XML file line #16: Error inflating class android.support.design.widget.NavigationView
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
                                                                             at android.app.ActivityThread.access$600(ActivityThread.java:130)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99)
                                                                             at android.os.Looper.loop(Looper.java:137)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                             at java.lang.reflect.Method.invokeNative(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:511)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                             at dalvik.system.NativeStart.main(Native Method)
                                                                          Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class android.support.design.widget.NavigationView
                                                                             at android.view.LayoutInflater.createView(LayoutInflater.java:613)
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
                                                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                                                                             at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284)
                                                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                                                                             at com.example.carlo.clashofschools.MainActivity.onCreate(MainActivity.java:37)
                                                                             at android.app.Activity.performCreate(Activity.java:5008)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                                             at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                             at android.os.Looper.loop(Looper.java:137) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                             at dalvik.system.NativeStart.main(Native Method) 
                                                                          Caused by: java.lang.reflect.InvocationTargetException
                                                                             at java.lang.reflect.Constructor.constructNative(Native Method)
                                                                             at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
                                                                             at android.view.LayoutInflater.createView(LayoutInflater.java:587)
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
                                                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                                             at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                             at com.example.carlo.clashofschools.MainActivity.onCreate(MainActivity.java:37) 
                                                                             at android.app.Activity.performCreate(Activity.java:5008) 
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                                             at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                             at android.os.Looper.loop(Looper.java:137) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                             at dalvik.system.NativeStart.main(Native Method) 
                                                                          Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f02005a a=2 r=0x7f02005a}
                                                                             at android.content.res.Resources.loadDrawable(Resources.java:1892)
                                                                             at android.content.res.Resources.getDrawable(Resources.java:659)
                                                                             at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:346)
                                                                             at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197)
                                                                             at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:185)
                                                                             at android.support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100)
                                                                             at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421)
                                                                             at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.prepareMenuItems(NavigationMenuPresenter.java:505)
                                                                             at android.support.design.internal.NavigationMenuPresenter$NavigationMenuAdapter.update(NavigationMenuPresenter.java:446)
                                                                             at android.support.design.internal.NavigationMenuPresenter.updateMenuView(NavigationMenuPresenter.java:112)
                                                                             at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:248)
                                                                             at android.support.design.widget.NavigationView.<init>(NavigationView.java:171)
                                                                             at android.support.design.widget.NavigationView.<init>(NavigationView.java:97)
                                                                             at java.lang.reflect.Constructor.constructNative(Native Method) 
                                                                             at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 
                                                                             at android.view.LayoutInflater.createView(LayoutInflater.java:587) 
                                                                             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 
                                                                             at android.view.LayoutInflater.rInflate(LayoutInflater.java:746) 
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:489) 
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 
                                                                             at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 
                                                                             at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) 
                                                                             at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                                                                             at com.example.carlo.clashofschools.MainActivity.onCreate(MainActivity.java:37) 
                                                                             at android.app.Activity.performCreate(Activity.java:5008) 
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
                                                                             at android.app.ActivityThread.access$600(ActivityThread.java:130) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:99) 
                                                                             at android.os.Looper.loop(Looper.java:137) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                                             at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                             at dalvik.system.NativeStart.main(Native Method) 

我认为问题在于Gradle构建设置。这是我的app build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "com.example.carlo.application"
        minSdkVersion 15
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:support-v4:24.2.1'
    compile 'com.android.support:cardview-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:gridlayout-v7:24.2.1'
}

和我的项目build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1 个答案:

答案 0 :(得分:1)

错误消息中有几条关键线:

Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path)
  ...
  at android.support.v7.view.menu.MenuItemImpl.getIcon(MenuItemImpl.java:421)
  ...
  at android.support.design.widget.NavigationView.inflateMenu(NavigationView.java:248)

所以这与gradle无关,但是你在NavigationView找不到的图标之一。仔细检查您的图标在API 16上是否有效(例如,它们不仅位于drawable-v21文件夹中)。