1

我目前正在为 iPhone、iPad、Android 手机和 Android 平板电脑构建应用程序。

我正在使用此示例中的单个代码库。

但由于我的项目也由于支持平板电脑而有点复杂,我希望排除在安装应用程序的设备上未使用的资产。

为了澄清,我的项目文件/文件夹结构如下所示:

项目根:

  • html(用于 android 和 ios 项目的 html、JS、Css、图像)
    • css
      • 样式.css
      • 样式-android-phone.css
      • 样式-android-tablet.css
      • 样式-ios-phone.css
      • 样式-ios-tablet.css
    • 图片
      • 共享
        • [...]
      • 电话
        • [...]
      • 药片 -[...]
    • js
      • [...]
    • 模板(=html 模板)
      • 电话
        • [...]
      • 药片
        • [...]
  • 安卓(日食项目)
    • 资产
      • www(../../html 的符号链接)
    • 垃圾桶
      • [...]
      • [...]
      • [...]
    • 资源
      • [...]
    • 源代码
      • [...]
    • [...]
  • ios (xcode 项目)
    • 科尔多瓦库
      • [...]
    • 我的项目
      • 课程
        • [...]
      • 插件
        • [...]
      • 资源
        • [...]
      • [...]
    • My_project.xcodeproj
    • www(../../html 的符号链接)

例如,我不希望 iphone 应用程序包含以下平板电脑资产:html/css/style-android-tablet.css、html/css/style-ios-tablet.css、html/images/tablet/ 、html/模板/平板电脑/

目前,由于无用的资产(主要是图像),该应用程序在 iphone(例如)上很重。

我尝试了一些想法,例如: - 在 xcode 项目中使用 2 个标记。一个用于iphone,一个用于ipad。但是 xcode 中 www 下的文件和文件夹无法设置为目标成员。只有www可以。- 使用 2 个 www 目录和 2 个目标,但 iphone 目标仍然包括目标 ipad 的 www。

我认为这个解决方案可以帮助我,但我真的不明白如何让它适应我的文件结构。

因此,我请求您的帮助,为未来(下一个项目和现有项目的发布)找到最佳和更简单的解决方案。

在此先感谢您的帮助。

干杯。

4

1 回答 1

1

以下是我过去用于在 Android 和 iOS 之间共享资源的方法:

您可以使用这种精确的技术来拥有共享代码库,但也可以拥有特定于平台的文件。只需将文件夹添加到 www 目录(而不是共享目录),然后将特定于平台的 CSS 文件放入其中。 注意:在这种方法中,www 的子文件夹是符号链接的,而不是 www 的父文件夹。

对于在设备外形尺寸之间拥有单独的 CSS 文件,这有点棘手......

一种选择是在应用程序初始化期间使用 JavaScript 有条件地附加 <style> 元素。您可以检查用户代理和窗口尺寸,并为适当的平台和外形手动添加 <style> 元素。但是,通常不鼓励用户代理嗅探,因为它很容易被破坏,或者如果引入了新的设备类别则失败。

另一种选择是包含所有内容并使用 CSS 媒体查询。

如果您使用的是通用二进制文件(同时针对手机和平板电脑的外形尺寸),那么您必须在应用程序中包含手机和平板电脑的 CSS。您可以使用 CSS 媒体查询,以便 CSS 样式仅应用于特定的设备外形尺寸。因此,将您的平板电脑样式包装在媒体查询中,它们只会应用于平板电脑的外形尺寸。

您可以在此处阅读有关 CSS 媒体查询的更多信息:

您可以在此处访问针对常见设备外形的预定义 CSS 媒体查询:

如果您不使用通用二进制文件,则每个设备类别都需要单独的项目环境。在每个单独的项目中,您可以符号链接到共享代码库,并带有指向 CSS 文件的静态路径。

如果您想有条件地将特定的 CSS 文件插入到特定的项目配置中,那么您需要为每个项目配置单独的项目,或者您需要编写一个脚本来为您执行此操作。

希望这会有所帮助...

于 2012-12-14T15:05:16.517 回答