android - 使用 phonegap 对不同平台进行版本控制

标签 android ios svn cordova versioning

在我们使用 phonegap 3.2 的新项目中,我们在版本控制方面遇到了很多问题。我想问您,根据以下要求对数据进行版本控制的最佳方式是什么:

  • 所有开发人员都必须更改项目根目录中的www文件夹
  • 部分开发者还需要更改platforms/android/src文件夹中的Java文件
  • 一些开发人员还需要更改 Objective C 代码

是否应该有 3 个不同的存储库位置,一个带有 www,一个用于每个平台?或者是否应该只有一个存储库位置供每个开发人员检查他需要的东西?或者每个人都应该拥有包含所有平台文件的整个项目吗?

我们遇到的问题主要是通过cordova构建更改平台代码并提交afterwoods时。有时在您检查了在另一台计算机上运行良好的整个项目后,它也不会再构建了。

感谢任何提示

最佳答案

目前 Cordova 支持两种官方方式来构建他们的应用程序。 1. 基于 CLI,您可以在其中完全跨平台工作,只需存储 wwwmerges 文件夹。开发人员假设您可以在新机器上使用 Cordova CLI 来设置您的环境

cordova platform add android
cordova platform add ios
cordova plugin add org.apache.cordova.device

此工作流程让您受益于在 www 文件夹中拥有通用代码库,并且您必须为 merges/android 中的 CSS、JS 或 HTML 文件保留平台特定的覆盖或 merges/ios 子文件夹,但您不能以这种方式修改特定于平台的代码。

  1. 平台 SDK 开发工作流程。在使用平台的标准 SDK 工具创建应用程序的地方,然后将 CordovaLib 添加为依赖项并根据需要嵌入 WebView。然后使用 Eclipse/XCode 进行进一步开发。如果您以这种方式设置了多个项目,则必须手动确保两个项目中的 www 文件夹保持同步。

此工作流使您能够使用所有平台功能,但您必须手动同步 www 文件夹的内容,并以某种方式使用平台特定的 CSS/JS/HTML 注意:在支持下,我的意思是,这是两个工作流程,让开发人员更加关注。

现在回答您的问题 - 我建议您使用以下工作流,它是基于 CLI 的工作流的略微修改版本。您必须存储 wwwmerges 文件夹以及仅部分 platformsPlugins 文件夹未存储。由于 platforms 子文件夹的许多部分内容是由 Cordova CLI 生成的,因此您必须摆弄 .gitignore 文件。

.gitignore 的内容

## Eclipse specific stuff.
.metadata/

## Android specific stuff
local.properties
/platforms/android/gen
/platforms/android/bin
/platforms/android/assets/www
/platforms/android/.metadata
/platforms/android/.staging/www
/platforms/android/.settings
platforms/android/CordovaLib/.settings/
/platforms/android/CordovaLib/bin
/platforms/android/CordovaLib/bin/proguard.txt
*.d
*.class 

## iOS specific stuff
platforms/ios/.staging/
platforms/ios/platform_www/
platforms/ios/<--projectname-->.xcodeproj/project.xcworkspace
platforms/ios/<--projectname-->.xcodeproj/xcuserdata
platforms/ios/www

## Exclude Plugins
# For iOS you have to exclude only this single folder.
platforms/ios/<--projectname-->/Plugins/
# For Android you have to manually exclude folders for each plugin provider.
# .java files for plugins stored based on plugin id. For example
# to exclude all plugins provided by Cordova add following line.
# Make sure that when you create project you specify project ID 
# as com.yourcompany.yourapp that way your code will be in
# platforms/android/src/com/yourcompany/yourapp and separated from 
# plugins
platforms/android/src/org/apache/cordova/
# For example to exclude plugins provided by BlackBerry 
# add line 
# platforms/android/src/come/blackberry/

现在,当您设置新项目时,您应该检查源代码并运行以下命令:

# Create local.properties file which is required for build
cordova platform update android 
# Or manually create local.properties with content below
# sdk.dir=C:\\adt\\sdk

# Add plugins
cordova plugin add org.apache.cordova.device
cordova plugin add org.apache.cordova.vibration
# ... and other plugins

以这种方式设置项目后,您可以两全其美。您可以使用 cordova s​​erve 在浏览器中进行快速测试,如果需要,您可以使用 Android/iOS SDK 进行繁重的测试。如果您将对 Cordova 代码库的更改保持在最低限度,并尽可能使用插件来扩展您需要的平台,您甚至可以在发布时将平台更新到更新版本的 Cordova。

希望您能够选择最适合您的方法。

关于android - 使用 phonegap 对不同平台进行版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21237101/

相关文章:

android - MIT App Inventor 2 aiStarter 错误?

android - 如何缩放位图?

ios - 在重定向之前停止 NSURL 连接,同时获取重定向 URL

svn - 撤消使用他们的并标记为已解决 - SVN

svn - 有什么方法可以在 Jenkins 作业中指定外部的 svn 修订版吗?

Android 之类的 Flutter 中的文本字段验证?

Android 获取 SlidingMenu 状态?

用于集成 n/w 层的 iOS Swift 设计

ios - 如何以编程方式检查 iPhone 中可用的 3D Touch?

java - 我应该将 Cobertura 的哪些工件 checkin 到 SVN?