これは、この質問のフォローアップの質問です。
また、サポートライブラリを23.2に更新し、エラーが発生し始めました。
XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0
その質問はAndroid StudioとGradleについてそれを解決しました。GradleなしでEclipseを使用する場合、これはどのように解決できますか?
この質問に対する以前の回答には、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つでコンパイルエラーが発生しました。それらをコメントアウトしただけです(非常に特殊なスタイルを使用している場合、非常に特殊なデバイスが機能しないリスクがあります)。
その後、私はプロジェクトをきれいにしました、そして、それはちょうど動き始めました。
以前のバージョンの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'
理由の詳細 こちら
新規ユーザーの場合のみ、この問題は次の場所で修正されます。
compile 'com.Android.support:appcompat-v7:23.2.1'
既に提供された回答を試した後、イベントは一部のデバイス(主に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
_になります。
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
を確認し、依存関係のバージョンと一致するかどうかを確認してください。
これが誰かを助けることを願っています。
まだGradleなしでEclipseを使用している私のような人々のために、Android Support Library r23.2.0をLollipop以前のデバイス(API <21)で実行しています。
この問題はr23.2.1で修正され、APIレベル16でプロジェクトを正常に実行できました。
このバージョンのEclipse用ライブラリは、SDK Managerからはもう利用できませんが、この link から手動でダウンロードできます。
問題がリリースアプリバージョンにある場合。これは私のリリースで解決しました。 shrinkResources true
作成されたドロアブルフォルダーには、ドロアブルファイルがありません。
{
..
minifyEnabled true
shrinkResources false
}