Android - 签名 APK - 动画矢量不工作
Android - Signed APK - animated-vector not working
我遇到了一个问题,我将矢量可绘制对象与动画矢量可绘制对象一起使用。到目前为止,在 API 级别 15+ 上一切都运行良好。
今天,当我准备发布更新时,我构建了一个 Signed 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'
}
非常感谢您的帮助。提前致谢!
找到解决方案。只需在 proguard
.
中添加一行
-keep class android.support.graphics.drawable.** { *; }
所以我猜 Signed APK 的问题与 proguard
有关是正确的。我现在也可以看到在棒棒糖之前的设备上播放矢量动画了。
我遇到了一个问题,我将矢量可绘制对象与动画矢量可绘制对象一起使用。到目前为止,在 API 级别 15+ 上一切都运行良好。
今天,当我准备发布更新时,我构建了一个 Signed 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'
}
非常感谢您的帮助。提前致谢!
找到解决方案。只需在 proguard
.
-keep class android.support.graphics.drawable.** { *; }
所以我猜 Signed APK 的问题与 proguard
有关是正确的。我现在也可以看到在棒棒糖之前的设备上播放矢量动画了。