#29 libre flavour

This commit is contained in:
Thibault Deckers 2022-11-15 21:09:24 +01:00
parent 7cc663748a
commit b1969aff16
44 changed files with 187 additions and 151 deletions

View file

@ -66,6 +66,9 @@ jobs:
(cd scripts/; ./apply_flavor_izzy.sh) (cd scripts/; ./apply_flavor_izzy.sh)
flutter build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi --bundle-sksl-path shaders_3.3.8.sksl.json flutter build apk -t lib/main_izzy.dart --flavor izzy --split-per-abi --bundle-sksl-path shaders_3.3.8.sksl.json
cp build/app/outputs/apk/izzy/release/*.apk outputs cp build/app/outputs/apk/izzy/release/*.apk outputs
(cd scripts/; ./apply_flavor_libre.sh)
flutter build apk -t lib/main_libre.dart --flavor libre --bundle-sksl-path shaders_3.3.8.sksl.json
cp build/app/outputs/apk/libre/release/*.apk outputs
rm $AVES_STORE_FILE rm $AVES_STORE_FILE
env: env:
AVES_STORE_FILE: ${{ github.workspace }}/key.jks AVES_STORE_FILE: ${{ github.workspace }}/key.jks

View file

@ -4,7 +4,7 @@ plugins {
id 'kotlin-kapt' id 'kotlin-kapt'
} }
def appId = "deckers.thibault.aves" def packageName = "deckers.thibault.aves"
// Flutter properties // Flutter properties
@ -49,7 +49,7 @@ android {
} }
defaultConfig { defaultConfig {
applicationId appId applicationId packageName
// minSdkVersion constraints: // minSdkVersion constraints:
// - Flutter & other plugins: 16 // - Flutter & other plugins: 16
// - google_maps_flutter v2.1.1: 20 // - google_maps_flutter v2.1.1: 20
@ -63,7 +63,6 @@ android {
manifestPlaceholders = [googleApiKey: keystoreProperties['googleApiKey'], manifestPlaceholders = [googleApiKey: keystoreProperties['googleApiKey'],
huaweiApiKey: keystoreProperties['huaweiApiKey']] huaweiApiKey: keystoreProperties['huaweiApiKey']]
multiDexEnabled true multiDexEnabled true
resValue 'string', 'search_provider', "${appId}.search_provider"
} }
signingConfigs { signingConfigs {
@ -106,16 +105,24 @@ android {
// generate APK by ABI, but NDK ABI filters are incompatible with split APK generation // generate APK by ABI, but NDK ABI filters are incompatible with split APK generation
ext.useNdkAbiFilters = false ext.useNdkAbiFilters = false
} }
libre {
// F-Droid
applicationIdSuffix ".libre"
dimension "store"
ext.useCrashlytics = false
ext.useHMS = false
// generate a universal APK without x86 native libs
ext.useNdkAbiFilters = true
}
} }
buildTypes { buildTypes {
debug { debug {
applicationIdSuffix ".debug" applicationIdSuffix ".debug"
resValue 'string', 'search_provider', "${appId}.debug.search_provider"
} }
profile { profile {
applicationIdSuffix ".profile" applicationIdSuffix ".profile"
resValue 'string', 'search_provider', "${appId}.profile.search_provider"
} }
release { release {
signingConfig signingConfigs.release signingConfig signingConfigs.release
@ -124,6 +131,11 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
applicationVariants.all { variant ->
variant.resValue 'string', 'screen_saver_settings_activity', "${applicationId}/${packageName}.ScreenSaverSettingsActivity"
variant.resValue 'string', 'search_provider', "${applicationId}.search_provider"
}
android.productFlavors.each { flavor -> android.productFlavors.each { flavor ->
def tasks = gradle.startParameter.taskNames.toString().toLowerCase() def tasks = gradle.startParameter.taskNames.toString().toLowerCase()
if (tasks.contains(flavor.name) && flavor.ext.useNdkAbiFilters) { if (tasks.contains(flavor.name) && flavor.ext.useNdkAbiFilters) {

View file

@ -1,2 +0,0 @@
<dream xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="deckers.thibault.aves.debug/deckers.thibault.aves.ScreenSaverSettingsActivity" />

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Aves Libre</string>
</resources>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Aves Libre [Debug]</string>
</resources>

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Aves Libre [Profile]</string>
</resources>

View file

@ -1,2 +1,2 @@
<dream xmlns:android="http://schemas.android.com/apk/res/android" <dream xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="deckers.thibault.aves/deckers.thibault.aves.ScreenSaverSettingsActivity" /> android:settingsActivity="@string/screen_saver_settings_activity" />

View file

@ -1,2 +0,0 @@
<dream xmlns:android="http://schemas.android.com/apk/res/android"
android:settingsActivity="deckers.thibault.aves.profile/deckers.thibault.aves.ScreenSaverSettingsActivity" />

View file

@ -1,6 +1,6 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
ext.kotlin_version = '1.7.10' ext.kotlin_version = '1.7.20'
repositories { repositories {
google() google()
mavenCentral() mavenCentral()

View file

@ -1,4 +1,4 @@
enum AppFlavor { play, huawei, izzy } enum AppFlavor { play, huawei, izzy, libre }
extension ExtraAppFlavor on AppFlavor { extension ExtraAppFlavor on AppFlavor {
bool get canEnableErrorReporting { bool get canEnableErrorReporting {
@ -7,6 +7,7 @@ extension ExtraAppFlavor on AppFlavor {
return true; return true;
case AppFlavor.huawei: case AppFlavor.huawei:
case AppFlavor.izzy: case AppFlavor.izzy:
case AppFlavor.libre:
return false; return false;
} }
} }

11
lib/main_libre.dart Normal file
View file

@ -0,0 +1,11 @@
import 'package:aves/app_flavor.dart';
import 'package:aves/main_common.dart';
import 'package:aves/widget_common.dart';
const _flavor = AppFlavor.libre;
@pragma('vm:entry-point')
void main() => mainCommon(_flavor);
@pragma('vm:entry-point')
void widgetMain() => widgetMainCommon(_flavor);

View file

@ -223,6 +223,8 @@ class Constants {
..._googleMobileServices, ..._googleMobileServices,
]; ];
static const List<Dependency> _flutterPluginsLibreOnly = [];
static const List<Dependency> _flutterPluginsPlayOnly = [ static const List<Dependency> _flutterPluginsPlayOnly = [
..._googleMobileServices, ..._googleMobileServices,
Dependency( Dependency(
@ -236,6 +238,7 @@ class Constants {
..._flutterPluginsCommon, ..._flutterPluginsCommon,
if (flavor == AppFlavor.huawei) ..._flutterPluginsHuaweiOnly, if (flavor == AppFlavor.huawei) ..._flutterPluginsHuaweiOnly,
if (flavor == AppFlavor.izzy) ..._flutterPluginsIzzyOnly, if (flavor == AppFlavor.izzy) ..._flutterPluginsIzzyOnly,
if (flavor == AppFlavor.libre) ..._flutterPluginsLibreOnly,
if (flavor == AppFlavor.play) ..._flutterPluginsPlayOnly, if (flavor == AppFlavor.play) ..._flutterPluginsPlayOnly,
]; ];

View file

@ -145,9 +145,13 @@ class _BugReportState extends State<BugReport> with FeedbackMixin {
final androidInfo = await DeviceInfoPlugin().androidInfo; final androidInfo = await DeviceInfoPlugin().androidInfo;
final flavor = context.read<AppFlavor>().toString().split('.')[1]; final flavor = context.read<AppFlavor>().toString().split('.')[1];
return [ return [
'Aves version: ${packageInfo.version}-$flavor (Build ${packageInfo.buildNumber})', 'Package: ${packageInfo.packageName}',
'Flutter version: ${version['frameworkVersion']} (Channel ${version['channel']})', 'Aves version: ${packageInfo.version}-$flavor',
'Android version: ${androidInfo.version.release} (SDK ${androidInfo.version.sdkInt})', 'Aves build: ${packageInfo.buildNumber}',
'Flutter version: ${version['frameworkVersion']}',
'Flutter channel: ${version['channel']}',
'Android version: ${androidInfo.version.release}',
'Android API: ${androidInfo.version.sdkInt}',
'Android build: ${androidInfo.display}', 'Android build: ${androidInfo.display}',
'Device: ${androidInfo.manufacturer} ${androidInfo.model}', 'Device: ${androidInfo.manufacturer} ${androidInfo.model}',
'Geocoder: ${device.hasGeocoder ? 'ready' : 'not available'}', 'Geocoder: ${device.hasGeocoder ? 'ready' : 'not available'}',

30
plugins/aves_services_none/.gitignore vendored Normal file
View file

@ -0,0 +1,30 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
/pubspec.lock
**/doc/api/
.dart_tool/
.packages
build/

