使用phonegap为不同平台进行版本控制

时间:2014-01-20 14:56:13

标签: android ios svn cordova versioning

我们的新版本项目遇到了很多问题,我们使用的是phonegap 3.2。我想问一下,将数据版本化的最佳方法是什么,具有以下要求:

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

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

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

赞赏任何提示

1 个答案:

答案 0 :(得分:4)

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

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

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

  1. Platform SDK开发工作流程。使用标准SDK工具为平台创建应用程序的位置,然后将CordovaLib添加为依赖项并根据需要嵌入WebView。然后使用Eclipse / XCode进行进一步开发。如果您通过这种方式设置了多个项目,则必须手动确保两个项目中的 www 文件夹保持同步。
  2. 此工作流程使您能够使用所有平台功能,但您必须手动同步 www 文件夹的内容,并以某种方式使用特定于平台的CSS / JS / HTML 注意:在支持下我的意思是,这是两个工作流程,它引起了开发人员的更多关注。

    现在回答您的问题 - 我建议您使用以下工作流程,该工作流程是基于CLI的工作流程的略微修改版本。您必须存储 www 合并文件夹以及平台的部分内容。 插件文件夹未存储。由于平台子文件夹的许多部分内容都是由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 serve在浏览器中进行快速测试,如果需要,您可以使用Android / iOS SDK进行繁重的测试。如果您将Cordova代码库的更改保持在最低限度并使用插件来扩展平台,那么您甚至可以将平台更新到更新版本的Cordova。

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