only-bible-app v3.7.2+24
git clone https://git.pyrossh.dev/only-bible-app
The only bible app you will ever need. No ads. No in-app purchases. No distractions.
readme.md
# Only Bible App
The only bible app you will ever need.
No ads, No in-app purchases, No distractions.
Optimized for reading and highlighting.
Bibles which are in the public domain are supported.
Verse by verse audio playback is supported for most of the languages using Azure TTS.
Many languages supported Indian, European and Asian.
```
flutter pub run flutter_launcher_icons --file pubspec.yaml
flutter pub run flutter_native_splash:create
```
## Testing
Update screenshots
`test/screenshot_test.dart` uses `golden_screenshot` to render the app for each device
(iPhone, iPad, Android phone, macbook) and writes the images directly into each
platform's fastlane screenshots folder:
* `android/fastlane/metadata/android/en-GB/images/`
* `ios/fastlane/screenshots/en-US/`
* `macos/fastlane/screenshots/en-US/`
```
flutter test test/screenshot_test.dart --update-goldens
```
## Setup
```agsl
brew install fastlane
```
### Environment variables
Copy `.env.example` to `.env` and fill in real values for `AZURE_TTS_SUBSCRIPTION_KEY`, `RESEND_API_KEY` and `CLOUD_TRANSLATE_API_KEY`.
`lib/env.g.dart` is generated from `.env` via `envied` and is gitignored, so it must be (re)generated after cloning and any time `.env` changes:
```
dart run build_runner build --delete-conflicting-outputs
```
### Signing certificates and API keys
All signing certificates, provisioning profiles, keystores and API keys used by fastlane
(iOS/macOS/Android) live in the gitignored `certs/` directory at the project root, e.g.
`certs/AuthKey_CB6LCVYFTC.p8`, `certs/pyrossh_keystore.jks`, `certs/service_account.json`.
Copy `certs/key.properties.example` to `certs/key.properties` and fill in your Android
signing details; iOS/macOS certs and provisioning profiles are fetched automatically into
`certs/` by each platform's `fastlane certs` lane.
## Release Process
* Create file fastlane/metadata/android/en-GB/changelogs/$versionCode.txt and add change details
* Screenshots are left untouched by default — regenerating and re-uploading them
on every release is slow and usually a no-op since the UI rarely changes. To
update them as part of a release, opt in with `UPDATE_SCREENSHOTS=1` (or the
fastlane lane option `update_screenshots:true`). This regenerates them via
`flutter test test/screenshot_test.dart --update-goldens` and uploads them
with `overwrite_screenshots: true` so App Store Connect's/Play Store's existing
screenshots are replaced rather than skipped as duplicates. To update them
without doing a full release, run the platform's `screenshots` lane directly,
e.g. `cd android; fastlane screenshots`.
### All platforms at once
```
make release
```
Builds, uploads and submits the appbundle to the Play Store, the ipa to the
App Store, and the pkg to the Mac App Store, one after another, without
touching screenshots. Equivalent to running `make release-android`,
`make release-ios` and `make release-macos` in sequence — use those
individually to release just one platform without the others.
Add `UPDATE_SCREENSHOTS=1` to also regenerate and upload fresh screenshots as
part of the release, e.g. `make release UPDATE_SCREENSHOTS=1`.
# Data Backup
android:allowBackup is not set, which means it defaults to true on Android — so Auto Backup is already enabled. Your app_state.json in the documents directory will be backed up to Google Drive automatically.
However, there's one thing worth noting: the <application> tag is missing android:fullBackupContent or android:dataExtractionRules, which means everything in the app's data directory is backed up (including potentially sensitive data). That's fine for this app since it's just preferences and highlights.
iOS is also fine — getApplicationDocumentsDirectory() is included in iCloud backups by default with no configuration needed.
So both platforms are already covered out of the box. No changes required.