Coding with Titans

so breaking things happens constantly, but never on purpose

HowTo: Add CocoaPods private ZIP file as dependency

As an iOS developer you often hear about dependencies management. Looking into this subject deeper quickly leads towards CocoaPods and Carthage as two very popular solutions, yet build with totally different mindsets and assumptions. First one is a centralized solution, with full list of existing potential dependencies, while the latter one simply downloads the GitHub repo locally and builds it or only references the prepared binaries. And even if I like and used Carthage in my previous projects, I had to put it on hold for some time, because of its lack of support of XCFrameworks and in general the Xcode 12 style of development. Read more →

HowTo: Get currently active version of Xcode

Sometimes knowing the current version of Xcode used to build the stuff from command line becomes a useful intel. Here is the recipe on how to obtain this information in a clean manner. Easiest command would be to call: $ xcodebuild -version That produces output like: Xcode 12.5 Build version 12E262 As an improvement I could use sed to simply extract the number from a line with the Xcode prefix: Read more →

HowTo: Select running iOS simulator while automating testing

One thing was always a dilemma for me - running iOS automated unit-test from a command line. On the first look the command looks simple, it’s just a call to xcodebuild with a bunch of parameters. What can go wrong there, right? $ xcodebuild -resultBundlePath "$test_results_path" -workspace "$workspace_path" -scheme "$scheme_name" -sdk "$sdk_version" -destination '$destination' -testPlan "$plan_name" -only-testing:'$single_test_path' test Where: test_results_path - describes the path, where to store test outcomes (. Read more →

HowTo: Find and mark all FIXME / TODO in Xcode project

This time it won’t be a guide I came up myself from scratch. Recently I joined a totally new Swift project and wanted to quickly understand, what it does. Then I had an idea of navigating and finding issues, that were left there by my fellow previous developers. Those specially marked lines are usually left there and aren’t meant to be brought to light. Mentally they can be ignored for years by their creators. Read more →

Binary XCFramework

During WWDC2019 Apple introduced a new binary package, that AAaaaaaaaaaaa Now, new version of Swift Package Manager can distribute those binary packages. Video and internationalized https://medium.com/@anuragajwani/how-to-build-universal-ios-frameworks-using-xcframeworks-4c2790cfa623 https://www.appcoda.com/xcframework/ https://instabug.com/blog/ios-binary-framework/ https://medium.com/@anuragajwani/how-to-distribute-compiled-universal-ios-xcframeworks-using-swift-package-manager-8eaf8395985f https://medium.com/@anuragajwani/how-to-build-universal-ios-static-libraries-using-xcframework-a3f70f998c38 https://medium.com/onfido-tech/distributing-compiled-swift-frameworks-via-cocoapods-8cb67a584d57 Creating XCFramework using SwiftPM is impossible today. https://github.com/apple/swift-package-manager/blob/main/Documentation/Usage.md @obj for non NSObject child classes is supported only from iOS 13.0+ –> https://forums.swift.org/t/xcframework-requires-to-target-ios-13-for-inter-framework-dependencies-with-objective-c-compatibility-tested-with-xcode-11-beta-7/28539 Issue with Realm + Obj-C cooperation –> https://github.com/realm/realm-cocoa/issues/3073 Looking for a good guide about using Swift Packages Manager and examples with Xcode - take a look here. Read more →

Flutter for iOS and Push Notifications warning

After publishing a Flutter app to App Store I received following email: Dear Developer, We identified one or more issues with a recent delivery for your app, "pl.codetitans.app" 1.2.3 (4). Your delivery was successful, but you may wish to correct the following issues in your next delivery: ITMS-90078: Missing Push Notification Entitlement - Your app appears to register with the Apple Push Notification service, but the app signature's entitlements do not include the 'aps-environment' entitlement. Read more →