According to documentation ,应用程序descriptor-app.xml
中指定的图标必须与应用程序根目录相关,并且不会自动添加到程序包中。
指定的路径相对于应用程序根目录。
注意:指定的图标不会自动添加到AIR包中。打包应用程序时,图标文件必须包含在正确的相对位置。
文档本身提供了使用icons
文件夹
<icon>
<image16x16>icons/smallIcon.png</image16x16>
<image32x32>icons/mediumIcon.png</image32x32>
<image48x48>icons/bigIcon.png</image48x48>
<image128x128>icons/biggestIcon.png</image128x128>
</icon>
我会使用以下ADT命令在我的应用程序根目录中包含此文件夹:
adt [STUFF] outputfile.apk descriptor-app.xml main.swf icons
这反过来产生以下包结构 1 (不列出不相关的路径):
package.apk |---> assets (this is the application root on Android package) | |---> icons | | |---> smallIcon.png | | |---> mediumIcon.png | | |---> bigIcon.png | | |---> biggestIcon.png | |---> main.swf |---> res |---> drawable-hdpi | |---> icon.png |---> drawable-ldpi | |---> icon.png |---> drawable-mdpi | |---> icon.png |---> drawable-xhdpi |---> icon.png
1实际将大小翻译为路径as detailed here
res/drawable*
下的文件夹中的图标是assets/icons
下的图标的重复。 &#34; drawable&#34;文件夹是Android包特定的结构。据我所知,adt
命令将采用descriptor-app.xml
中指定的图标并将它们放在包中的正确位置,具体取决于包类型(iOS图标位于包内,然后是Android图标)。
我不明白的是:为什么我必须在我的应用程序根目录中包含icons
文件夹?
adt
知道图标需要结束的位置,但descriptor-app.xml
要求相对于&#34;应用程序root&#34;指定图标路径。
在iOS上,这是有点可解决的 2 ,方法是将图标重命名为最终名称,并将它们放在包中的正确的位置,因为ipa
结构将图标放在与应用程序根相同的上下文中。
但在Android上,这甚至不可能,因为apk
结构将图标放在应用程序根上下文之外,而adt
不会让我添加要在应用程序根目录之外打包的文件。
然而,文档告诉我apk
包完全不可能的事情:
打包应用程序时,图标文件必须包含在正确的相对位置。
2手动重命名iOS图标并将它们置于正确的应用程序根位置也不理想,因为adt
已经知道如何做到这一点,而我作为用户可以犯错误
回到这个问题:为什么我必须在应用程序中包含icons
文件夹才能正确使用它?我没有在应用程序中包含descriptor-app.xml
(但是adt
将其置于正确的程序包位置,每个操作系统本身),但是为什么要强制我包含icons
的冗余副本?
我错过了什么吗?有解决方法吗?
答案 0 :(得分:1)
此问题已在最新的AIR SDK 21.0 Beta 21.0.0.150中修复。
答案 1 :(得分:0)
据我记得app.xml
文件中的文档和文字,应用图标不必位于应用根(src
)目录中,只是app.xml
中的引用必须相对到src
目录。此外,应用程序根目录/ src
目录会自动嵌入到文件中,这就是它们在您编译的应用程序根目录中的原因。
考虑到这一点,我有两种可能的解决方案。
../
表示法。将您的图标文件夹从src
目录移动到项目目录,这意味着它不会被编译器嵌入。当您使用icons/biggestIcon.png
时,它实际上是在告诉src/icons/biggestIcon.png
。 /
表示法在一个目录下,./
表示法是当前目录,../
表示法在一个目录中。因此src/../icons/biggestIcon.png
将转到src
的父目录(项目目录)。我从来没有对此进行过测试,我不确定它是否会接受这种符号,但理论上它应该可行。Project > Properties
,在Flex Build Packaging
下,您要定位的每个平台都应该有一个菜单。转到Package Contents
并取消选择至少Android的图标文件夹。这可能是更好的路线,因为它允许您单独处理iOS和Android。我相信AS3项目中的菜单措辞不同,但我相信它仍然存在并且表现相同。同样,我还没有测试过这些,所以我不能100%确定它会起作用。但这些是我试图解决双重嵌入问题的两种方法(直到现在我都不知道,所以我相信我会为下一个项目测试这些)。希望至少能指出你正确的方向。