简体   繁体   English

Hello World应用程序在2.3.3(API 10)上崩溃,但在5.1(API 22)上运行良好

[英]Hello World app crashes on 2.3.3 (API 10), but works fine on 5.1 (API 22)

Using Android Studio I have created a very basic skeletal app. 使用Android Studio,我创建了一个非常基本的骨骼应用。 It works on android 5.1 API 22, but crashes on invocation on android 2.3.3 API 10. 它适用于android 5.1 API 22,但在android 2.3.3 API 10上调用时崩溃。

Here is the crash log. 这是崩溃日志。 It shows resource not found exception for abc_vector_test.xml file. 它显示abc_vector_test.xml文件的资源未找到异常

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo {com.myco.k5/com.myco.k5.MainActivity}: 
android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f020052
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3691)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
at dalvik.system.NativeStart.main(Native Method)
 Caused by: android.content.res.Resources$NotFoundException: File res/drawable/abc_vector_test.xml from drawable resource ID #0x7f020052
at android.content.res.Resources.loadDrawable(Resources.java:1977)
at android.content.res.Resources.getDrawable(Resources.java:602)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:388)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190)
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:711)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:195)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:81)
at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:131)
at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:209)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
at com.myco.k5.MainActivity.onCreate(MainActivity.java:13)    
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3691) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
at dalvik.system.NativeStart.main(Native Method) 
 Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #17: invalid drawable tag vector
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:783)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1952)
at android.content.res.Resources.getDrawable(Resources.java:602) 
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:388) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:202) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190) 
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:711) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:195) 
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:81) 
at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:131) 
at android.support.v7.app.AppCompatDelegateImplV9.<init>(AppCompatDelegateImplV9.java:155) 
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:209) 
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:185) 
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:519) 
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71) 
at com.myco.k5.MainActivity.onCreate(MainActivity.java:13) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:3691) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
at dalvik.system.NativeStart.main(Native Method) 

I have already tried some of the approaches (see code below). 我已经尝试了一些方法(请参见下面的代码)。 Files are: 文件是:

AndroidManifest.xml: AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myco.k5" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:name="android.support.multidex.MultiDexApplication"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>

activity_main.xml: activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"    
    android:layout_width="match_parent"
    android:layout_height="match_parent" android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <android.support.design.widget.AppBarLayout         
        android:layout_height="wrap_content"
        android:layout_width="match_parent"         
        android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar android:id="@+id/toolbar"
            android:layout_width="match_parent" android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"     
            app:popupTheme="@style/AppTheme.PopupOverlay" />

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

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"     
        android:layout_width="match_parent"
        android:layout_height="match_parent"     
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"
        tools:showIn="@layout/activity_main" tools:context=".MainActivity">

        <TextView android:text="Hello World!" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </RelativeLayout>
</android.support.design.widget.CoordinatorLayout>

MainActivity.java: MainActivity.java:

package com.myco.k5;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

app's build.gradle file: 应用程序的build.gradle文件:

    apply plugin: 'com.android.application'

    android {
        compileSdkVersion 25
        buildToolsVersion "23.0.1"

        defaultConfig {
            applicationId "com.myco.k5"
            minSdkVersion 10
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            multiDexEnabled true
        }
        dexOptions {
            incremental true
            javaMaxHeapSize "4g"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:25.3.1'
        compile 'com.android.support:design:25.3.1'
        compile 'com.android.support:multidex:1.0.1'
    }

Top level build.gradle file:

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

            // 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
    }

Please advice on how can this crash be resolved. 请提供有关如何解决此崩溃的建议。


SOLVED : Solved this by using the following 解决 :通过使用以下解决此问题

  1. In app level build.gradle file used 在应用程序级别使用build.gradle文件

    android { android {
    // your entries here //在这里输入
    generatedDensities = [] } // Flag notifies aapt to keep the attribute IDs around aaptOptions { additionalParameters "--no-version-vectors" } generateDensities = []} //标志通知aapt将属性ID保留在aaptOptions周围{AdditionalParameters“ --no-version-vectors”}

    1. In the top level build.gradle file changed classpath from 1.4.0 to 1.5.0 在顶层build.gradle文件将类路径从1.4.0更改为1.5.0

classpath 'com.android.tools.build:gradle:1.5.0' // Earlier it was 1.4.0 here classpath'com.android.tools.build:gradle:1.5.0'//之前是1.4.0

In your case, you have to enable the Vector Drawable to use it in old android versions. 在您的情况下,您必须启用Vector Drawable才能在旧的android版本中使用它。 Add this in your build.gradle file (module app). 将此添加到您的build.gradle文件(模块应用程序)中。

For Gradle Plugin 2.0+ 对于Gradle插件2.0+

android {
       defaultConfig {
         vectorDrawables.useSupportLibrary = true
        }
     }

For Gradle Plugin 1.5 or below 对于Gradle插件1.5或更低版本

 android {
      defaultConfig {
        // Stops the Gradle plugin’s automatic rasterization of vectors
        generatedDensities = []
      }
      // Flag notifies aapt to keep the attribute IDs around
      aaptOptions {
        additionalParameters "--no-version-vectors"
      }
    }

After do that, you have to change your ImageView to use the compat src like that: 之后,您必须更改ImageView以使用compat src,如下所示:

  <ImageView
   app:srcCompat="@drawable/abc_vector_test"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"/>

暂无
暂无

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

相关问题 应用程序在Android 5.1和6.1中运行良好,但在4.10(API 16)中崩溃 - App works well in android 5.1 and 6.1 but crashes in 4.10(API 16) Android App在API级别19崩溃,但在19以上的API上可以正常工作 - Android App crashes on API level 19 but works fine on API above 19 在API 19上渲染矢量资产时,Android App崩溃在20以上的API上正常运行 - Android App Crashes while rendering vector asset on API 19 works fine on API above 20 mapView.onCreate 在 cordova android 应用程序中工作正常,api 级别为 26,但在 Z8A5DA52ED1205441A8AAZE 级别时崩溃 - mapView.onCreate works fine in cordova android app with api level 26, but crashes with api level 28 这个Android应用程式无法在API 22模拟器中使用,但可以在API 16模拟器中使用 - this android app works in API 22 emulator not but in API 16 emulator Android 应用程序在少数真实设备上崩溃,但在与真实设备具有相同 API 的模拟器上运行良好 - Android app crashes on few real devices but works fine on an emulator which has the same API as that of the real device Android 2.3.3 API 10操作栏 - android 2.3.3 api 10 action bar Android Edittext 不能专注于 API 22(代码在 API 23 及更高版本上运行良好) - Android Edittext can't be focused on API 22 (code works fine on API 23 and higher) android app在android 2.3.3中工作正常,但在android 4.1.2中停止 - android app works fine in android 2.3.3 but stops in android 4.1.2 Android Map适用于API 19,但不适用于API 22 - Android map works on API 19 but not on API 22
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM