我目前正在为iPhone,iPad,Android手机和Android平板电脑构建应用程序。
我正在使用像this example这样的单一代码库。
但由于支持平板电脑,我的项目有点复杂,我希望排除安装该应用的设备上未使用的资产。
为了澄清,我的项目文件/文件夹结构如下所示:
项目根目录:
例如,我不希望iphone应用包含平板电脑资产,例如: html / css / style-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可以帮助我,但我真的不明白如何使其适应我的文件结构。
所以我请求你帮助找到最好和最简单的解决方案(下一个项目和现有项目的发布)。
提前,谢谢你的帮助。
干杯。
答案 0 :(得分:1)
以下是我过去用于在Android和iOS上共享资源的方法:
您可以使用此精确技术来拥有共享代码库,但也可以使用特定于平台的文件。只需将文件夹添加到www目录(而不是共享目录),并将特定于平台的CSS文件放在其中。 注意:在这种方法中,www的子文件夹是符号链接的,而不是www的父文件。
为了在设备外形之间设置单独的CSS文件,这有点棘手......
一种选择是有条件地附加< style>使用JavaScript初始化应用程序时的元素您可以检查用户代理和窗口尺寸,并手动添加< style>适当平台和外形的元素。但是,通常不鼓励用户代理嗅探b / c它可能很容易被破坏,或者如果引入新的设备类别则会失败。
另一个选择是包含所有内容并使用CSS媒体查询。
如果您使用的是通用二进制文件(同时包含手机和平板电脑的外形),则必须在手机和平板电脑中同时包含这些内容。您可以使用CSS媒体查询,以便CSS样式仅应用于特定的设备外形。因此,将平板电脑样式包装在媒体查询中,它们将仅应用于平板电脑外形。
您可以在此处阅读有关CSS媒体查询的更多信息:
您可以在此处访问常见设备外形的预定义CSS媒体查询:
如果您不使用通用二进制文件,则每个设备类别都需要单独的项目环境。在每个单独的项目中,您可以通过符号链接到共享代码库,并使用CSS文件的静态路径。
如果您想有条件地将特定的CSS文件插入到特定的项目配置中,那么您需要为每个项目配置单独的项目,或者您需要编写一个脚本来为您完成。
希望这有助于......