0

我遇到了一个问题,我将矢量可绘制对象与动画矢量可绘制对象一起使用。到目前为止,在 API 级别 15+ 上一切正常且顺利。

今天,当我准备发布更新时,我构建了一个签名 APK 并进行了最后一轮测试,令人惊讶的是所有矢量动画都停止了工作。我只看到纯矢量图像,但没有应用于其路径的矢量动画。它仅适用于Android M平台。它不能在任何其他平台上运行,甚至Lollipop也不行。他们都在开发版本上运行良好,我真的不明白,我找不到可能的原因。我唯一想到的是proguard-rules.pro文件,因为这是唯一将 APK的签名版本与开发版本区分开来的东西. 有人可以帮我解决这个问题。我现在真的被这个版本困住了,无法在任何地方找到解决方案。

我已经在向量上使用了这种方法(这是我自己的答案)。而对于矢量动画,我只是这样写的

 <animated-vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:drawable="@drawable/vector_img"
    tools:ignore="NewApi">
  <target
      android:animation="@anim/slide_up"
      android:name="slab_one"/>
 </animated-vector>

我正在使用gradle 1.5.0. 这就是我build.gradle文件的一些相关部分的样子 -

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        multiDexEnabled true
        generatedDensities = []
    }
    aaptOptions {
        additionalParameters "--no-version-vectors"
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile 'com.android.support:support-vector-drawable:23.4.0'
    compile 'com.android.support:animated-vector-drawable:23.4.0'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
}

非常感谢您的帮助。提前致谢 !

4

1 回答 1

2

找到了解决方案。只需要添加一行到proguard.

-keep class android.support.graphics.drawable.** { *; }

所以我猜对了,Signed APK 的问题与proguard. 我现在也可以看到在棒棒糖之前的设备上播放的矢量动画。

于 2016-09-02T11:16:10.413 回答