View file

@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: 52b3dc25f6471c27b2144594abb11c741cb88f57
channel: stable
project_type: package

View file

@ -0,0 +1 @@
include: ../../analysis_options.yaml

View file

@ -0,0 +1,41 @@
library aves_services_platform;
import 'package:aves_map/aves_map.dart';
import 'package:aves_services/aves_services.dart';
import 'package:flutter/widgets.dart';
import 'package:latlong2/latlong.dart';
class PlatformMobileServices extends MobileServices {
@override
Future<void> init() async {}
@override
bool get isServiceAvailable => false;
@override
EntryMapStyle get defaultMapStyle => EntryMapStyle.values.first;
@override
List<EntryMapStyle> get mapStyles => [];
@override
Widget buildMap<T>({
required AvesMapController? controller,
required Listenable clusterListenable,
required ValueNotifier<ZoomedBounds> boundsNotifier,
required EntryMapStyle style,
required TransitionBuilder decoratorBuilder,
required ButtonPanelBuilder buttonPanelBuilder,
required MarkerClusterBuilder<T> markerClusterBuilder,
required MarkerWidgetBuilder<T> markerWidgetBuilder,
required MarkerImageReadyChecker<T> markerImageReadyChecker,
required ValueNotifier<LatLng?>? dotLocationNotifier,
required ValueNotifier<double>? overlayOpacityNotifier,
required MapOverlay? overlayEntry,
required UserZoomChangeCallback? onUserZoomChange,
required MapTapCallback? onMapTap,
required MarkerTapCallback<T>? onMarkerTap,
}) {
return const SizedBox();
}
}

View file

@ -0,0 +1,20 @@
name: aves_services_platform
version: 0.0.1
publish_to: none
environment:
sdk: ">=2.18.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
aves_map:
path: ../aves_map
aves_services:
path: ../aves_services
latlong2:
dev_dependencies:
flutter_lints:
flutter:

View file

@ -8,13 +8,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "47.0.0" version: "47.0.0"
_flutterfire_internals:
dependency: transitive
description:
name: _flutterfire_internals
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.8"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
@ -46,7 +39,7 @@ packages:
aves_magnifier: aves_magnifier:
dependency: "direct main" dependency: "direct main"
description: description:
path: "packages/aves_magnifier" path: "plugins/aves_magnifier"
relative: true relative: true
source: path source: path
version: "0.0.1" version: "0.0.1"
@ -67,7 +60,7 @@ packages:
aves_report_platform: aves_report_platform:
dependency: "direct main" dependency: "direct main"
description: description:
path: "plugins/aves_report_crashlytics" path: "plugins/aves_report_console"
relative: true relative: true
source: path source: path
version: "0.0.1" version: "0.0.1"
@ -81,7 +74,7 @@ packages:
aves_services_platform: aves_services_platform:
dependency: "direct main" dependency: "direct main"
description: description:
path: "plugins/aves_services_google" path: "plugins/aves_services_none"
relative: true relative: true
source: path source: path
version: "0.0.1" version: "0.0.1"
@ -127,20 +120,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.1" version: "1.1.1"
cloud_firestore_platform_interface:
dependency: transitive
description:
name: cloud_firestore_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "5.8.5"
cloud_firestore_web:
dependency: transitive
description:
name: cloud_firestore_web
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
collection: collection:
dependency: "direct main" dependency: "direct main"
description: description:
@ -285,41 +264,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.1.2" version: "6.1.2"
firebase_core:
dependency: transitive
description:
name: firebase_core
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
firebase_core_platform_interface:
dependency: transitive
description:
name: firebase_core_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "4.5.2"
firebase_core_web:
dependency: transitive
description:
name: firebase_core_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
firebase_crashlytics:
dependency: transitive
description:
name: firebase_crashlytics
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.5"
firebase_crashlytics_platform_interface:
dependency: transitive
description:
name: firebase_crashlytics_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.6"
flex_color_picker: flex_color_picker:
dependency: "direct main" dependency: "direct main"
description: description:
@ -398,13 +342,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.13" version: "0.6.13"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
flutter_staggered_animations: flutter_staggered_animations:
dependency: "direct main" dependency: "direct main"
description: description:
@ -448,41 +385,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
google_api_availability:
dependency: transitive
description:
name: google_api_availability
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
google_maps_flutter:
dependency: transitive
description:
name: google_maps_flutter
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
google_maps_flutter_android:
dependency: transitive
description:
name: google_maps_flutter_android
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.3"
google_maps_flutter_ios:
dependency: transitive
description:
name: google_maps_flutter_ios
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.12"
google_maps_flutter_platform_interface:
dependency: transitive
description:
name: google_maps_flutter_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.4"
highlight: highlight:
dependency: transitive dependency: transitive
description: description:
@ -652,7 +554,7 @@ packages:
name: overlay_support name: overlay_support
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.1.0"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:
@ -666,7 +568,7 @@ packages:
name: package_info_plus name: package_info_plus
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.1" version: "3.0.2"
package_info_plus_platform_interface: package_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
@ -850,7 +752,7 @@ packages:
name: pub_semver name: pub_semver
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.2" version: "2.1.3"
qr: qr:
dependency: transitive dependency: transitive
description: description:
@ -1045,13 +947,6 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
stream_transform:
dependency: transitive
description:
name: stream_transform
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
streams_channel: streams_channel:
dependency: "direct main" dependency: "direct main"
description: description:

View file

@ -22,17 +22,17 @@ dependencies:
flutter_localizations: flutter_localizations:
sdk: flutter sdk: flutter
aves_magnifier: aves_magnifier:
path: packages/aves_magnifier path: plugins/aves_magnifier
aves_map: aves_map:
path: plugins/aves_map path: plugins/aves_map
aves_report: aves_report:
path: plugins/aves_report path: plugins/aves_report
aves_report_platform: aves_report_platform:
path: plugins/aves_report_crashlytics path: plugins/aves_report_console
aves_services: aves_services:
path: plugins/aves_services path: plugins/aves_services
aves_services_platform: aves_services_platform:
path: plugins/aves_services_google path: plugins/aves_services_none
charts_flutter: charts_flutter:
collection: collection:
connectivity_plus: connectivity_plus:

View file

@ -7,7 +7,7 @@ PUBSPEC_PATH="pubspec.yaml"
flutter clean flutter clean
sed -i 's/aves_services_google/aves_services_huawei/g' "$PUBSPEC_PATH" sed -i 's|plugins/aves_services_.*|plugins/aves_services_huawei|g' "$PUBSPEC_PATH"
sed -i 's/aves_report_crashlytics/aves_report_console/g' "$PUBSPEC_PATH" sed -i 's|plugins/aves_report_.*|plugins/aves_report_console|g' "$PUBSPEC_PATH"
flutter pub get flutter pub get

View file

@ -7,7 +7,7 @@ PUBSPEC_PATH="pubspec.yaml"
flutter clean flutter clean
sed -i 's/aves_services_huawei/aves_services_google/g' "$PUBSPEC_PATH" sed -i 's|plugins/aves_services_.*|plugins/aves_services_google|g' "$PUBSPEC_PATH"
sed -i 's/aves_report_crashlytics/aves_report_console/g' "$PUBSPEC_PATH" sed -i 's|plugins/aves_report_.*|plugins/aves_report_console|g' "$PUBSPEC_PATH"
flutter pub get flutter pub get

13
scripts/apply_flavor_libre.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/bash
if [ ! -d "scripts" ]; then
cd ..
fi
PUBSPEC_PATH="pubspec.yaml"
flutter clean
sed -i 's|plugins/aves_services_.*|plugins/aves_services_none|g' "$PUBSPEC_PATH"
sed -i 's|plugins/aves_report_.*|plugins/aves_report_console|g' "$PUBSPEC_PATH"
flutter pub get

View file

@ -7,7 +7,7 @@ PUBSPEC_PATH="pubspec.yaml"
flutter clean flutter clean
sed -i 's/aves_services_huawei/aves_services_google/g' "$PUBSPEC_PATH" sed -i 's|plugins/aves_services_.*|plugins/aves_services_google|g' "$PUBSPEC_PATH"
sed -i 's/aves_report_console/aves_report_crashlytics/g' "$PUBSPEC_PATH" sed -i 's|plugins/aves_report_.*|plugins/aves_report_crashlytics|g' "$PUBSPEC_PATH"
flutter pub get flutter pub get

View file

@ -5,14 +5,6 @@ fi
flutter pub get flutter pub get
cd packages || exit
for package in $(ls -d *); do
cd $package
flutter pub get
cd ..
done
cd ..
cd plugins || exit cd plugins || exit
for plugin in $(ls -d *); do for plugin in $(ls -d *); do
cd $plugin cd $plugin

View file

@ -5,14 +5,6 @@ fi
flutter pub upgrade flutter pub upgrade
cd packages || exit
for package in $(ls -d *); do
cd $package
flutter pub upgrade
cd ..
done
cd ..
cd plugins || exit cd plugins || exit
for plugin in $(ls -d *); do for plugin in $(ls -d *); do
cd $plugin cd $plugin