Repository navigation
Building from Source
English | 中文
- Flutter 3.44.8 (the version CI uses), Dart SDK 3.12 or later.
- Android: JDK 17 and the Android SDK.
- iOS: Xcode 27 and CocoaPods. CI builds with the iOS 27.1 SDK, as apps built with an earlier SDK are only shown centered on iPhone Duo; the minimum is iOS 15.0. The embedded JDK is built for devices only, so the complete app does not run on the iOS simulator.
- macOS: Xcode and CocoaPods.
- Windows and Linux: the desktop dependencies listed in the Flutter documentation. Running on Linux also needs
webkit2gtk-4.1.
The entry point is lib/src/main.dart, not Flutter's default lib/main.dart. Every build and run command needs -t lib/src/main.dart:
flutter pub get
flutter run -t lib/src/main.dart# Android (one APK per CPU architecture, as on the releases page)
flutter build apk -t lib/src/main.dart --release --split-per-abi
# iOS (unsigned; sign it yourself with AltStore, SideStore and the like)
cd ios && pod update && cd ..
flutter build ios -t lib/src/main.dart --release --no-codesign
# macOS
flutter build macos -t lib/src/main.dart --release
# Windows
flutter build windows -t lib/src/main.dart --release
# Linux
flutter build linux -t lib/src/main.dart --releaseWhere the results are:
- Android:
build/app/outputs/flutter-apk/orbuild/app/outputs/apk/release/ - iOS:
build/ios/iphoneos/Runner.app. To make an IPA, put the.appinto a folder namedPayloadand zip that folder as.ipa. - macOS:
build/macos/Build/Products/Release/jhentai.app
Release builds read their signing configuration from android/key.properties:
storeFile=/path/to/your.keystore
storePassword=...
keyAlias=...
keyPassword=...Create your own key, see the Flutter documentation. For a build only you will try, the release signingConfig in android/app/build.gradle can also be set to signingConfigs.debug.
Note: an APK signed with another key cannot be installed over the app; it has to be uninstalled first, which deletes the app's data (logins, download records and so on). On a device that has the release from the releases page, keep using those APKs, or export your data and set up cloud sync first.
See Translation in the README. UI strings live in the six language files under lib/src/l18n/; a new string is added to all six.