Xamarin.Forms iOS 真机测试,打包
等着打包过程中,记录一下如何打一个debug包到真机上测试的流程:
1. 需要在XCode中创建一个新的项目,选择iOS==>Single View App,点击Next
2. 在新的弹框中需要Apple Id,可以使用自己的Apple Id,对应的Team可以选择个人的Personal Team,然后将剩下的
Organization Name, Organization Indetifier等依次填好。 Next
3. 在新窗口中依次填好Version等对应信息,这里最终会生成打包所需要的证书文件。需要额外注意Bundle Identifier的值,在接下来的操作中还会用到。到这里在Xcode中的工作就完成了。
4.回到Visual studio for mac中选择.iOS的project,打开Info.plist文件,将捆绑包标识符(Bundle Identifier)更改为上面记录的值。这里除了**捆绑包标识符**的输入框那里要改,下面的Bundle Siging Options…的button点出来的页面里的值也要更改。
5.Visual studio for mac中将debug的机器类型选择为你的测试机(需要数据线连接)
你可能会遇到这样的问题:
1. Invalid iTunesArtwork dimensions (1536×1536) for ‘/Users/developer4/Library/Caches/Xamarin/mtbs/builds/ProjectName.iOS/e91a9151da4817a1c6113fda15a82a6d/Resources/iTunesArtwork@3x.png’. ProjectName.iOS
解决方案:从项目中排除iTunesArtwork@3x.png。https://forums.xamarin.com/discussion/128666/invalid-itunesartwork-dimensions-1536×1536
2. Cound not connect to debugger
A. 可能是第一次运行在真正的设备上,需要测试用的设备连接网络(可能会向开发者的App Id发送验证信息),需要信任开发者(trust developer),Setting =》 General
B. Visual studio for mac自身的bug,重启设备,随缘解决。(https://developercommunity.visualstudio.com/content/problem/209829/cannot-connect-debugger-after-update-03062018.html)
另:建议先在Xcode 跑一次,再使用visual studio for mac打包。因为后者并不提示任何错,只是告诉你打包失败。
这样只可以做出来供Dev与QA测试用的Debug包,Release包需要证书,以后再补充吧。
补充:
证书会过期,具体情形为打包出的app统一的在某个时间后都会一直闪退,点击App Icon就会闪退。连接查看log可以看到类似于 “AMFI code signature validation failed”的错误提示。此时是前面的证书过期,需要重新生成一个证书。
重新生成证书:
1.在Xcode中更改一下之前生成的证书的Bundle Identifier的值(可以还是原来的Apple账号)
2.在info.plist中更改捆绑包标识符。这里除了**捆绑包标识符**的输入框那里要改,下面的Bundle Siging Options…的button点出来的页面里的值也要更改。
更换了一个新的设备进行打包,visual studio for mac不提示错误,证书也没问题,可能是因为证书要求的系统版本高于设备的系统版本。在Xcode中进行打包会提示这种Error,这也是建议先用Xcode打一次包的原因之一。
真实证书篇:
客户会提供证书文件,应该包含三部分内容(windows打开可能会看到额外多一个__MACOSX文件,可能是Mac系统下的隐藏文件)。在Mac系统下进行打包步骤如下:
1. 先在Mac系统下安装证书(点击后缀为.p12的文件),如果需要密码去pwd文件中找。
2. 在Xcode中配置证书,Bundle Identifier为对应的证书中的后缀
3. 更换info.plist中的Bundle Identifier
4. Visual Studio for MAC中选择Realese|iPhone|通用设备
5. Visual Studio for MAC菜单栏中 生成 =》 存档以发布
6. 存档页面右下角签名并分发 ==》生成后缀为.ipa的包。
PS: 存档以供发布以后一定要检查一下是不是生成了新的存档,否则还是按照原来的存档打包,你的代码不会更新!暂时可能需要在Debug模式下来重新存档,不知道为什么。