ios - PhoneGap 3.3 项目结构和编辑代码

标签 ios xcode cordova

我即将放弃尝试使用 Visual Studio 构建支持 PhoneGap 的应用程序并走 Mac 路线。我唯一犹豫的是,我所有用于访问服务器数据的 WebApis 都是使用 ASP.Net MVC WebApi (C#) 开发的。我真的不想从 Mac 开发 UI 跳到 Windows 开发 WebApi。

无论如何,在研究 PhoneGap 3.3 和使用 CLI 建立项目结构时,我发现创建了一个共享的 www 文件夹,您的所有 Html、JS 和 CSS 代码都应该位于该文件夹中。您添加到项目中的每个平台(iOS、Android 等)都位于一个单独的平台文件夹中:

Project Root Folder
|- platforms
    |- iOS
        | - www
    |- android
        | - www
|- www
    |- css
    |- js
    |- index.html 

文档指出您不应对任何平台 www 文件夹中的文件进行任何编辑,因为构建过程会将文件从根 www 文件夹复制到平台中的每个 www 文件夹。

iOS 文件夹包含打开 iOS 平台特定 www 文件夹(不是根文件夹)的 xcodeProject 文件。我了解到iOS下的www文件夹是iOS平台特有的。但这意味着您不能使用 XCode 编辑您看到的任何文件。现在,XCode 作为编辑器毫无用处,因为它会编辑错误的文件。

我们应该如何针对根 www 文件夹使用 Xcode?感谢您的帮助。

最佳答案

我将向您展示我的团队如何在 iOS 上使用 Cordova。这可能不是文档推荐的方式,但它确实有效(此外,文档从来都不可靠)。

我们并行开发了一个 Android 版本,对于 Android,遵循文档工作得很好:

  • 复制文件到www文件夹
  • 执行cordova build android
  • platforms/android/bin 文件夹复制编译好的应用

但是,对于 iOS,它变得棘手。正如您在上面提到的,有 xcodeProject 文件。如果您对 xcode 进行了任何更改,执行 cordova build ios 肯定会覆盖这些更改。我们还发现,第二次运行 cordva build ios 会损坏 config.xml 文件 - 使我们正确运行应用程序所需的所有插件失效(从3.3.0)。

因此我们的 iOS 团队推荐的方法是:

  • 使用 cordova build ios 创建 iOS 项目文件 (xcodeProject) 之后。
  • 对 HTML 文件的所有更改都应在文件夹 platforms/ios/www/ 中进行。
  • 不会触及根文件夹 www
  • 编译 iOS IPA 完全在 Xcode 中完成。

这种方法适用于我们,因为我们在 Windows PC 上单独编译我​​们的 Android 构建文件。如果您将一个系统用于多个平台,那么明智的做法是对根 www 进行所有更改,然后在 platforms/ios/www/ 创建一个符号链接(symbolic link) -仍然保留用于编译 iOS 的 Xcode 和用于其他平台的 cordova build ** 命令行。

希望这对您有所帮助!

关于ios - PhoneGap 3.3 项目结构和编辑代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815440/

相关文章:

xcode - Swift 通用类类型既是子类又符合协议(protocol)

android - Ionic Android 无法通过 Cordova 白名单进行 AJAX 调用

android - Cordova:在 Android App 中调用 loadUrl() 时如何设置 HTTP ACCEPT header ?

javascript - Vue 无法监听 Co​​rdova 事件

ios - 是否可以将 UITableView 子类化为 SKNode?

ios - [NSMutableArray array] 可以返回 nil 吗?

IOS 13 APNS didRegisterForRemoteNotificationsWithDeviceToken 未调用

ios - 快速如何从 sqlite 重新加载 tableview 选定的行(.checkmark)值

ios - JSQmessageviewcontroller : Bubbles without tails

ios - 尝试在 iOS 10 中使用 xcode 8.3.3 本地化 LaunchScreen.storyboard 以支持语言时出现问题