Commit 8e770716 by Maurits van Beusekom

Updated build script

parent e0ec8026
os:
- linux
sudo: false
addons:
matrix:
include:
# Job 1) Run analyzer
- os: linux
sudo: false
addons:
apt:
# Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
sources:
- ubuntu-toolchain-r-test
- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
packages:
- libstdc++6
- fonts-droid
before_script:
- git clone https://github.com/flutter/flutter.git -b master --depth 1
- ./flutter/bin/flutter doctor
script:
- ./flutter/bin/flutter test --coverage --coverage-path=lcov.info
after_success:
# Still have to setup account at codecov.io
#- bash <(curl -s https://codecov.io/bash)
before_script:
- git clone https://github.com/flutter/flutter.git
- export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
- flutter doctor
script:
- flutter analyze
# Job 2) Check format and run tests
- os: linux
jdk: oraclejdk8
sudo: false
addons:
apt:
# Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
sources:
- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
- llvm-toolchain-precise # for clang-format-5.0
packages:
- libstdc++6
- fonts-droid
- clang-format-5.0
before_script:
- git clone https://github.com/flutter/flutter.git
- export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
- flutter doctor
script:
- ./scripts/format_code.sh
# Job 3) Build example APKs and run Java tests
- os: linux
jdk: oraclejdk8
sudo: false
addons:
apt:
# Flutter depends on /usr/lib/x86_64-linux-gnu/libstdc++.so.6 version GLIBCXX_3.4.18
sources:
- ubuntu-toolchain-r-test # if we don't specify this, the libstdc++6 we get is the wrong version
packages:
- lib32stdc++6 # https://github.com/flutter/flutter/issues/6207
- libstdc++6
- fonts-droid
before_script:
- ./script/before_build_apks.sh
- export ANDROID_HOME=`pwd`/android-sdk
- export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
script:
- ./scripts/build.sh apk
# Job 4) Build example IPAs
- os: osx
language: generic
osx_image: xcode9.3
before_script:
- ./script/before_build_ipas.sh
- export PATH=`pwd`/flutter/bin:`pwd`/flutter/bin/cache/dart-sdk/bin:$PATH
script:
- ./scripts/build.sh ipa
cache:
directories:
- $HOME/.pub-cache
\ No newline at end of file
......@@ -226,7 +226,7 @@
);
inputPaths = (
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
"${PODS_ROOT}/../.symlinks/flutter/ios-release/Flutter.framework",
"${BUILT_PRODUCTS_DIR}/permission_handler/permission_handler.framework",
);
name = "[CP] Embed Pods Frameworks";
......
......@@ -27,14 +27,17 @@ class _MyAppState extends State<MyApp> {
// Platform messages may fail, so we use a try/catch PlatformException.
try {
permissionStatus = await PermissionHandler.checkPermissionStatus(PermissionGroup.calendar);
permissionStatus = await PermissionHandler
.checkPermissionStatus(PermissionGroup.calendar);
if(permissionStatus != PermissionStatus.granted){
final shouldShowRationale = await PermissionHandler.shouldShowRequestPermissionRationale(PermissionGroup.calendar);
if (permissionStatus != PermissionStatus.granted) {
final shouldShowRationale = await PermissionHandler
.shouldShowRequestPermissionRationale(PermissionGroup.calendar);
if(shouldShowRationale) {
var permissions = await PermissionHandler.requestPermissions([PermissionGroup.calendar]);
if(permissions.containsKey(PermissionGroup.calendar)) {
if (shouldShowRationale) {
var permissions = await PermissionHandler
.requestPermissions([PermissionGroup.calendar]);
if (permissions.containsKey(PermissionGroup.calendar)) {
permissionStatus = permissions[PermissionGroup.calendar];
}
}
......@@ -66,7 +69,8 @@ class _MyAppState extends State<MyApp> {
new Text('Running on: $_permissionStatus\n'),
new RaisedButton(
child: new Text("Open settings"),
onPressed: () async => await PermissionHandler.openAppSettings(),
onPressed: () async =>
await PermissionHandler.openAppSettings(),
),
],
),
......
#import <Flutter/Flutter.h>
@interface PermissionHandlerPlugin : NSObject<FlutterPlugin>
@interface PermissionHandlerPlugin : NSObject <FlutterPlugin>
@end
/// Defines the state of a permission group
enum PermissionStatus
{
enum PermissionStatus {
/// Permission to access the requested feature is denied by the user.
denied,
/// The feature is disabled (or not available) on the device.
disabled,
/// Permission to access the requested feature is granted by the user.
granted,
/// The user granted restricted access to the requested feature (only on iOS).
restricted,
/// Permission is in an unknown state
unknown
}
/// Defines the permission groups for which permissions can be checked or requested.
enum PermissionGroup
{
enum PermissionGroup {
/// The unknown permission only used for return type, never requested
unknown,
/// Android: Calendar
/// iOS: Calendar (Events)
calendar,
/// Android: Camera
/// iOS: Photos (Camera Roll and Camera)
camera,
/// Android: Contacts
/// iOS: AddressBook
contacts,
/// Android: Fine and Coarse Location
/// iOS: CoreLocation (Always and WhenInUse)
location,
/// Android: Microphone
/// iOS: Microphone
microphone,
/// Android: Phone
/// iOS: Nothing
phone,
/// Android: Nothing
/// iOS: Photos
photos,
/// Android: Nothing
/// iOS: Reminders
reminders,
/// Android: Body Sensors
/// iOS: CoreMotion
sensors,
/// Android: Sms
/// iOS: Nothing
sms,
/// Android: External Storage
/// iOS: Nothing
storage,
/// Android: Microphone
/// iOS: Speech
speech,
/// Android: Fine and Coarse Location
/// iOS: CoreLocation - Always
locationAlways,
/// Android: Fine and Coarse Location
/// iOS: CoreLocation - WhenInUse
locationWhenInUse,
/// Android: None
/// iOS: MPMediaLibrary
mediaLibrary
......
......@@ -10,10 +10,10 @@ class PermissionHandler {
const MethodChannel('flutter.baseflow.com/permissions/methods');
/// Returns a [Future] containing the current permission status for the supplied [PermissionGroup].
static Future<PermissionStatus> checkPermissionStatus(PermissionGroup permission) async {
static Future<PermissionStatus> checkPermissionStatus(
PermissionGroup permission) async {
final status = await _channel.invokeMethod(
'checkPermissionStatus',
Codec.encodePermissionGroup(permission));
'checkPermissionStatus', Codec.encodePermissionGroup(permission));
return Codec.decodePermissionStatus(status);
}
......@@ -27,11 +27,10 @@ class PermissionHandler {
/// Request the user for access to the supplied list of permissiongroups.
///
/// Returns a [Map] containing the status per requested permissiongroup.
static Future<Map<PermissionGroup, PermissionStatus>> requestPermissions(List<PermissionGroup> permissions) async {
static Future<Map<PermissionGroup, PermissionStatus>> requestPermissions(
List<PermissionGroup> permissions) async {
final jsonData = Codec.encodePermissionGroups(permissions);
final status = await _channel.invokeMethod(
'requestPermissions',
jsonData);
final status = await _channel.invokeMethod('requestPermissions', jsonData);
return Codec.decodePermissionRequestResult(status);
}
......@@ -40,9 +39,8 @@ class PermissionHandler {
///
/// This method is only implemented on Android, calling this on iOS always
/// returns [false].
static Future<bool> shouldShowRequestPermissionRationale(PermissionGroup permission) async =>
await _channel.invokeMethod(
'shouldShowRequestPermissionRationale',
static Future<bool> shouldShowRequestPermissionRationale(
PermissionGroup permission) async =>
await _channel.invokeMethod('shouldShowRequestPermissionRationale',
Codec.encodePermissionGroup(permission));
}
......@@ -6,16 +6,20 @@ class Codec {
static PermissionStatus decodePermissionStatus(dynamic value) {
final permission = json.decode(value);
return PermissionStatus.values.firstWhere((e) => e.toString().split('.').last == permission);
return PermissionStatus.values
.firstWhere((e) => e.toString().split('.').last == permission);
}
static Map<PermissionGroup, PermissionStatus> decodePermissionRequestResult(dynamic value) {
static Map<PermissionGroup, PermissionStatus> decodePermissionRequestResult(
dynamic value) {
final jsonObject = json.decode(value);
final permissionResults = Map<PermissionGroup, PermissionStatus>();
jsonObject.forEach((key, value) {
final permissionGroup = PermissionGroup.values.firstWhere((e) => e.toString().split('.').last == key.toString());
final permissionStatus = PermissionStatus.values.firstWhere((e) => e.toString().split('.').last == value.toString());
final permissionGroup = PermissionGroup.values
.firstWhere((e) => e.toString().split('.').last == key.toString());
final permissionStatus = PermissionStatus.values
.firstWhere((e) => e.toString().split('.').last == value.toString());
permissionResults[permissionGroup] = permissionStatus;
});
......
#!/bin/bash
set -e
cd ../example
if [[ $1 == 'apk' ]]; then
flutter build apk
elif [[ $1 == 'ios' ]]; then
flutter build ios --no-codesign
else
echo "Neither 'apk' or 'ios' were specified, so not building"
fi
#!/bin/bash
set -e
cd ..
# Format Dart code
printf 'Formatting Dart code\n'
flutter format .
printf '\n'
# Format Objective-C code
printf 'Formatting Objective-C code\n'
find . \( -name '*.h' -o -name '*.m' \) -exec clang-format -i -style=Google '{}' \;
printf '\n'
# Format Java code
printf 'Formatting JAVA code\n'
find . \( -name '*.java' \) -exec java -jar ./scripts/utils/google-java-format-1.3-all-deps.jar --replace '{}' \;
printf '\n'
modified_files=$(git ls-files --modified)
if [[ $modified_files ]]; then
printf 'These files are not formatted correctly:\n'
printf '\n'
echo $modified_files | tr ' ' '\n'
exit 1
else
printf "All files are formatted correctly"
exit 0
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment