2014-04-11 29 views
0

設置

According to documentation,即在應用descriptor-app.xml指定的圖標具有可相對於應用程序的根,而不是自動地添加到包。AIR ADT複製圖標包

指定的路徑相對於應用程序根目錄。

注意:指定的圖標不會自動添加到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

結果

這又產生以下封裝結構(未列出不相干路徑):大小的res/drawable*

 
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

問題

在文件夾圖標是複製的圖標assets/icons下。 「可繪製」文件夾是Android程序包特定的結構。根據我的理解,adt命令將採用descriptor-app.xml中指定的圖標,並將它們放在包中的正確位置,具體取決於包類型(iOS圖標位於包中,然後是Android圖標)。

我不明白的是:爲什麼我必須在我的應用程序根目錄中包含icons文件夾?

adt知道在哪裏圖標需要結束了,但descriptor-app.xml要求圖標路徑相對於「應用程序根目錄」中指定。

在iOS,這是有點解通過重命名圖標到其最終的名稱和將它們放置在包內正確的位置,因爲ipa結構則以相同的上下文應用程序根內的圖標。

但在Android上,這甚至是不可能的,因爲apk結構放置圖標應用程序根上下文外面,adt不會讓我添加文件打包應用程序根目錄之外。

然而,文檔告訴我的東西,是完全不可能的apk包:

的圖標文件必須包含在其正確的相對位置的應用程序打包時。

2手動重命名爲iOS的圖標並將其放置在正確應用程序根目錄位置不理想或者,如adt已經知道該怎麼做了,我作爲一個用戶可以犯錯誤

回到問題:爲什麼我必須在應用程序中包含icons文件夾才能正確使用?我在應用程序中不包括descriptor-app.xml(但adt本身將其置於正確的包位置,每個操作系統),但爲什麼迫使我包含icons的冗餘副本?

我錯過了什麼嗎?有沒有解決方法?

回答

0

據我可以從文檔,並在app.xml文件中的文本記住,應用程序圖標沒有在應用程序根目錄(src)目錄,只是在參考他們在app.xml必須是相對src目錄。此外,應用程序根目錄/ src目錄會自動嵌入到該文件中,這就是它們位於已編譯的應用程序根目錄中的原因。

考慮到這一點,我有兩種可能的解決方案。

  1. 使用../表示法。將您的圖標文件夾從src目錄移動到項目目錄,這意味着它不會被編譯器嵌入。當你使用icons/biggestIcon.png時,它實際上是告訴它src/icons/biggestIcon.png/表示法記下一個目錄,./記法表示當前目錄,../表示法記錄一個目錄。所以src/../icons/biggestIcon.png會去src的父目錄(項目目錄)。我從來沒有測試過這個,我不確定它是否會接受這個符號,但理論上它應該工作。
  2. 在Flash Builder中,您可以轉到Project > Properties,並在Flex Build Packaging之下,每個您要定位的平臺應該有一個菜單。轉至Package Contents並取消選擇至少Android的圖標文件夾。這可能是更好的途徑,因爲它可以讓你分開處理iOS和Android。我相信AS3項目中的菜單措辭不同,但我相信它仍然存在並且表現相同。

同樣,我還沒有測試過這些,所以我不能100%確定它會工作。但是,這些是我嘗試解決雙重嵌入問題的兩種方法(到目前爲止我還沒有意識到,所以我相信我會在下一個項目中測試這些方法)。希望至少能讓你朝正確的方向發展。

+0

我沒有使用Flex。我沒有'src'文件夾。任何地方都不會自動嵌入'app root/src'。我用'../'嘗試了各種各樣的父目錄。謝謝你的答案,但不幸的是,這並沒有幫助 – Slav