web-dev-qa-db-ja.com

XmlPullParserExceptionバイナリXMLファイルの行#17 <vector>タグにはviewportWidth> 0が必要

これは、この質問のフォローアップの質問です。

pdate Android 23.2.0へのサポートライブラリによりエラーが発生します:XmlPullParserExceptionバイナリXMLファイルの行#17 <vector>タグにはviewportWidth> 0が必要です

また、サポートライブラリを23.2に更新し、エラーが発生し始めました。

XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0

その質問はAndroid StudioとGradleについてそれを解決しました。GradleなしでEclipseを使用する場合、これはどのように解決できますか?

21
Yonatan Nir

この質問に対する以前の回答には、Gradleを使用する開発者向けのソリューションがありましたが、Gradleを使用していないため、彼の回答を要約して、いくつかの人々と最終的に私がしたことを助けたいと思います。私が言ったように、私はGradleを使用しないので、彼が書いたものを使用しなかったため、私は彼自身の答えを受け入れました。

最終的に機能するためにいくつかのことをしました。可能な解決策は次のとおりです。

Gradleユーザーの場合:

1)サポートライブラリを古いバージョンに戻します。これにはバグがあるためです。

2)コンパイルされた 'com.Android.support:appcompat-v7:23.2.1'を使用して、バグを修正しました。

3)Gradle Plugin 2.0の場合:

Android {  
    defaultConfig {  
        vectorDrawables.useSupportLibrary = true  
    }  
}

または、Grade Build Tools 1.5.0(classpath 'com.Android.tools.build:gradle:1.5.0'

defaultConfig {
    generatedDensities = []
}

// Gradle 2.0ではこれは不要

aaptOptions {
    additionalParameters "--no-version-vectors"
}

これは、Gradle以外のユーザー向けの部分です。

1)SDKマネージャーを開きます。

2)API 22および23から両方の「Android Wear X」(XはARMまたはIntel))をアンインストールしました。

3)その後、AppCompatライブラリのスタイルの1つでコンパイルエラーが発生しました。それらをコメントアウトしただけです(非常に特殊なスタイルを使用している場合、非常に特殊なデバイスが機能しないリスクがあります)。

その後、私はプロジェクトをきれいにしました、そして、それはちょうど動き始めました。

5
Yonatan Nir

以前のバージョンのappcompatライブラリに切り替えることができます(クイックフィックス):

compile 'com.Android.support:appcompat-v7:23.1.1'

または、現在のライブラリバージョンを保持し、 googleバージョン23.2.0リリースノート の説明に従ってビルドgradleファイルを適切に更新します。

//for Gradle Plugin 2.0+  
Android {  
    defaultConfig {  
        vectorDrawables.useSupportLibrary = true  
    }  
}

Gradle 1.5を使用している場合は、代わりに使用します

defaultConfig {
    generatedDensities = []
}

// This is handled for you by the 2.0+ Gradle Plugin
aaptOptions {
    additionalParameters "--no-version-vectors"
}

少なくともgradleビルドツールをバージョン1.5.0に更新することを忘れないでください。または、generatedDensitiesのような新しいパラメーターを使用できませんでした。

classpath 'com.Android.tools.build:gradle:1.5.0'

理由の詳細 こちら

9
Gomino

新規ユーザーの場合のみ、この問題は次の場所で修正されます。

compile 'com.Android.support:appcompat-v7:23.2.1'

3
Arsalan Shah

既に提供された回答を試した後、イベントは一部のデバイス(主にSamsung)でクラッシュしていました。それとともに、私はこのようなベクトルドローアブルをロードしようとしました

_Drawable drawable = AppCompatDrawableManager.get().getDrawable(context, R.drawable.resource_id);
_

このAppCompatDrawableManagerは、さまざまなメソッドでドロアブルを内部的に取得しようとします。

_Drawable getDrawable(@NonNull Context context, @DrawableRes int resId,
            boolean failIfNotKnown) {
        checkVectorDrawableSetup(context);

        Drawable drawable = loadDrawableFromDelegates(context, resId);
        if (drawable == null) {
            drawable = createDrawableIfNeeded(context, resId);
        }
        if (drawable == null) {
            drawable = ContextCompat.getDrawable(context, resId);
        }

        if (drawable != null) {
            // Tint it if needed
            drawable = tintDrawable(context, resId, failIfNotKnown, drawable);
        }
        if (drawable != null) {
            // See if we need to 'fix' the drawable
            DrawableUtils.fixDrawable(drawable);
        }
        return drawable;
    }
_

したがって、すべてのAndroidバージョンとすべてのデバイス(うまくいけば)で動作します。

注:しない Picasso(2.5.2)またはGlide(3.7.0)のメソッドを使用して、ベクトルDrawableをロードしようとします。内部で非推奨のgetDrawable(@DrawableRes int id)メソッドを使用しているため。一部のデバイスでは_Resources.NotFoundException_になります。

3
Rohit Arya

Gradleの依存関係を最新バージョンに更新した後、プロジェクトのbuildToolsVersionを更新するのを忘れた後、Android Studio 2.2で同じエラーが発生しました。

私が変更され:

    compile 'com.Android.support:appcompat-v7:22.2.1'

に:

    compile 'com.Android.support:appcompat-v7:24.2.1'

BuildToolsVersionは次のように「22.0.1」のままです。

    buildToolsVersion "22.0.1"

したがって、buildToolsVersionを次のように24に更新するだけでした。

    buildToolsVersion "24"

以前はSDK Managerでダウンロードされていたためです。そのため、SDK Managerから最新のbuildToolsVersionを確認し、依存関係のバージョンと一致するかどうかを確認してください。

これが誰かを助けることを願っています。

3
Cletus Ajibade

まだGradleなしでEclipseを使用している私のような人々のために、Android Support Library r23.2.0をLollipop以前のデバイス(API <21)で実行しています。

この問題はr23.2.1で修正され、APIレベル16でプロジェクトを正常に実行できました。

このバージョンのEclipse用ライブラリは、SDK Managerからはもう利用できませんが、この link から手動でダウンロードできます。

0
Couitchy

問題がリリースアプリバージョンにある場合。これは私のリリースで解決しました。 shrinkResources true作成されたドロアブルフォルダーには、ドロアブルファイルがありません。

    {
        ..
        minifyEnabled true
        shrinkResources false

    }
0
Somir Saikia