我有一个由应用程序的多个变量使用的共享库。我希望能够根据应用配置剥离未使用的库资源。
- 我不想永久删除资源,所以 Lint 没有帮助
- 资源由共享代码引用,我只知道在某些差异下,没有使用相当大的块
- 引用资源的共享代码正在被使用(只是在某些使用差异中,一个相当大的块没有发挥作用)所以 proguard 也无济于事
我正在使用 ant 构建脚本前往骇客,以将其从库 jar 中删除。还有什么想法吗?
我有一个由应用程序的多个变量使用的共享库。我希望能够根据应用配置剥离未使用的库资源。
我正在使用 ant 构建脚本前往骇客,以将其从库 jar 中删除。还有什么想法吗?
这会从 .apk构建中排除整个./www/app
目录:
<property name="aapt.ignore.assets" value="<dir>app:" />
找到我的解决方案,使用属性 aapt.ignore.assets 在最终的 apk 中删除我不想要的任何内容。从 sdk r22 tools/ant/build.xml 截取
<!-- 'aapt.ignore.assets' is the list of file patterns to ignore under /res and /assets.
Default is "!.svn:!.git:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
Overall patterns syntax is:
[!][<dir>|<file>][*suffix-match|prefix-match*|full-match]:more:patterns...
- The first character flag ! avoids printing a warning.
- Pattern can have the flag "<dir>" to match only directories
or "<file>" to match only files. Default is to match both.
- Match is not case-sensitive.
-->
<property name="aapt.ignore.assets" value="" />
此属性的意外副作用是它在“代码生成”期间也被使用,并且不会生成可绘制 id 并且 proguard 会抱怨。您需要将 dontwarn 添加到您的配置中。
您还需要将这些资源包装到它自己的类中,当资源不在使用时不会被调用。因为如果它们在一个公共类中,即使不使用,java 静态初始化程序在尝试链接它们时也会崩溃。