简体   繁体   English

Android Studio Gradle API 兼容性

[英]Android Studio Gradle API compatibility

I am writing an application in Android Studio.我正在 Android Studio 中编写应用程序。 It compiles and works perfectly on Marshmallow, but when I try to execute it with a Jelly Bean emulator (API 16), it fails.它可以在 Marshmallow 上编译并完美运行,但是当我尝试使用 Jelly Bean 模拟器 (API 16) 执行它时,它失败了。 I also tried to change the compileSdkVersion to 16 and consequently also change all the dependencies with older versions, but it still doesn't work.我还尝试将 compileSdkVersion 更改为 16,因此也更改了旧版本的所有依赖项,但它仍然不起作用。 Can you help me?你能帮助我吗?

This is the error:这是错误:

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) 

I suppose the problem is with the Gradle build settings.我想问题出在 Gradle 构建设置上。 This is my app build.gradle:这是我的应用程序 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'
}

and my project build.gradle:和我的项目 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
}

The error message has a few critical lines in it:错误消息中有几行关键行:

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)

So this has nothing to do with gradle but with one of the icons you use in your NavigationView not being found.因此,这与 gradle 无关,而是与未找到您在NavigationView使用的图标之一有关。 Double check that your icons are valid on API 16 (ie, they are not only found in a drawable-v21 folder for instance).仔细检查您的图标是否在 API 16 上有效(例如,它们不仅可以在drawable-v21文件夹中找到)。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM