# Development ## Available flavors Building with prod flavor requires `DefaultFirebaseOptions` to be present in the _lib/firebase_options.dart_ If you don't want to create your own firebase app, you end up with only dev flavor. ## IAP repo import As part of the app's functionallity is in the private repo, you have to replace this lines in _pubspec.yaml_: ```yaml m3_lightmeter_iap: git: url: "https://github.com/vodemn/m3_lightmeter_iap" ref: main ``` to this: ```yaml m3_lightmeter_iap: path: iap ``` After that run `flutter pub get` as usual. For the first run it will be necessary to open _iap/_ folder and run `flutter pub get` from there. ### 1. Install Flutter To build this app you need to install Flutter 3.10.0 stable. [How to install](https://docs.flutter.dev/get-started/install). ### 2. (Optional) Install Firebase Out of the box Firebase Crashlytics won't work. If you want to add Crashlytics to your local build please follow [this guide](https://firebase.google.com/docs/flutter/setup). ### 3. Get packages Fetch all the neccessary dependencies and generate translation files by running the following commands: ```console flutter pub get flutter pub run intl_utils:generate ``` ### 4. Build You can build an apk by running the following command from the root of the repository: ```console flutter build apk --release --flavor $FLAVOR --dart-define cameraPreviewAspectRatio=2/3 -t lib/main_$FLAVOR.dart ``` Just replace `$FLAVOR` with `dev` or `prod`. # Contribution To report a bug or suggest a new feature open a new [issue](https://github.com/vodemn/m3_lightmeter/issues). In case you want to help develop this project feel free to open a Pull Request, but you need to follow this [style guide](doc/style_guide.md). # iOS Limitations A list of features, that Android version of the app has and that iOS does not. ## Incident light metering Apple does not provide API for reading Lux stream form the ambient light sensor. Lux can be calculated based on front camera image stream, but this would be a reflected light. So there is no way incident light metering can be implemented on iOS. ## Volume buttons action This can be [implemented](https://stackoverflow.com/questions/70161271/ios-override-hardware-volume-buttons-same-as-zello) but the app will be rejected due to [2.5.9](https://developer.apple.com/app-store/review/guidelines/#software-requirements)