ChrisLi 8e983dc180
Swiftui components (#447)
* 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
2022-06-06 09:05:10 -04:00
2020-06-08 16:42:06 +02:00
2022-06-06 09:05:10 -04:00
2021-11-06 11:24:18 -04:00
2022-06-06 09:05:10 -04:00
2022-06-06 09:05:10 -04:00
2021-09-12 14:38:57 -04:00
2021-09-15 12:10:37 -04:00
2022-03-22 21:42:35 -04:00
2020-08-25 08:40:43 +02: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%