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
| fe24dd6 | 1 | # Only Bible App |
| fe24dd6 | 2 | |
| fe24dd6 | 3 | The only bible app you will ever need. |
| fe24dd6 | 4 | |
| fe24dd6 | 5 | No ads, No in-app purchases, No distractions. |
| fe24dd6 | 6 | |
| fe24dd6 | 7 | Optimized for reading and highlighting. |
| fe24dd6 | 8 | Bibles which are in the public domain are supported. |
| fe24dd6 | 9 | Verse by verse audio playback is supported for most of the languages using Azure TTS. |
| fe24dd6 | 10 | Many languages supported Indian, European and Asian. |
| fe24dd6 | 11 | |
| fe24dd6 | 12 | |
| fe24dd6 | 13 | ``` |
| fe24dd6 | 14 | flutter pub run flutter_launcher_icons --file pubspec.yaml |
| fe24dd6 | 15 | flutter pub run flutter_native_splash:create |
| fe24dd6 | 16 | ``` |
| fe24dd6 | 17 | |
| fe24dd6 | 18 | ## Testing |
| fe24dd6 | 19 | |
| fe24dd6 | 20 | Update screenshots |
| e26d881 | 21 | |
| e26d881 | 22 | `test/screenshot_test.dart` uses `golden_screenshot` to render the app for each device |
| e26d881 | 23 | (iPhone, iPad, Android phone, macbook) and writes the images directly into each |
| e26d881 | 24 | platform's fastlane screenshots folder: |
| e26d881 | 25 | |
| e26d881 | 26 | * `android/fastlane/metadata/android/en-GB/images/` |
| e26d881 | 27 | * `ios/fastlane/screenshots/en-US/` |
| e26d881 | 28 | * `macos/fastlane/screenshots/en-US/` |
| e26d881 | 29 | |
| fe24dd6 | 30 | ``` |
| fe24dd6 | 31 | flutter test test/screenshot_test.dart --update-goldens |
| fe24dd6 | 32 | ``` |
| fe24dd6 | 33 | |
| fe24dd6 | 34 | ## Setup |
| fe24dd6 | 35 | |
| fe24dd6 | 36 | ```agsl |
| fe24dd6 | 37 | brew install fastlane |
| fe24dd6 | 38 | ``` |
| fe24dd6 | 39 | |
| fe24dd6 | 40 | ### Environment variables |
| fe24dd6 | 41 | |
| fe24dd6 | 42 | Copy `.env.example` to `.env` and fill in real values for `AZURE_TTS_SUBSCRIPTION_KEY`, `RESEND_API_KEY` and `CLOUD_TRANSLATE_API_KEY`. |
| fe24dd6 | 43 | |
| fe24dd6 | 44 | `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: |
| fe24dd6 | 45 | |
| fe24dd6 | 46 | ``` |
| fe24dd6 | 47 | dart run build_runner build --delete-conflicting-outputs |
| fe24dd6 | 48 | ``` |
| fe24dd6 | 49 | |
| e26d881 | 50 | ### Signing certificates and API keys |
| e26d881 | 51 | |
| e26d881 | 52 | All signing certificates, provisioning profiles, keystores and API keys used by fastlane |
| e26d881 | 53 | (iOS/macOS/Android) live in the gitignored `certs/` directory at the project root, e.g. |
| e26d881 | 54 | `certs/AuthKey_CB6LCVYFTC.p8`, `certs/pyrossh_keystore.jks`, `certs/service_account.json`. |
| e26d881 | 55 | Copy `certs/key.properties.example` to `certs/key.properties` and fill in your Android |
| e26d881 | 56 | signing details; iOS/macOS certs and provisioning profiles are fetched automatically into |
| e26d881 | 57 | `certs/` by each platform's `fastlane certs` lane. |
| e26d881 | 58 | |
| fe24dd6 | 59 | |
| fe24dd6 | 60 | ## Release Process |
| fe24dd6 | 61 | * Create file fastlane/metadata/android/en-GB/changelogs/$versionCode.txt and add change details |
| 8b87a9b | 62 | * Screenshots are left untouched by default — regenerating and re-uploading them |
| 8b87a9b | 63 | on every release is slow and usually a no-op since the UI rarely changes. To |
| 8b87a9b | 64 | update them as part of a release, opt in with `UPDATE_SCREENSHOTS=1` (or the |
| 8b87a9b | 65 | fastlane lane option `update_screenshots:true`). This regenerates them via |
| 8b87a9b | 66 | `flutter test test/screenshot_test.dart --update-goldens` and uploads them |
| 8b87a9b | 67 | with `overwrite_screenshots: true` so App Store Connect's/Play Store's existing |
| 8b87a9b | 68 | screenshots are replaced rather than skipped as duplicates. To update them |
| 8b87a9b | 69 | without doing a full release, run the platform's `screenshots` lane directly, |
| 8b87a9b | 70 | e.g. `cd android; fastlane screenshots`. |
| fe24dd6 | 71 | |
| 0228ae8 | 72 | ### All platforms at once |
| fe24dd6 | 73 | |
| e26d881 | 74 | ``` |
| 0228ae8 | 75 | make release |
| e26d881 | 76 | ``` |
| e26d881 | 77 | |
| 8b87a9b | 78 | Builds, uploads and submits the appbundle to the Play Store, the ipa to the |
| 8b87a9b | 79 | App Store, and the pkg to the Mac App Store, one after another, without |
| 8b87a9b | 80 | touching screenshots. Equivalent to running `make release-android`, |
| 0228ae8 | 81 | `make release-ios` and `make release-macos` in sequence — use those |
| 0228ae8 | 82 | individually to release just one platform without the others. |
| e26d881 | 83 | |
| 8b87a9b | 84 | Add `UPDATE_SCREENSHOTS=1` to also regenerate and upload fresh screenshots as |
| 8b87a9b | 85 | part of the release, e.g. `make release UPDATE_SCREENSHOTS=1`. |
| 8b87a9b | 86 | |
| fe24dd6 | 87 | |
| fe24dd6 | 88 | # Data Backup |
| fe24dd6 | 89 | |
| fe24dd6 | 90 | 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. |
| fe24dd6 | 91 | |
| fe24dd6 | 92 | 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. |
| fe24dd6 | 93 | |
| fe24dd6 | 94 | iOS is also fine — getApplicationDocumentsDirectory() is included in iCloud backups by default with no configuration needed. |
| fe24dd6 | 95 | |
| fe24dd6 | 96 | So both platforms are already covered out of the box. No changes required. |