This is the home for Kiwix apps on iOS and macOS.
- Download the iOS mobile app on the App Store
- Download Kiwix Desktop on the Mac App Store
- Download Kiwix Desktop DMG file
- An Apple Developer account (doesn't require membership)
- Latest Apple Developers Tools (Xcode)
- Its command-line utilities (
xcode-select --install
) libkiwix.xcframework
(kiwix-lib)
Instructions to build kiwix-lib at on the kiwix-build repo.
The xcframework is a bundle of a library for multiple architectures and/or platforms. The libkiwix.xcframework
will contain libkiwix library for macOS arch and for iOS. You don't have to follow steps for other platform/arch if you don't need them.
Following steps are done from kiwix-build root and assume your apple repository is at ../apple
.
Make sure to preinstall kiwix-build prerequisites (ninja and meson).
If you use homebrew, run the following
brew install ninja meson
Make sure xcode command tools are installed
xcode-select --install
After you can build the libkiwix
git clone https://github.com/kiwix/kiwix-build.git
cd kiwix-build
# [iOS] build libkiwix
kiwix-build --target-platform iOS_multi libkiwix
# [macOS] build libkiwix
kiwix-build --target-platform macOS_arm64 libkiwix
kiwix-build --target-platform macOS_x86_64 libkiwix
This creates a single .a
archive named libkiwix which contains all libkiwix's dependencies.
If you are to create an xcframework with multiple architectures/platforms, repeat this step for each:
macOS_x86_64
macOS_arm64
iOS_x86_64
iOS_arm64
You'll have to do it for both iOS archs although you built it using multi
.
libtool -static -o BUILD_<target>/INSTALL/lib/libkiwix.a BUILD_<target>/INSTALL/lib/*.a
xcodebuild -create-xcframework -library BUILD_<target>/INSTALL/lib/libkiwix.a -headers BUILD_<target>/INSTALL/include -output ../apple/Libraries/libkiwix.xcframework
You can now launch the build from Xcode and use the iOS simulator or your macOS target.
- Open project with Xcode
open Kiwix.xcodeproj
- Change the App groups (in Capabilities) and Bundle Identifier for both iOS and Bookmarks targets
- App Group must be different and unique (ex:
tld.mydomain.apple
) - iOS Bundle Identifier must be different and unique (ex:
tld.mydomain.apple.Kiwix
) - Bookmarks Bundle Identifier must be a child of iOS one (ex:
tld.mydomain.apple.Kiwix.Bookmarks
) - ⚠ if you are using a regular (non-paying) Apple Developer Account, you are limited in the number of App IDs you can use so be careful not to fumble much with those.
- App Group must be different and unique (ex:
- Change the Signing profile to your account.