ChrisLi cfac53f941
iOS 15 + macOS 12 (#461)
* setup

* RootView setup

* open url

* ReadingView

* ReadingView

* webview delegate

* webview outlint

* sidebar

* buttons

* bar buttons

* reader view model

* reader view model

* ReadingView iOS

* NavigationTitleSubtitle

* map

* introspect

* content group

* setting navigation

* WebViewCoordinator

* webview state

* outline

* root view iOS macos

* ios buttons

* OutlineMenu

* OutlineMenu

* outlint tree

* webview gesture

* bookmark button

* merge notification

* BookmarkMultiButton

* ArticleCell

* ArticleCell

* data model

* iOS bookmarks

* bookmark loading

* search

* RandomArticle

* MainArticleMenuButton

* MoreActionMenu

* swiftui4

* BarSetupModifier

* RootView_SwiftUI4

* NavigationItem

* purge & renaming

* bookmarks

* welcome no content

* welcome no content

* file importer

* macos library hookup

* library iOS setup

* Library

* Library setup

* buttons

* library setup

* CategoryList

* predicates

* grid

* settings view

* RootView_SwiftUI4

* RootView

* root view

* RootView_iOS

* ios reading view model

* rootview

* onchange

* ios bars

* reading view iOS 16 button

* bookmark sort

* mvoe

* project setting

* focus

* NavigationItemButtons

* patches

* PageZoomButtons

* FocusedSceneValue modifier

* pagezoom observer

* search view

* SearchView

* dismiss search

* min detail view size

* search result

* SearchView

* resrch

* dismiss search on url change

* search view

* ios search setup

* search

* macos search

* ios search

* remove old search

* use searchbar

* searching

* ios memory leak

* WebViewConfiguration

* macOS webview

* refactor

* SearchBar setup

* search bar setup

* SearchBar setup

* searchbar

* ReadingView

* webview ref

* outline

* sheet

* toolbar title outline

* compact reading view

* settings

* recent search

* reading view

* reading view

* SearchView

* several small changes

* shortcuts

* commands buttons

* macos command

* navigation action

* patch

* revert

* webview retention

* navigation focused scene value

* ipad keyboard shortcut

* macos app min fheight

* ios sheet action

* macOS 13 build

* purge

* move

* move

* indent

* settings

* file import

* rename

* GridCommon

* library views

* purge

* remove LibraryTopic

* LibraryView_iOS

* move

* coredata context

* add url binding

* ZimFileSelection

* pass url down

* ZimFileDetail

* load main page

* revert

* macos 12 compile

* reading view empty title

* view model

* onboarding view

* root view iOS 16

* ios search

* root view

* OutlineTree

* search overlay

* library view

* library refresh views

* view model

* view model

* LibraryViewModel

* zim file detail

* zim file detail styling

* zim file detail

* library detail & refresh

* ZimFileContextMenu

* directory monitor

* LibraryOperations

* LibraryOperations

* reopen

* migration

* zim file migration

* bookmark migration

* comments

* open zim file via bookmark

* welcome view

* hide bookmark section when empty

* bookmark context menu setup

* bookmark add / delete view model

* skip notification

* refactor view modifier

* remove old code

* url loading

* refactor navigation delegate

* safari sheet

* safari view sheet

* iOS font size

* max width welcome view

* onboarding view

* library view

* FileImportButton

* FileImportButton

* dismiss sheet when loading main page

* settings misc

* category auto refresh

* ios app version
2022-09-21 22:14:10 -04:00

Kiwix for iOS & macOS

This is the home for Kiwix apps on iOS and macOS.

CodeFactor License: GPL v3 Drawing=

Mobile app for iPads & iPhones

Kiwix Desktop for macOS

Developers

Dependencies

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.
  • Change the Signing profile to your account.
Description
Kiwix for offline access on iOS and macOS
Readme 51 MiB
Languages
Swift 92.6%
Objective-C++ 4.2%
Objective-C 1.8%
Python 0.7%
JavaScript 0.6%