4

Я работаю над приложением, где я использую вектор Drawable указанный нижеПоврежденные или отсутствующие векторные после запуска вводимого коэффициента Proguard

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
android:width="100dp" 
android:height="100dp" 
android:viewportHeight="100" 
android:viewportWidth="100"> 

<path 
    android:name="curve_left_atrium" 
    android:pathData="M4,48C4,22.6,24.6,2,50,2" 
    android:strokeColor="#eb273f" 
    android:strokeWidth="4" 
    android:trimPathEnd="0" /> 
<path 
    android:name="curve_right_atrium" 
    android:pathData="M96,48C96,22.6,75.4,2,50,2" 
    android:strokeColor="#eb273f" 
    android:strokeWidth="4" 
    android:trimPathEnd="0" /> 
    </vector> 

Это работает очень хорошо в отладочной сборки, но его разбитой после запуска ProGuard в сборке выпуска.

Ниже перечислены версии библиотек проектирования и appcompat в файле gradle.

compile 'com.android.support:appcompat-v7:23.4.0' 
    compile 'com.android.support:design:23.4.0' 

компиляция и сборка версия является

compileSdkVersion 23 
    buildToolsVersion = "23.0.1" 

и поддержать вектор я сделал следующий Gradle.

defaultConfig { 

    generatedDensities = [] 

    } 

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

и ProGuard для разработки и поддержки библиотеки я сделал эту

 -dontwarn android.support.v7.** 
    -keep class android.support.v7.** { *; } 
    -keep interface android.support.v7.** { *; } 

    # support design 
-dontwarn android.support.design.** 
-keep class android.support.design.** { *; } 
-keep interface android.support.design.** { *; } 
-keep public class android.support.design.R$* { *; } 

-dontwarn android.support.** 

Этот вопрос даже открыл здесь

https://code.google.com/p/android/issues/detail?id=209558#makechanges

Любая помощь будет заранее было оценено ,

+0

trimPathEnd положите 1, чем вы берете кривую ... –

+0

Спасибо за ответ @ Er.Arjunsaini, но потом как он отлично работает в отладочной сборке .. ?? –

ответ

0

Здравствуйте, я сам решил эту проблему. На самом деле, я должен был добавить следующий файл proguard:

-keep class VectorPlay.** { *; } 
-keep interface VectorPlay.** 
-keep enum VectorPlay.** 

и он работал. Спасибо за помощь всем.

+0

Имя класса VectorPlay кажется случайным. Связано ли это с какой-либо одной из библиотек поддержки Android, упомянутых в вашем вопросе? – Brian

+2

Нет его случайного класса, который я сделал .. –

1

В моем случае, эта линия поможет мне: -keepattributes LocalVariableTable

0

Я добавил следующий код в файл dexguard, чтобы решить эту проблему:

# keep setters in VectorDrawables so that animations can still work. 
-keepclassmembers class android.support.graphics.drawable.VectorDrawableCompat$* { 
    void set*(***); 
    *** get*(); 
} 
-keepresourcexmlattributenames vector/** 

(частично скопированный из https://code.google.com/p/android/issues/detail?id=209558#makechanges)

Смежные вопросы