请注意:虽然我在这里特别提到了AngularJS,Ionic和Cordova,但我真的在谈论生成的任何移动应用程序(混合和本机等)适用于iOS和Android平台的二进制文件。因此,我相信任何具有移动开发经验的人都应该能够解决这个问题!
我正在使用AngularJS,Ionic和Cordova为iOS和Android构建移动应用程序。我担心的是iOS和Android会一直发布更新,有些可能是错误的,或者可能只是彻底破坏了更改,而且突然变得与我使用的插件/库版本不兼容。
这将导致应用程序在生产中自发崩溃。但是它揭示了一个更糟糕的问题:决定将你的构建针对特定的依赖(插件/库/等)版本或只是总是引入最新/稳定的版本他们!
这里我们指定要使用的所有依赖项的确切版本。然后我们使用Ionic构建来构建应用程序,但现在很好。我可以期待,如果我不改变任何代码,那么针对完全相同的依赖版本的应用程序的每个后续构建都将始终成功构建。
然而,当iOS / Android 发布重大变化或错误(或任何促使图书馆/插件维护者陷入疯狂并发布新版本的因为我已将我以前的版本固定到特定版本的依赖项上,我实际上可能会运行非常旧的依赖版本,现在再次针对所有最新版本重新构建我的应用程序将会非常令人头痛。< / p>
如果我不指定依赖版本(并且让构建始终使用最新和最好的版本),那么我可以热切地工作来构建我的应用程序,然后等待几天(而不是更改我自己的任何代码)然后尝试再次构建它,编译/构建可能会失败!这是因为在这几天之间,一些项目升级了自己和/或它自己的依赖项,并引入了一个破坏性的变化。
然而,当iOS / Android发布需要我升级到最新依赖项的重大变化时,头痛可能会比选项1少得多,因为我会相对多所有依赖项的较新版本。
是否有任何工具/策略/技巧等。移动社区利用什么来稳定构建并使其更加一致,可重复的构建?
答案 0 :(得分:2)
建议使用特定版本的依赖项,您可以考虑在次要补丁级别X.Y. *使用概念*来获取最新的错误修复。
您的构建应该是自动且一致的,有些产品可以帮到您,例如BuddyBuild和Buddy都支持Android和IOS。
成功的构建不是全部,应用程序应该在发布之前传递所有功能和QA测试。因此,您需要编写与UnitTests和FunctionalTest一样多的内容来覆盖质量检查。还有其他QC工具可以进一步保证,例如静态代码分析工具可以帮助您发现潜在的错误和失败,而测试覆盖工具可以让您知道代码的哪些部分尚未经过测试。
这是一个简单的CI / CD工作流程
Code -> Push -> CI Test -> CD Publish Release
您可以设置作业以在CI服务器上每周构建项目,并且只有在通过所有质量检查时才发布发布
新版操作系统版本崩溃的应用程序不是一个灾难性的问题,它很常见且有其解决方案,Google和Apple不会向用户发布新的操作系统版本,开发人员提供操作系统的预览版本和新版本API,开发人员通常有超过2个月的时间来采用新的更改,甚至使用新的API功能。
顺便提一下,您可以访问Fabric.io和Firebase等崩溃报告工具,帮助您发现生产中的问题。
干杯