Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6642703
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: Android平台

2017-10-11 22:14:55

Xamarin.Forms已经开源了一年多了。 那时候,我们已经接受了700多次拉取请求并收到了更多的请求。 有没有这些是你的? 如果没有,这是你的参与邀请! 在本文中,我将概述我们正在寻找什么样的贡献,并提供一个指南来提交您的第一个错误修复。

我们接受什么贡献

简而言之,我们将招募任何使Xamarin.Forms产品在稳定性,质量和能力方面更好的产品。 这可能采取以下形式:

  1. Bug修复

  2. 功能实现

  3. 测试

  4. 自述和维基文章或更新

在GitHub项目开始打开“请求”之前,有一些先决条件。

签署.NET Foundation Release

当您提交提请请求时,.NET Foundation bot将检查以确保您已经签署了Contribution许可协议。 如果没有,系统会提示您这样做。 在完成之前,我们不能接受任何捐款。

查看编码样式要求

除了一些例外,我们坚持使用.NET Foundation风格指南:

  • 不要使用私有,因为这是默认保护级别。

  • 使用硬标签而不是空格

  • 将行限制为最多120个字符

有关在Visual Studio安装中实现其中的一些的指导,请查阅我们的。

让我们关注错误修复

你发现了一个错误,并有一个修复你想贡献?真棒! 在您走得太远之前,请快速搜索Bugzilla,查看是否有任何相同问题的报告。 在搜索Xamarin.Forms时,选择“高级搜索”选项,然后:

  • Classification: Xamarin

  • Product: Xamarin.Forms

  • Component: 无或全部搜索广泛

  • Status: 所有的

如果存在匹配问题,并且标记为“正在进行”,则有人已经在处理此问题。 如果在该问题上引用了PR,那么可能会在GitHub上等待合并。 当问题被解决和修复时,然后已经将Pull请求合并以解决问题。 目前,要查看是否已经发布,您需要在哪个版本中搜索我们的发行说明。 我们有计划在未来几个星期内改进。

如果在任何其他不完整的状态有错误,或没有错误报告,那么你运气好,准备继续!

Xamarin.Forms解决方案

当您开始探索Xamarin.Forms解决方案时,可能看起来很难过。 我会为你揭开神秘面纱,并告诉你在哪里注意力。

Control Gallery/
这些项目包括一个画廊应用程序,包括所有可用的Xamarin.Forms控件,更重要的是使用UITEST内联的主机错误复制。 在修复错误时,或者只是为了调查控件是如何工作的,这个裸骨头但是功能性的应用程序是你想要看的地方。

Pages Gallery/
顾名思义,这是另一个库应用程序,但这次是DataPages实现。

Platforms/
这些项目包含平台特定的服务实现,最重要的是UI控件。 当Xamarin.Forms在iOS上呈现一个Label时,它会运行. 在Android上,你会得到, 或者如果您使用的是FastRenderers . 当添加控件或修复控件相关的错误时,这将是您实现这些更改的位置。

Xamarin.Forms/
在查找抽象控件,布局,绑定,触发器,应用链接和其他非平台特定代码的核心实现时,搜索这些项目。

Xamarin.Forms.Maps/ and Xamarin.Forms.Xaml/
这些文件夹是不言自明的。 你可能不会花太多时间在这些项目中,除非你真的明白这些领域。

修复错误

  • Clonemaster分支或者确保是最新版本。

  • 创建一个新的分支来托管您的更改

  • 打开Xamarin.Forms解决方案并导航到控件Gallery > Xamarin.Forms.Controls.Issues > Xamarin.Forms.Controls.Issues.Shared

  • 使用 按照既定的命名约定开始新的案例 “Bugzilla######.cs” ,其中######是Bugzilla中的问题ID。


