One example is 32 bits compatibility: the main platforms (Darwin and Linux) do not care that much anymore about 32 bits, having evolved to 64 bits in most cases, so in some occasions a test will be written only for 64 bit machines, and have to be adapted for the ARMv7 32 bit processor (for example in #28542). In other cases the fixes are more involved. In this case, the fix is really simple, since it just means adding // REQUIRES: executable_text in the test file. Most of the breakages this days is a modification on the test files: either someone added a new test, or someone modified a test that didn't need to execute on the target. If the breakages are not recent (so the first build that failed is already discarded from the limited history of 20 last builds), one should focus on the Console Output only. Since the machines are quite fast (it takes about an hour to build and test), if the breakages are recent, it is quite easy with Jenkins Console Output and the Jenkins Build Changes to figure out what happened. Fortunately there are not that many breakages thanks to the awesome work of the rest of the contributors, but there exist from time to time. Sadly, there's currently no way set up to execute the same suite of tests before the pull requests are merged, so normally one will notice problems with the builds after the pull requests are merged, and not before. The products will normally compile, and for the most part they pass the tests and work, but building them in the CI is not possible at the moment (see below to learn who is continuously building those libraries for Android).Īdditionally, these machines skip building many products beyond Swift, like SwiftPM, SourceKit-LSP and others, since those only apply to the machine that compiles the code, not the one that run it, and those products are already build by the Linux CI machines, and building them again will be a waste of resources. Limitations in the build-script infrastructure make it impossible to cross-compile those. This means that by default for Android, instead of running the target check-swift-android-aarch64, the machines run check-swift-only_non_executable-android-aarch64.Ī couple of pieces that are not build in these machines are the Swift corelibs (dispatch, XCTest, and Foundation). In the machines we can test the compiler and some aspects of the stdlib, but we cannot run any compiled code targeting the Android devices, because the machines have no Android device attached to them. The complete test suite will test both the compiler and the standard library implementation. These machines do not execute the complete Swift test suite. Those machines are still going to be available for the time being. There's one for ARMv7 and one for AArch64. About continuous integration.Īs part of the Swift Community CI there are two machines running a partial Swift test suite with every commit to master. Sadly, I will not be able to continue dedicating a lot of time to those efforts, and with this post I want to inform the community of people interested in Swift for Android. Anyway, don't forget to use appropriate new methods (not deprecated).For a little over a year, I have been collaborating with the open source community in bringing Swift support for Android up to the level that other platforms enjoy (namely Darwin and Linux), mainly thanks to the incredible job others did before me. Picker.displayedProperties = numberWithInt:kABPersonAddressProperty]] Here is my init method used in my app to present a controller which is the contacts tableView: - (id)initĪBPeoplePickerNavigationController *picker = ĪBAddressBookRef addressBook = ABAddressBookCreate() You can see that keynote video about this here: Here a nice tutorial that explain how to do that:Īlso: in iOS 8, you can use the inter-app communication extension! It's a really nice feature.
0 Comments
Leave a Reply. |