我的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文件中指定的内容.例如,如果我使用“放弃”而不是“保留”,则“放弃”中所述的资源将显示在生成的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/\u0026lt;buildType\u0026gt;/resources.txt中找到的resources.txt文件来验证这一点.
https://developer.android.com/studio/build/shrink-code
以上是内存溢出为你收集整理的Android:如何告诉ShrinkResources保留某些资源全部内容,希望文章能够帮你解决Android:如何告诉ShrinkResources保留某些资源所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)