- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的 res/raw 文件夹中有一个 mp3 和一个 ogg 文件,我将它们与 Android Media Player 一起使用。我像这样使用 setDataSource
musicPlayer.setDataSource(context, Uri.parse("android.resource://com.me.myapp/" + R.raw.music));
这在从 Android Studio 运行时工作正常,但是,在使用 shrinkResouces 导出已签名的 APK 时启用后,它会删除 mp3(如上所述,我还有一个 ogg 文件,我以相同的方式使用它,它也会被删除)。以下是 Resouces.txt 文件中的相关结果:
Skipped unused resource res/raw/music.mp3: 485531 bytes (replaced with small dummy file of size 0 bytes)
Skipped unused resource res/raw/oggmusic.ogg: 5335764 bytes (replaced with small dummy file of size 0 bytes)
我已经做了一些研究并且在 Google Issue Tracker 上有一个关于这个问题的错误报告,但是发布者说他/她使用了上面链接中包含的信息来确保所需的资源没有被删除并且问题已被标记为“预期行为”(我觉得这有点奇怪,因为我不认为删除所需资源会是预期行为)。
无论如何,我已经尝试按照文档中的说明进行操作,但它似乎不起作用,我在这里做错了什么?我创建了一个名为“keep.xml”的 xml 文件,并将其与要保留的资源一起放入我的原始文件夹中。
这是 XML:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/*.mp3, @raw/*.ogg"/>
此问题在 Eclipse 中并不明显,但在迁移到 Android Studio 后出现了。
编辑
我做了更多的测试,我可以确认我在 XML 文件中指定的任何内容都被完全忽略了。例如,如果我使用“discard”代替或代替“keep”,“discard”中说明的资源会出现在生成的 APK 文件中,因此我一定是做错了什么或错过了某处。
最佳答案
我刚刚遇到这个问题,并发现我做错了什么。
引用资源时不要指定文件扩展名。
我一开始做了什么(这行不通):
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/vid.mp4"
/>
解决办法,去掉文件扩展名:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@raw/vid"
/>
您可以通过检查您可以在 ./app/build/outputs/mapping/<buildType>/resources.txt
找到的 resources.txt 文件来验证这一点 https://developer.android.com/studio/build/shrink-code
关于Android:如何告诉 ShrinkResources 保留某些资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43838269/
我的 res/raw 文件夹中有一个 mp3 和一个 ogg 文件,我将它们与 Android Media Player 一起使用。我像这样使用 setDataSource musicPlayer.s
我正在尝试使用 shrinkResources,但它在构建时失败了。当我不使用 shrinkResources 时,我没有发现任何问题。我有以下配置: minifyEnabled true shr
我正在尝试 build-plugin 的新功能 - 不幸的是它从 res/raw 中删除了我的声音,即使它们在代码中被引用。有没有办法保护资源不被删除? 编辑 - 经过一番尝试 - 似乎此功能尚未成熟
如何排除所有 /res/raw/*.wav 文件收缩? buildTypes { release { shrinkResources true minifyEn
在 android studio 的 build.gradle 文件中,我们可以使用 shrinkresources 设置为 true 来缩小我们的应用程序。也可以使用 minifyenabled
我有一个包含很多可绘制对象的项目,这些可绘制对象的名称以“a”或“b”开头(例如 a1_back、a2_back、b1_start、b2_start 等等)。这些可绘制对象未在代码中使用,但由以下代码
背景 根据 Andriod 文档 (here) 的“资源缩减”网页,您可以通过 build.gradle 文件最小化应用程序的大小,使用以下几行: android { ... buil
我在我的 gradle 项目中启用了新工具 shrinkResources 但由于找不到 AppCompat 颜色 xml 而失败,可能已被该工具删除。 11-03 11:30:19.095: E/A
当我尝试缩小我的功能 APK 大小时,我在我的功能构建 Gradle 中使用 shrinkResources true。但是它提示 Error:Resource shrinker cannot b
当我尝试缩小我的功能 APK 大小时,我在我的功能构建 Gradle 中使用 shrinkResources true。但是它提示 Error:Resource shrinker cannot b
我将 shrinkResources 设置为 true,如下所示: releasepro { minifyEnabled true shrinkResources true p
作为 Android Studio 2.2 推出的一部分,我将我的 Gradle 构建工具更新到了 v2.2。这样做之后,我签名的 APK 构建过程失败了,因为我有 shrinkResources =
我在将我的项目迁移到最新的 Gradle 4.0 + Android Studio 3 版本时遇到问题,这给了我各种各样的错误。渐渐地,我设法将它们全部整理出来,除了这个。 Could not
这是我的混淆文件: -keepattributes *Annotation* -keepattributes SourceFile,LineNumberTable -keep public class
我是一名优秀的程序员,十分优秀!