
* coredata stack * rename fir * move files * library setup * compatibility * library setup * load on appear * ZimFileGrid * FlavorTag * withCheckedThrowingContinuation * flavor tag * zim files cell * grid * list setup * zim file list * grid * zim file cell background * favicon * SectionHeader * grid * new tab * list style * refactor * refactor * style * zim file grid * searchable new tab * new section * style * ZimFileCell * cache favicon * ZimFilesNew * ZimFilesNew sorting filtering * ZimFilesNew * library content * keypath * ZimFileList searchable * ZimFileList * ZimFilesNew side panel * animation * backward compatible article count * ZimFileList deterministic sort order * rename * macos styling * library grid * grid * refactor * grid * zim file list * MacAdaptableContent * ZimFileCellSelection * grid * zim file detail * refactor * move file * DownloadTask * downloads * downloadURL * start download * Download task * observable * zim file basic info * download progress * rename * refactor * pause resume * save file * download error * refactor * refactor * macos zim file detail * iOS simplier navigation link * refactor * refactor * refactor * ZimFilesNew * ZimFilesNew * ZimFilesNew * ZimFileGrid * ZimFileList * zim file list * ZimFileListStyle * ZimFileRow * ZimFileRowSelection * ZimFileCellSelection * purge * availability * download * ZimFileDetail * ZimFileContextMenu * scheme * ZimFileSelection * ZimFileGrid * iOS root * images * favicon * Favicon * asset * File import button * ZimFilesOpened * upsertZimFile * FileImporter * zim file opened * ZimFilesOpened * open zim file help * actions * ZimFileDetail actions * ZimFileDetail download * ZimFileDetail iOS * ZimFileDetail alerts * isFileImporterPresented * delete action iOS * iOS 14+ UIKit Target * scene based iOS app * consolidation * delete * iOSApp * delete * iOS info plist * info plist * preview content * rename * WebView * swiftui based scene * file open * open url * load main page * refactor * macOS build * LibraryViewModel * doc * refactor * buttons * opened action * refactor * refactor * open main page * Reader - Webview * buttons * appearance * buttons * BookmarkButton * refactor * bookmarks * WKNavigationDelegate * ReaderViewModel * more button * MoreButton * disable * views * button * buttons * reader * reader * reader * sidebar * focus & commands * display mode * SidebarZimFilesOpened * url * SidebarZimFilesOpened * SidebarZimFilesOpened * ios webview * main page * MainArticleButton * RandomArticleButton * inject * outline * refactor * outline * sheetDisplayMode * OutlineButton * Outline dismiss * macOS * purge * Outline * iOS sidebar width * BookmarkButton * BookmarkButton * bookmarks * Outlint * Bookmarks * issearchactive * ios search active * search results * Search * SearchFilter * search macos * search * Search * app icon * compatibility * SearchViewModel * refactor * search result * refactor sort * search operation * search view model * mac search result loading * mac remove unused * ios app icon * SearchResultSnippetMode * build * move file * Search ios * search result loading * prevent search result filckering * ignoresSafeArea * default sidebar display mode * list style * search sidebar width * SearchResultCell * SearchResultCell * SearchResultRow * SearchResultRow line limit * search result cell * SearchResultRow * BookmarkButton * webview gesture * macos ControlGroup * CellBackground * purge * outline style * welcome view * outline * SplitView * SplitView * welcome url * BookmarkButton tap * bookmark toggle * Search mac * Welcome grid item * welcome * revert * animation * animation * animation * iphone regular sidebar
Kiwix for iOS & macOS
This is the home for Kiwix apps on iOS and macOS.
Mobile app for iPads & iPhones
- Download the iOS mobile app on iTunes App Store
Kiwix Desktop for macOS
- Download Kiwix Desktop on iTunes App Store
- Download Kiwix Desktop DMG file
Developers
Dependencies
- An Apple Developer account (doesn't require membership)
- Latest Apple Developers Tools (Xcode)
- Its command-line utilities (
xcode-select --install
) libkiwix.xcframework
(kiwix-lib)
Creating libkiwix.xcframework
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
.
Build kiwix-lib
git clone https://github.com/kiwix/kiwix-build.git
cd kiwix-build
# if on macOS mojave (10.14), install headers to standard location
# https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes?language=objc
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
# make sure xcrun can find SDKs
sudo xcode-select --switch /Applications/Xcode.app
# [iOS] build kiwix-lib
kiwix-build --target-platform iOS_multi kiwix-lib
# [macOS] build kiwix-lib
kiwix-build --target-platform native_static kiwix-lib
Create fat archive with all dependencies
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:
native_static
(for macOS – x86_64)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
Add fat archive to xcframework
xcodebuild -create-xcframework -library BUILD_<target>/INSTALL/lib/libkiwix.a -headers BUILD_<target>/INSTALL/include -output ../apple/Model/libkiwix.xcframework
You can now launch the build from Xcode and use the iOS simulator or your macOS target.
Building Kiwix iOS or Kiwix macOS
- 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.