mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-28 14:35:03 -04:00
Multiple clarifications around system support
This commit is contained in:
parent
f9a033caea
commit
e0aa5876c1
87
README.md
87
README.md
@ -1,36 +1,74 @@
|
|||||||
# Kiwix for iOS & macOS
|
# Kiwix for Apple iOS & macOS
|
||||||
|
|
||||||
This is the home for Kiwix apps on iOS and macOS.
|
This is the home for Kiwix apps for Apple iOS and macOS.
|
||||||
|
|
||||||
[](https://www.codefactor.io/repository/github/kiwix/apple)
|
[](https://www.codefactor.io/repository/github/kiwix/apple)
|
||||||
[](https://www.gnu.org/licenses/gpl-3.0)
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
||||||
<img src="https://img.shields.io/badge/Swift-5.2-orange.svg" alt="Drawing="/>
|
<img src="https://img.shields.io/badge/Swift-5.2-orange.svg" alt="Drawing="/>
|
||||||
|
|
||||||
### Mobile app for iPads & iPhones ###
|
## Download
|
||||||
|
|
||||||
|
Kiwix apps are made available primarily via the [Mac App
|
||||||
|
Store](https://macos.kiwix.org).
|
||||||
|
|
||||||
|
Most recent versions of Kiwix support the three latest versions of the
|
||||||
|
OSes (either iOS or macOS). Older versions of Kiwix being still
|
||||||
|
downloadable for older versions of macOS and iOS on the Mac App Store.
|
||||||
|
|
||||||
|
### iPads & iPhones ###
|
||||||
- Download the iOS mobile app on the [App Store](https://ios.kiwix.org)
|
- Download the iOS mobile app on the [App Store](https://ios.kiwix.org)
|
||||||
|
|
||||||
### Kiwix Desktop for macOS ###
|
### macOS ###
|
||||||
- Download Kiwix Desktop on the [Mac App Store](https://macos.kiwix.org)
|
- Download Kiwix Desktop on the [Mac App Store](https://macos.kiwix.org)
|
||||||
- Download Kiwix Desktop [DMG file](https://download.kiwix.org/release/kiwix-desktop-macos/kiwix-desktop-macos.dmg)
|
- Download Kiwix Desktop [DMG file](https://download.kiwix.org/release/kiwix-desktop-macos/kiwix-desktop-macos.dmg)
|
||||||
|
|
||||||
## Developers
|
## Develop
|
||||||
|
|
||||||
|
Kiwix developers use to work with cutting-edge versions of both macOS
|
||||||
|
and Xcode. [Continuous
|
||||||
|
integration](https://en.wikipedia.org/wiki/Continuous_integration)
|
||||||
|
secures that the whole project still compiles on the next to last
|
||||||
|
version of macOS with latest version of Xcode distributed on it.
|
||||||
|
|
||||||
|
### CPU Architectures
|
||||||
|
|
||||||
|
Kiwix compiles on both macOS with x86_64 or arm64 (M1, M2, ... family).
|
||||||
|
|
||||||
|
Kiwix for iOS and macOS can run, in both cases, on x86_64 or arm64.
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
|
To compile Kiwix you rely on the following compilation tools:
|
||||||
* An [Apple Developer account](https://developer.apple.com) (doesn't require membership)
|
* An [Apple Developer account](https://developer.apple.com) (doesn't require membership)
|
||||||
* Latest Apple Developers Tools ([Xcode](https://developer.apple.com/xcode/))
|
* Latest Apple Developers Tools ([Xcode](https://developer.apple.com/xcode/))
|
||||||
* Its command-line utilities (`xcode-select --install`)
|
* Its command-line utilities (`xcode-select --install`)
|
||||||
* `CoreKiwix.xcframework` ([libkiwix](https://github.com/kiwix/libkiwix))
|
* `CoreKiwix.xcframework` ([libkiwix](https://github.com/kiwix/libkiwix) and [libzim](https://github.com/openzim/libzim))
|
||||||
|
|
||||||
### Creating `CoreKiwix.xcframework`
|
### Steps
|
||||||
|
|
||||||
Instructions to build libkiwix at [on the kiwix-build repo](https://github.com/kiwix/kiwix-build).
|
To compile Kiwix, follow these steps:
|
||||||
|
* Open project with Xcode `open Kiwix.xcodeproj/project.xcworkspace/`
|
||||||
|
* Change the Bundle Identifier (in *Signing & Capabilities*)
|
||||||
|
* Select appropriate Signing Certificate/Profile.
|
||||||
|
|
||||||
The xcframework is a bundle of a library for multiple architectures and/or platforms. The `CoreKiwix.xcframework` will contain libkiwix library for macOS archs and for iOS. You don't have to follow steps for other platform/arch if you don't need them.
|
## Compile `CoreKiwix.xcframework` yourself
|
||||||
|
|
||||||
Following steps are done from kiwix-build root and assume your apple repository is at `../apple`.
|
`CoreKiwix.xcframework` is [made
|
||||||
|
available](https://dev.kiwix.org/apple/CoreKiwix.xcframework.zip) for
|
||||||
|
all supported OSes and CPU architectures. But you might want to
|
||||||
|
compile this piece (C++ code) by yourself. Here follow the
|
||||||
|
instructions to build libkiwix at [on the kiwix-build
|
||||||
|
repo](https://github.com/kiwix/kiwix-build).
|
||||||
|
|
||||||
#### Build libkiwix
|
The xcframework is a bundle of a library for multiple architectures
|
||||||
|
and/or platforms. The `CoreKiwix.xcframework` will contain libkiwix
|
||||||
|
library for macOS archs 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 libkiwix
|
||||||
|
|
||||||
Make sure to preinstall kiwix-build prerequisites (ninja and meson).
|
Make sure to preinstall kiwix-build prerequisites (ninja and meson).
|
||||||
|
|
||||||
@ -40,7 +78,8 @@ If you use homebrew, run the following
|
|||||||
brew install ninja meson
|
brew install ninja meson
|
||||||
```
|
```
|
||||||
|
|
||||||
Make sure xcode command tools are installed. Make sure to download an iOS SDK if you want to build for iOS.
|
Make sure Xcode command tools are installed. Make sure to download an
|
||||||
|
iOS SDK if you want to build for iOS.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
xcode-select --install
|
xcode-select --install
|
||||||
@ -59,10 +98,11 @@ kiwix-build --target-platform macOS_x86_64 libkiwix
|
|||||||
kiwix-build --target-platform macOS_arm64_static libkiwix
|
kiwix-build --target-platform macOS_arm64_static libkiwix
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Create fat archive with all dependencies
|
### Create fat archive with all dependencies
|
||||||
|
|
||||||
This creates a single `.a` archive named `merged.a` (for each platform) which contains libkiwix and all it's dependencies.
|
This creates a single `.a` archive named `merged.a` (for each
|
||||||
Skip those you don't want to support.
|
platform) which contains libkiwix and all it's dependencies. Skip
|
||||||
|
those you don't want to support.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
libtool -static -o BUILD_macOS_x86_64/INSTALL/lib/merged.a BUILD_macOS_x86_64/INSTALL/lib/*.a
|
libtool -static -o BUILD_macOS_x86_64/INSTALL/lib/merged.a BUILD_macOS_x86_64/INSTALL/lib/*.a
|
||||||
@ -71,7 +111,9 @@ libtool -static -o BUILD_iOS_x86_64/INSTALL/lib/merged.a BUILD_iOS_x86_64/INSTAL
|
|||||||
libtool -static -o BUILD_iOS_arm64/INSTALL/lib/merged.a BUILD_iOS_arm64/INSTALL/lib/*.a
|
libtool -static -o BUILD_iOS_arm64/INSTALL/lib/merged.a BUILD_iOS_arm64/INSTALL/lib/*.a
|
||||||
```
|
```
|
||||||
|
|
||||||
If you built macOS support for both archs (that's what you want unless you know what you're doing), you need to merge both files into a single one
|
If you built macOS support for both archs (that's what you want unless
|
||||||
|
you know what you're doing), you need to merge both files into a
|
||||||
|
single one
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
mkdir -p macOS_fat
|
mkdir -p macOS_fat
|
||||||
@ -80,7 +122,7 @@ lipo -create -output macOS_fat/merged.a \
|
|||||||
-arch arm64 BUILD_macOS_arm64_static/INSTALL/lib/merged.a
|
-arch arm64 BUILD_macOS_arm64_static/INSTALL/lib/merged.a
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Add fat archive to xcframework
|
### Add fat archive to xcframework
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
xcodebuild -create-xcframework \
|
xcodebuild -create-xcframework \
|
||||||
@ -90,11 +132,10 @@ xcodebuild -create-xcframework \
|
|||||||
-output ../apple/CoreKiwix.xcframework
|
-output ../apple/CoreKiwix.xcframework
|
||||||
```
|
```
|
||||||
|
|
||||||
You can now launch the build from Xcode and use the iOS simulator or your macOS target. At this point the xcframework is not signed.
|
You can now launch the build from Xcode and use the iOS simulator or
|
||||||
|
your macOS target. At this point the xcframework is not signed.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
### Building Kiwix iOS or Kiwix macOS
|
[GPLv3](https://www.gnu.org/licenses/gpl-3.0) or later, see
|
||||||
|
[LICENSE](LICENSE) for more details.
|
||||||
* Open project with Xcode `open Kiwix.xcodeproj/project.xcworkspace/`
|
|
||||||
* Change the Bundle Identifier (in *Signing & Capabilities*)
|
|
||||||
* Select appropriate Signing Certificate/Profile.
|
|
Loading…
x
Reference in New Issue
Block a user