- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个正在使用库项目的项目。图书馆项目有 draw9 (9.png) 文件,当通过 Ant 构建 apk 时,它会去除可缩放和可填充区域上的 draw9 信息。结果是该应用程序只是在不使用 draw9 信息的情况下拉伸(stretch)图像。在Android的build.xml中
<target name="-package-resources" depends="-crunch">
这是调用 crunch,更新预处理的 PNG 缓存(有人知道这个缓存在哪里吗?)。
-crunch 在 aapt 中运行一个名为 crunch 的任务。但是我一直没能找到关于参数的任何信息。它似乎是从 Res 文件夹中获取文件并将其放入 out res 文件夹(默认为 bin/res)。
所以我什至清除了任务,这样它就不会运行紧缩,而且静止图像也不会被正确拉伸(stretch)。然后我将它替换为直接将 png 文件复制到 out res 文件夹,但仍然是同样的问题。我什至在这些任务之间尝试过 ant clean,但我遇到了同样的问题。这让我相信缓存在项目区域之外,但是在哪里?
请注意,当我使用 Eclipse 构建它时一切正常。
另一个对我有用的解决方案是将这些图像从库中复制到主项目中,但这不是理想的解决方案。
其他人似乎对此 crunch/resource packaging with aapt in ant build uses cache from other projects 有疑问
在此bug report they mention about the cache仅使用时间戳来检查是否更新缓存。
这似乎是 source code for aapt ,但我无法通过读取找到此缓存的保存位置。
找出问题
对我来说,导致问题的原因是我在 Ant 中(有意)为我的 res、src 和 bin 使用了不同的文件夹。有一个引用 project.library.res.folder.path 被填充在依赖宏中。它指向项目中的默认 res 和 bin 文件夹。所以我所做的就是更改它们以指向我的新文件夹。但在这样做的过程中,我改变了他们列出的年龄。它开始将资源文件混合到我在运行 aapt 时使用的不同库项目中。当我确定订单时,它编译正常。我也为 project.library.bin.r.file.path 做了这件事。
最佳答案
我昨天遇到了完全相同的问题。
我有一个代码库,用于使用 ant 构建不同风格的应用程序(差异包名称和一些特定资源)。
build.xml 工作正常,但在使用应用程序时有 9 个补丁被损坏(如您所说,被视为 png 和拉伸(stretch))。
我将问题确定为 ant 中的 -crunch
任务(就像您所做的那样)。
在我的例子中,我使用了两个不同的 res
文件夹,所以我从这里更改了原始的 crunch 任务
<!-- Updates the pre-processed PNG cache -->
<target name="-crunch">
<exec executable="${aapt}" taskName="crunch">
<arg value="crunch" />
<arg value="-v" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="-C" />
<arg path="${out.res.absolute.dir}" />
</exec>
</target>
对此
<target name="-crunch">
<exec executable="${aapt}" taskName="crunch">
<arg value="crunch" />
<arg value="-v" />
<arg value="-S" />
<arg path="${resource.flavour.dir}" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="-C" />
<arg path="${out.res.absolute.dir}" />
</exec>
</target>
但是这产生了提到的 9patch Artifact (也在像 fb 这样的库中).. 所以我想我会改变它来处理 resourceflavour.dir
只有当这不是一个给出正确结果的库时(没有9pathc Artifact )
<target name="-crunch">
<do-only-if-not-library elseText="Library project: do not package resources..." >
<exec executable="${aapt}" taskName="crunch">
<arg value="crunch" />
<arg value="-v" />
<arg value="-S" />
<arg path="${resource.flavour.dir}" />
<arg value="-C" />
<arg path="${out.res.absolute.dir}" />
</exec>
</do-only-if-not-library>
<exec executable="${aapt}" taskName="crunch">
<arg value="crunch" />
<arg value="-v" />
<arg value="-S" />
<arg path="${resource.absolute.dir}" />
<arg value="-C" />
<arg path="${out.res.absolute.dir}" />
</exec>
</target>
这可能会给您一些线索,让您在您的案例中找到合适的解决方案。
关于android - Ant Build AAPT Crunch 正在从库资源图像中剥离 draw9 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20423429/
有人告诉我,如果我只有一个“东西”,比如家(不是多个家),我应该在 routes.rb 中使用资源 :home,而不是资源 :home。但是当我查看路由时,POST 函数似乎想要 home#creat
Activity 开始。这些代码框架顺利通过。 // Initialize array adapters. One for already paired devices and //
资源 search-hadoop.com search-hadoop.com索引所有邮件列表,非常适合历史搜索。当你遇到问题时首先在这里搜索,因为很可能有人已经遇到了你的问题。 邮件列表 在A
我是 WPF 的新手,正在努力使用位于单独程序集中的样式。这就是我正在做的:- 我有一个带有\Themes 文件夹的类库项目,其中包含一个“generic.xaml”,它合并了\Themes 内的子文
我正在编写一个使用虚拟树状文件结构的插件。基本上它就像一个包含文件的标准文件系统,区别在于这些文件实际上并不存在于文件系统中的特定位置,而只是 java 对象。 这些当前由使用 SettingProv
如果我在 XAML 中使用以下内容,我会收到错误消息: 错
我正在使用 laravel 资源来获取 api 的数据: return [ 'id' => $this->id, 'unread' =>
我有以下 pom.xml: 4.0.0 mycompany resource-fail 0.0.1-SNAPSHOT BazBat
许多GDI +类都实现IDisposable,但是我不确定何时应该调用Dispose。对于使用new或静态方法(例如Graphics.CreateGraphics)创建的实例来说,这很明显。但是,由属
我正在构建一组 RESTful 资源,其工作方式如下:(我将使用“people”作为示例): 获取/people/{key} - 返回一个人对象 (JSON) GET/people?first_nam
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一个使用 $resource 的简单 Controller : var Regions = $resource('mocks/regions.json'); $scope.regions =
在 Azure 门户中,如何查看不同资源之间的依赖关系。我特别想查看哪些资源正在使用我要删除的存储。 最佳答案 您可以使用应用程序洞察应用程序 map 来执行此操作: 您还可以打开存储帐户的日志记录:
我正在使用 ionic 生成资源(图标和启动画面)。我正在使用 ionic v2.1.0 和 cordova v6.4.0。 到目前为止我一直在使用(它在以前的版本中工作): cordova plat
是否可以使用 Assets 包含子文件夹中的文件? 示例:[base_url]/assets/css/pepper-grinder/jquery-ui-1.8.11.custom.min.css 最佳
我正在阅读一些尝试教授 Android 开发的书。在书中,作者概述了 res/下的一些目录。他提到 res/menu 包含基于 XML 的菜单规范。他还提到了保存“通用文件”的 res/raw。当我创
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
我在服务器上使用 express-resource。在我的 AngularJS Controller 中: var User = $resource('/services/users/:use
因此,每当我运行我的应用程序时,它都会立即崩溃并给出以下错误: No package identifier when getting value for resource number 0x00000
对于我正在创建的(网络)应用程序,我需要使用基本身份验证在我的 UIWebView 中加载页面。 现在设置我使用的授权 header : NSString *result = [NSString st
我是一名优秀的程序员,十分优秀!