点击(此处)折叠或打开

  1. using Xamarin.Forms.CustomAttributes;
  2. using Xamarin.Forms.Internals;
  3. #if UITEST
  4. using Xamarin.UITest;
  5. using NUnit.Framework;
  6. #endif
  7. namespace Xamarin.Forms.Controls.Issues
  8. {
  9.     [Preserve(AllMembers = true)]
  10.     [Issue(IssueTracker.Bugzilla, 1, "Issue Description", PlatformAffected.Default)]
  11.     public class Bugzilla1 : TestContentPage // or TestMasterDetailPage, etc ...
  12.     {
  13.         protected override void Init()
  14.         {
  15.             // Initialize ui here instead of ctor
  16.             Content = new Label
  17.             {
  18.                 AutomationId = "IssuePageLabel",
  19.                 Text = "See if I'm here"
  20.             };
  21.         }
  22. #if UITEST
  23.         [Test]
  24.         public void Issue1Test ()
  25.         {
  26.             RunningApp.Screenshot ("I am at Issue 1");
  27.             RunningApp.WaitForElement (q => q.Marked ("IssuePageLabel"));
  28.             RunningApp.Screenshot ("I see the Label");
  29.         }
  30. #endif
  31.     }
  32. }
在这里实现您的繁殖情况。 如果是一个更复杂的案例,请参考本项目中的其他问题,找到类似的内容,并遵循该模式。 最后你应该有一个演示,演示你正在努力解决的问题。
  • 选择控制库目标项目以在模拟器或设备上运行。

你应该看到你的重生发生。 如果没有,那么就会出现这个问题已经解决了。

  • 实施你的修复并重新测试。

  • 在再现文件中实现UITest。 如果您不是UITest专业人员,请再次参考来源中的其他修补程序。 一旦您提交拉动请求,测试将自动运行。

您现在可以创建一个拉请求。 在您的IDE或Git工具中,在GitHub上为Xamarin.Forms远程创建一个Pull请求。 这个过程应该转到GitHub Pull Request页面,并填入Xamarin.Forms Pull Request模板。 我们要求您填写您可以做的一切,并省略任何不适用的内容。

描述
目前的行为是什么,预期的行为是什么?

问题
列出这适用于的任何和所有Bugzilla报告

API变更
如果任何类的表面区域在进行此修复时更改,请注意此处的更改。 这些可能表示其他用户及其遗留应用程序的破坏或行为变化。

清单
指示您是否已经包括测试。 如果不需要任何测试或使用UITest来测试问题太难,请注意。

就是这样 提交拉请求,我们将审查。 如果有问题或疑虑,团队将提交意见并提出代码请求。 这个审查过程可能会感到临床,所以不要亲自去。 对自己说,开源项目的拉扯请求流程是一个很好的学习经历,在几乎每一种情况下,我的贡献最终都被接受。

如果您将URL复制到Pull请求并在引用的Bugzilla问题上注意,这对我们和其他用户也是非常有帮助的。

添加功能
在开始研究功能之前,请查看公共Xamarin.Forms路线图,然后搜索Evolution论坛,我们将讨论可能的新功能和其他更改的规范。 如果您没有看到已经覆盖的功能,请在Evolution论坛上打开一个提案,并提供实施。 Xamarin.Forms工程小组将审核该提案并提供反馈。

如果您在一个平台上实现舒适,但不足以实现其余平台,该怎么办? 继续打开提案,邀请他人参与。

测试和维基
如上所述,我们也欢迎在这些领域的贡献。 我们有几个UITEST项目以及单元测试。 我们有相当好的覆盖面,但总是会更好。 测试正确的事情很重要,所以如果你有任何问题请问。

我们的文档小组继续对我们的开发人员指南和API文档做出惊人的工作。 如果您发现任何不准确或有建议,请使用侧栏中的“我有问题”按钮,并发送给我们详细信息。

如果您的维基贡献不符合这些文档类别,请告诉我们,我们将考虑构建维基。

快乐贡献!

我希望你会考虑为Xamarin.Forms做出贡献。 没有什么可以让您的拉动请求合并,并且知道您刚刚帮助了一个巨大的惊人的开发人员社区。

有关详细信息并开始使用:

  • 有关Xamarin开源的更多指导

  • 建议



阅读(3146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~