NativeNotes / Developer Tools

Mac app notarization from the command line

Apple announced that early next year macOS will start highlighting notarization status more prominently. This is great, because currently the difference between Developer ID and notarized Developer ID apps is just a short sentence in a Gatekeeper dialog. Also notarization, which is optional today, will be required by future versions of macOS. The new documentation is very detailed and surprisingly precise about resolving common issues, but does not describe how to automate an asynchronous notarization process. Read more

Distributing macOS apps via App Center

I’ve been a happy customer of the HockeyApp since their introduction back in 2012. Almost immediately, in 2014, bitstadium was acquired by Microsoft to become a part of the Visual Studio App Center. Fortunately, Microsoft did not shut down the service. With time, the HockeyApp got even better, and recently they announced a full transition to the App Center during 2019. Which is great news, because the App Center has improved analytics and crash reporting. In this post I will demonstrate these capabilities by releasing a new Mac app via the command line. Read more

Sharing modules using the Swift package manager

Tools like CocoaPods and Carthage work great when you share code with other developers, but they are not so good for local work. We often have code which should be reused between multiple apps. Or we may want to split business logic into separate modules for a massive app. Mentioned dependency managers can work with local frameworks, but their workflow is not optimized for this. Luckily, Swift 4 added support for local packages as dependencies. I will show how to edit multiple packages in a single Xcode project. Read more

Makefiles for Swift packages

NativeConnect for Mac is 100% Swift, and it includes three frameworks built with Package Manager: NativeKit, NativeUI, and NativeData. This nice setup allows for developing embedded libraries and their tests independently of the main app. Today I’d like to share one simple trick which helps to switch between internal packages fast and easily. Read more