2016-02-26 15 views
21

Đây là một theo dõi câu hỏi cho câu hỏi này:XmlPullParserException dòng tập tin XML Binary # 17 <vector> thẻ đòi hỏi viewportWidth> 0

Update Android Support Library to 23.2.0 cause error: XmlPullParserException Binary XML file line #17<vector> tag requires viewportWidth > 0

Tôi cũng cập nhật các thư viện hỗ trợ cho 23,2 và bắt đầu nhận được lỗi:

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

Câu hỏi đó đã giải quyết nó cho Android Studio và Gradle. Làm thế nào điều này có thể được giải quyết khi sử dụng Eclipse mà không có Gradle?

+0

Bản sao có thể có của [Cập nhật thư viện hỗ trợ Android thành 23.2.0 gây ra lỗi: XmlPullParserException Dòng tệp XML nhị phân # 17 thẻ yêu cầu viewportWidth> 0] (http: // stackoverflow.com/questions/35622438/update-android-hỗ trợ-thư viện-to-23-2-0-nguyên-lỗi-xmlpullparserexception-bin) –

Trả lời

4

Một câu trả lời trước cho câu hỏi này đã có một giải pháp cho phát triển những người sử dụng Gradle, nhưng tôi không sử dụng Gradle vì vậy tôi muốn tóm tắt câu trả lời của mình mà giúp một số người và những gì tôi cuối cùng đã làm. Tôi chấp nhận câu trả lời của riêng mình và không phải là câu trả lời của anh ấy như tôi đã nói, tôi không sử dụng Gradle nên tôi không sử dụng những gì anh ấy viết.

Tôi đã làm vài việc để nó hoạt động cuối cùng. giải pháp khả thi là:

đầu tiên cho người dùng Gradle:

1) Hoàn nguyên các thư viện hỗ trợ cho các phiên bản cũ, kể từ khi chương trình này có một lỗi.

2) sử dụng biên dịch 'com.android.support:appcompat-v7:23.2.1' vì lỗi đã được sửa ở đó.

3) cho Gradle Plugin 2.0:

android { 
    defaultConfig { 
     vectorDrawables.useSupportLibrary = true 
    } 
} 

Hoặc bạn có thể sử dụng lớp Xây dựng Công cụ 1.5.0 (classpath 'com.android.tools.build:gradle:1.5.0')

defaultConfig { 
    generatedDensities = [] 
} 

// không có nhu cầu này với Gradle 2.0

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

Đây là phần dành cho người dùng không Gradle:

1) Mở trình quản lý SDK.

2) gỡ bỏ cả "Mang X Android" (trong đó X là ARM hoặc Intel) từ API 22 và 23.

3) sau đó tôi vẫn có một lỗi biên dịch tại một trong những phong cách của thư viện AppCompat. Tôi chỉ đơn giản là nhận xét chúng ra (tôi sẽ mạo hiểm các thiết bị rất cụ thể không hoạt động nếu nó sử dụng phong cách rất cụ thể).

Sau đó tôi đã làm sạch dự án và nó chỉ mới bắt đầu hoạt động.

9

Bạn có thể chuyển về phiên bản trước của thư viện appcompat (Nhanh chóng khắc phục):

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

Hoặc giữ phiên bản thư viện hiện tại và làm cho các cập nhật phù hợp với xây dựng tập tin gradle của bạn như được giải thích bởi google in version 23.2.0 release note.

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

Nếu bạn đang sử dụng Gradle 1,5 bạn thay vì sẽ sử dụng

defaultConfig { 
    generatedDensities = [] 
} 

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

Đừng quên cập nhật công cụ xây dựng gradle của bạn lên phiên bản 1.5.0 ít nhất hoặc bạn không thể sử dụng mới các thông số như generatedDensities:

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

More infos về việc tại sao here

+3

công trình này cho me.my gradle xây dựng phiên bản công cụ là 1.3.1. tôi chỉ cần thêm aaptOptions { các tham số bổ sung "--no-phiên bản-vectơ" } vào build.gradle của tôi mà không thêm generateDensities = [] và nó hoạt động –

+0

@AllenVork cách được đề xuất phù hợp với tôi. Cảm ơn –

+0

Tôi nhận được cùng một vấn đề.Và vector cũng không hoạt động –

3

Đối với n người dùng ew chỉ, vấn đề này là cố định trong:

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

3

Tôi gặp lỗi này trong Android Studio 2.2 sau khi tôi cập nhật phụ thuộc Gradle của mình lên phiên bản mới nhất nhưng quên cập nhật buildToolsVersion của dự án của tôi.

tôi đã thay đổi:

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

tới:

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

Trong khi buildToolsVersion duy trì ở mức "22.0.1" như vậy:

buildToolsVersion "22.0.1" 

Vì vậy, tất cả tôi đã làm là để cập nhật buildToolsVersion thành 24 như sau:

buildToolsVersion "24" 

vì trước đây nó đã được tải xuống với Trình quản lý SDK. Vì vậy, hãy xem buildToolsVersion mới nhất từ ​​Trình quản lý SDK và xem liệu nó có khớp với phiên bản phụ thuộc hay không.

Hy vọng điều này sẽ giúp ai đó.

3

Sự kiện sau khi thử các câu trả lời đã được cung cấp, ứng dụng đã gặp sự cố trên một số thiết bị (chủ yếu là Samsung). Vì vậy, cùng với đó, tôi đã cố gắng tải drawables vector như thế này

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

AppCompatDrawableManager này trong nội bộ cố gắng để lấy drawable với các phương pháp khác nhau:

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

Như vậy nó hoạt động trên tất cả các phiên bản Android và tất cả các thiết bị (hy vọng) .

Lưu ý: Không cố gắng sử dụng phương thức Picasso (2.5.2) hoặc Glide (3.7.0) để tải các đối tượng vẽ vector. Bởi vì họ sử dụng nội bộ phương pháp getDrawable(@DrawableRes int id) không được chấp nhận. Điều này sẽ dẫn đến Resources.NotFoundException trên một số thiết bị.

0

Đối với những người như tôi vẫn đang sử dụng Eclipse mà không Gradle, tôi gặp lỗi này với Thư viện hỗ trợ Android r23.2.0 chạy trên các thiết bị trước Lollipop (API < 21).

Sự cố này đã được khắc phục trong r23.2.1 và tôi đã có thể chạy dự án của mình trên cấp API 16 thành công.

Phiên bản này của thư viện dành cho Eclipse không có sẵn thông qua Trình quản lý SDK nữa, tuy nhiên bạn có thể tải xuống thủ công từ link này.

Các vấn đề liên quan