2012-12-13 48 views
1

我目前正在爲iPhone,iPad,Android手機和Android平板電腦構建應用程序。Phonegap - 資產和通用iOS應用程序

我正在使用一個代碼庫,如this example

但是,由於我的項目也支持平板電腦,因此我想要排除在安裝該應用程序的設備上未使用的資產。

爲了澄清,我的項目文件/文件夾結構如下圖所示:

項目根:

  • HTML(HTML,JS,CSS,爲Android & IOS項目圖片)
    • css
      • style.css
      • 風格Android系統的phone.css
      • 風格Android系統的tablet.css
      • 風格IOS-phone.css
      • 風格IOS-tablet.css
    • 圖像0​​
      • 共享
        • [...]
      • 電話
        • [...]
      • 平板 - [...]
    • JS
      • [...]
    • 模板(= html模板)
      • 電話
        • [...]
      • 平板
        • [...]
  • 的Android(Eclipse項目)
    • 資產
      • www(符號鏈接到../ ../ HTML)
      • [...]
      • [...]
      • [...]
    • RES
      • [...]
    • SRC
      • [...]
    • [...]
  • 個IOS(xcode項目)
    • CordovaLib
      • [...]
    • MY_PROJECT
        • [...]
      • 插件
        • [...]
      • 資源
        • [...]
      • [...]
    • My_project.xcodeproj
    • www(符號鏈接到../../html)

舉例來說,我不希望這樣的iPhone應用程序中包含片劑資產,如: HTML/CSS /風格Android系統的tablet.css,HTML/css/style-ios-tablet.css,html/images/tablet/,html/templates/tablet/

目前,該應用程序在iphone上比較沉重(比如)因爲無用的資產(主要是圖片) 。

我嘗試了一些想法,如: - 在xcode項目中使用2個tagets。一個用於iPhone,一個用於iPad。但是,xcode中www下的文件和文件夾無法設置爲目標成員資格。只有www可以。 - 使用2個www目錄和2個目標,但iPhone目標仍然包括目標ipad的www。

我認爲this solution可以幫助我,但我真的不知道如何適應我的文件結構。

因此,我請求您的幫助,爲未來找到最佳和最簡單的解決方案(下一個項目&現有項目發佈)。

提前,感謝您的幫助。

乾杯。

回答

1

下面是我在過去使用的共享在Android資源和iOS的方法:

你可以使用這個精確的技術,有一個共同的代碼庫,而且還有特定於平臺的文件。只需將一個文件夾添加到www目錄(而不是共享目錄)中,並將平臺特定的CSS文件放入其中。 注意:在這種方法中,www的子文件夾是符號鏈接的,而不是www的父文件夾。

具有器件外形之間的單獨的CSS文件它更棘手的一點點...

一種選擇是有條件地追加<風格使用JavaScript應用程序初始化過程>元素。您可以檢查用戶代理和窗口尺寸,並手動添加<風格>元素以獲取適當的平臺和形狀因子。但是,用戶代理嗅探通常是不鼓勵的,因此它很容易被破壞,或者如果引入新的設備類別則會失敗。

另一種選擇是包含所有內容並使用CSS媒體查詢。

如果您使用的是通用二進制文件(同時針對手機和平板電腦的外觀因素),那麼您必須在應用中包含手機和平板電腦CSS。您可以使用CSS媒體查詢,以便CSS樣式僅適用於特定的設備形狀因子。因此,將您的平板電腦樣式包裝在媒體查詢中,並且這些樣式僅適用於平板電腦外觀因素。

你可以在這裏閱讀更多關於CSS媒體查詢:

您可以訪問預定義的CSS媒體查詢的通用設備的外形在這裏:

如果您沒有使用通用二進制文件,那麼您需要爲每個設備類別分別設置不同的項目環境。在每個單獨的項目中,可以將符號鏈接到共享代碼庫,並使用CSS文件的靜態路徑。

如果您想有條件地將特定的CSS文件插入到特定的項目配置中,那麼您需要爲每個配置文件分別設置不同的項目,或者您需要編寫一個腳本來爲您完成。

希望這可以幫助...

+0

感謝您的回答安德魯。 我們已經根據設備類型處理CSS加載(使用javascript)。 但我的問題是更多關於排除**平板電腦圖像**以包括在iphone的安裝,例如。 我們的手機版本的應用程序已經相當重的IOS(〜9Mo)。所以我不希望一旦平板電腦部分被添加到項目中,大小會增加到30Mo,而20Mo不被使用。 – iArnaud

+0

我使用與您相同的方法在Android和iOS上共享資源(我認爲,我遵循您的教程)。 但是這種方法只能解決操作系統(Android和IOS)中分離或共享資源的問題,但不能解決同一操作系統下的設備類型問題。 我認爲對於Android,我可以擴展此方法,因爲Google Play允許爲同一應用(一個目標手機,另一個目標平板電腦)上傳2個不同的版本。 但是在IOS上使用這種方法(2個IOS項目使用符號鏈接)將迫使我在App Store中管理2個應用程序。 我會鏈接,以避免這種情況。 – iArnaud

+0

使用iOS的通用二進制方法,您不幸沒有太多選擇。如果您希望它在這兩種形式因素的應用程序歸檔中,那麼資產必須位於此處。我能想到的唯一選擇是,您可以從服務器拉取UI元素,並在需要時本地保存(HTML5緩存或寫入本地文件系統)。這將減少IPA文件的大小,但需要首次使用時下載資產。 –

相關問題