From 398ed2a89a256fe782acf13e69ff3a9973c95d95 Mon Sep 17 00:00:00 2001 From: Fiona <408232927@qq.com> Date: Mon, 15 Apr 2019 10:18:00 +0800 Subject: [PATCH 1/6] Update README-en.md --- README-en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-en.md b/README-en.md index 8d12ec7a..e6a91cfe 100644 --- a/README-en.md +++ b/README-en.md @@ -9,7 +9,7 @@ Android download URL: - + Iphone download URL: No From f55539cab34541d3f17ae428ca06d9c48bd5d40c Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 15 Apr 2019 17:48:06 +0800 Subject: [PATCH 2/6] =?UTF-8?q?Add:=20=E5=A2=9E=E5=8A=A0firebase=20?= =?UTF-8?q?=E7=9A=84=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 14 +++++++ android/app/google-services.json | 42 +++++++++++++++++++ android/build.gradle | 14 +++++++ .../gradle/wrapper/gradle-wrapper.properties | 2 +- ios/Runner.xcodeproj/project.pbxproj | 24 +++++------ ios/Runner/AppDelegate.m | 5 +++ ios/Runner/GoogleService-Info.plist | 40 ++++++++++++++++++ lib/main.dart | 2 + lib/routers/routers.dart | 4 ++ lib/utils/analytics.dart | 7 ++++ lib/utils/login.dart | 26 ++++++++++++ pubspec.yaml | 3 ++ 12 files changed, 170 insertions(+), 13 deletions(-) create mode 100644 android/app/google-services.json create mode 100644 ios/Runner/GoogleService-Info.plist create mode 100644 lib/utils/analytics.dart create mode 100644 lib/utils/login.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index d3038cdf..b548dd94 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -58,4 +58,18 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + //firebase + implementation 'com.google.firebase:firebase-core:16.0.8' + //Crashlytics SDK + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' + // 性能监控 + ///implementation 'com.google.firebase:firebase-perf:16.2.3' + // 登陆 + ////implementation 'com.google.firebase:firebase-auth:16.0.3' } +//firebase +apply plugin: 'com.google.gms.google-services' +//Crashlytics SDK +apply plugin: 'io.fabric' +// 性能监控 +///apply plugin: 'com.google.firebase.firebase-perf' \ No newline at end of file diff --git a/android/app/google-services.json b/android/app/google-services.json new file mode 100644 index 00000000..22b356f0 --- /dev/null +++ b/android/app/google-services.json @@ -0,0 +1,42 @@ +{ + "project_info": { + "project_number": "958876143057", + "firebase_url": "https://flutter-go-421b4.firebaseio.com", + "project_id": "flutter-go-421b4", + "storage_bucket": "flutter-go-421b4.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:958876143057:android:00e8533fa0274183", + "android_client_info": { + "package_name": "com.ali.fluttergo" + } + }, + "oauth_client": [ + { + "client_id": "958876143057-maa2o9gk35r67d3dbn1gjilpg4ukac71.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAfYEa2NfytIA-Rdc_K4F-iufgXQ6Lz5ZI" + } + ], + "services": { + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index e81b1a1d..8cb8f7fe 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,10 +2,20 @@ buildscript { repositories { google() jcenter() + //Crashlytics SDK + maven { + url 'https://maven.fabric.io/public' + } } dependencies { classpath 'com.android.tools.build:gradle:3.2.0' + //firebase + classpath 'com.google.gms:google-services:4.2.0' + //Crashlytics SDK + classpath 'io.fabric.tools:gradle:1.26.1' + // 性能监控 + ///classpath 'com.google.firebase:firebase-plugins:1.1.5' } } @@ -13,6 +23,10 @@ allprojects { repositories { google() jcenter() + //Crashlytics SDK + maven { + url 'https://maven.google.com/' + } } } diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 03824124..c2bcac0e 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 8c3f0e89..f458f3aa 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -29,6 +29,7 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 94722E5C22511D3600F63900 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 94722E5B22511D3600F63900 /* GoogleService-Info.plist */; }; 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; @@ -78,6 +79,7 @@ 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 94722E5B22511D3600F63900 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "../../../../../../../Downloads/GoogleService-Info.plist"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; @@ -87,6 +89,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A9941E6EA19A9CEF6B117A70 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + CBA6E34746642008D95A119D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; DDA792F029EDD7A11295D192 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -129,6 +133,8 @@ 0C172CA58CDB230D5DA80034 /* Pods */ = { isa = PBXGroup; children = ( + CBA6E34746642008D95A119D /* Pods-Runner.debug.xcconfig */, + A9941E6EA19A9CEF6B117A70 /* Pods-Runner.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -178,6 +184,7 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + 94722E5B22511D3600F63900 /* GoogleService-Info.plist */, 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 97C146FA1CF9000F007C117D /* Main.storyboard */, @@ -282,6 +289,7 @@ 0828E49B220692B500A59437 /* iPad Landscape@2x.png in Resources */, 0828E495220692B500A59437 /* iPhone Portrait-Retina 4.png in Resources */, 0828E498220692B500A59437 /* iPhone XS Max Portrait.png in Resources */, + 94722E5C22511D3600F63900 /* GoogleService-Info.plist in Resources */, 0828E496220692B500A59437 /* iPad Portrait.png in Resources */, 0828E49C220692B500A59437 /* iPhone Landscape-Retina HD 5.5.png in Resources */, ); @@ -309,15 +317,11 @@ buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( "${PODS_PODFILE_DIR_PATH}/Podfile.lock", "${PODS_ROOT}/Manifest.lock", ); name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); outputPaths = ( "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); @@ -345,21 +349,17 @@ buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh", "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework", ); name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - ); outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -522,7 +522,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook; + PRODUCT_BUNDLE_IDENTIFIER = com.ali.fluttergo; PRODUCT_NAME = "$(TARGET_NAME)"; VERSIONING_SYSTEM = "apple-generic"; }; @@ -547,7 +547,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = com.ali.flutterRookieBook; + PRODUCT_BUNDLE_IDENTIFIER = com.ali.fluttergo; PRODUCT_NAME = "$(TARGET_NAME)"; VERSIONING_SYSTEM = "apple-generic"; }; diff --git a/ios/Runner/AppDelegate.m b/ios/Runner/AppDelegate.m index 7feb3d13..7474c39b 100644 --- a/ios/Runner/AppDelegate.m +++ b/ios/Runner/AppDelegate.m @@ -1,10 +1,15 @@ #include "AppDelegate.h" #include "GeneratedPluginRegistrant.h" +@import Firebase;//增加 firebase 支持 + @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + + [FIRApp configure];//增加 firebase 支持 + [GeneratedPluginRegistrant registerWithRegistry:self]; // Override point for customization after application launch. [NSThread sleepForTimeInterval:2]; diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist new file mode 100644 index 00000000..2c32fe6f --- /dev/null +++ b/ios/Runner/GoogleService-Info.plist @@ -0,0 +1,40 @@ + + + + + AD_UNIT_ID_FOR_BANNER_TEST + ca-app-pub-3940256099942544/2934735716 + AD_UNIT_ID_FOR_INTERSTITIAL_TEST + ca-app-pub-3940256099942544/4411468910 + CLIENT_ID + 958876143057-v6bp8g0p6dflvlk38qmbngt5pmon8sfs.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.958876143057-v6bp8g0p6dflvlk38qmbngt5pmon8sfs + API_KEY + AIzaSyDbNj43LaECfyAEebrEkAN_ZcvmmOitwTY + GCM_SENDER_ID + 958876143057 + PLIST_VERSION + 1 + BUNDLE_ID + com.ali.fluttergo + PROJECT_ID + flutter-go-421b4 + STORAGE_BUCKET + flutter-go-421b4.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:958876143057:ios:00e8533fa0274183 + DATABASE_URL + https://flutter-go-421b4.firebaseio.com + + \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 8d268d7b..f83e2133 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -8,6 +8,7 @@ import 'package:flutter_go/utils/provider.dart'; import 'package:flutter_go/utils/shared_preferences.dart'; import 'package:flutter_go/views/first_page/home.dart'; import 'package:flutter_go/model/search_history.dart'; +import 'package:flutter_go/utils/analytics.dart' as Analytics; //import 'views/welcome_page/index.dart'; const int ThemeColor = 0xFFC91B3A; @@ -53,6 +54,7 @@ class MyApp extends StatelessWidget { body: showWelcomePage() ), onGenerateRoute: Application.router.generator, + navigatorObservers: [Analytics.observer], ); } } diff --git a/lib/routers/routers.dart b/lib/routers/routers.dart index 4e589b61..7715b2bf 100644 --- a/lib/routers/routers.dart +++ b/lib/routers/routers.dart @@ -1,6 +1,7 @@ import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_go/utils/analytics.dart' show analytics; import '../widgets/index.dart'; import './router_handler.dart'; @@ -26,6 +27,9 @@ class Routes { widgetDemosList.forEach((demo) { Handler handler = new Handler( handlerFunc: (BuildContext context, Map> params) { + print('组件路由params=$params widgetsItem=${demo.routerName}'); + analytics.logEvent( + name: 'component', parameters: {'name': demo.routerName }); return demo.buildRouter(context); }); router.define('${demo.routerName}', handler: handler); diff --git a/lib/utils/analytics.dart b/lib/utils/analytics.dart new file mode 100644 index 00000000..2a7fcf6f --- /dev/null +++ b/lib/utils/analytics.dart @@ -0,0 +1,7 @@ +import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:firebase_analytics/observer.dart'; + +//统计 +FirebaseAnalytics analytics = FirebaseAnalytics(); +FirebaseAnalyticsObserver observer = + FirebaseAnalyticsObserver(analytics: analytics); diff --git a/lib/utils/login.dart b/lib/utils/login.dart new file mode 100644 index 00000000..d21b94bb --- /dev/null +++ b/lib/utils/login.dart @@ -0,0 +1,26 @@ +import 'package:firebase_auth/firebase_auth.dart'; +final GoogleSignIn _googleSignIn = GoogleSignIn(); +final FirebaseAuth _auth = FirebaseAuth.instance; + +Future _handleSignIn() async { + final GoogleSignInAccount googleUser = await _googleSignIn.signIn(); + final GoogleSignInAuthentication googleAuth = await googleUser.authentication; + + final AuthCredential credential = GoogleAuthProvider.getCredential( + accessToken: googleAuth.accessToken, + idToken: googleAuth.idToken, + ); + + final FirebaseUser user = await _auth.signInWithCredential(credential); + print("signed in " + user.displayName); + return user; +} + +_handleSignIn() + .then((FirebaseUser user) => print(user)) + .catchError((e) => print(e)); + +final FirebaseUser user = await _auth.createUserWithEmailAndPassword( + email: 'an email', + password: 'a password', +); \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index 3a43950c..a99e40bc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,6 +32,9 @@ dependencies: # 日期格式化 intl: 0.15.7 city_pickers: ^0.1.0 + firebase_analytics: ^2.0.2+1 + firebase_auth: ^0.8.3 #auth + firebase_core: ^0.3.0 # add dependency for Firebase Core dev_dependencies: flutter_test: From 9f268fc3e2b349373320ed8389f67fcbfd08f208 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 15 Apr 2019 23:30:32 +0800 Subject: [PATCH 3/6] =?UTF-8?q?Add:=20=E5=A2=9E=E5=8A=A0firebase=20?= =?UTF-8?q?=E7=9A=84=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/google-services.json | 35 ++++++++++++++++------------- ios/Runner/GoogleService-Info.plist | 24 +++++++++----------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/android/app/google-services.json b/android/app/google-services.json index 22b356f0..db0fccf8 100644 --- a/android/app/google-services.json +++ b/android/app/google-services.json @@ -1,39 +1,44 @@ { "project_info": { - "project_number": "958876143057", - "firebase_url": "https://flutter-go-421b4.firebaseio.com", - "project_id": "flutter-go-421b4", - "storage_bucket": "flutter-go-421b4.appspot.com" + "project_number": "1002138254102", + "firebase_url": "https://ali-flutter-go.firebaseio.com", + "project_id": "ali-flutter-go", + "storage_bucket": "ali-flutter-go.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:958876143057:android:00e8533fa0274183", + "mobilesdk_app_id": "1:1002138254102:android:00e8533fa0274183", "android_client_info": { "package_name": "com.ali.fluttergo" } }, "oauth_client": [ { - "client_id": "958876143057-maa2o9gk35r67d3dbn1gjilpg4ukac71.apps.googleusercontent.com", + "client_id": "1002138254102-2r4hs0mm1avp4p1qielecihnbugan693.apps.googleusercontent.com", "client_type": 3 } ], "api_key": [ { - "current_key": "AIzaSyAfYEa2NfytIA-Rdc_K4F-iufgXQ6Lz5ZI" + "current_key": "AIzaSyDFdL3GSwVDfejIq44pyOpiEBZ32dTGMVA" } ], "services": { - "analytics_service": { - "status": 1 - }, "appinvite_service": { - "status": 1, - "other_platform_oauth_client": [] - }, - "ads_service": { - "status": 2 + "other_platform_oauth_client": [ + { + "client_id": "1002138254102-2r4hs0mm1avp4p1qielecihnbugan693.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "1002138254102-qo9jp8c3lc69p9lclu0rtp5dmt1kulv7.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.ali.fluttergo" + } + } + ] } } } diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist index 2c32fe6f..26e23345 100644 --- a/ios/Runner/GoogleService-Info.plist +++ b/ios/Runner/GoogleService-Info.plist @@ -2,39 +2,35 @@ - AD_UNIT_ID_FOR_BANNER_TEST - ca-app-pub-3940256099942544/2934735716 - AD_UNIT_ID_FOR_INTERSTITIAL_TEST - ca-app-pub-3940256099942544/4411468910 CLIENT_ID - 958876143057-v6bp8g0p6dflvlk38qmbngt5pmon8sfs.apps.googleusercontent.com + 1002138254102-qo9jp8c3lc69p9lclu0rtp5dmt1kulv7.apps.googleusercontent.com REVERSED_CLIENT_ID - com.googleusercontent.apps.958876143057-v6bp8g0p6dflvlk38qmbngt5pmon8sfs + com.googleusercontent.apps.1002138254102-qo9jp8c3lc69p9lclu0rtp5dmt1kulv7 API_KEY - AIzaSyDbNj43LaECfyAEebrEkAN_ZcvmmOitwTY + AIzaSyD01jR14RevQibnzkg4tBUbFzc7UjKESFQ GCM_SENDER_ID - 958876143057 + 1002138254102 PLIST_VERSION 1 BUNDLE_ID com.ali.fluttergo PROJECT_ID - flutter-go-421b4 + ali-flutter-go STORAGE_BUCKET - flutter-go-421b4.appspot.com + ali-flutter-go.appspot.com IS_ADS_ENABLED - + IS_ANALYTICS_ENABLED IS_APPINVITE_ENABLED - + IS_GCM_ENABLED IS_SIGNIN_ENABLED GOOGLE_APP_ID - 1:958876143057:ios:00e8533fa0274183 + 1:1002138254102:ios:00e8533fa0274183 DATABASE_URL - https://flutter-go-421b4.firebaseio.com + https://ali-flutter-go.firebaseio.com \ No newline at end of file From 4c72f685031769221c83b76240552fe76482b063 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 22 Apr 2019 15:26:20 +0800 Subject: [PATCH 4/6] =?UTF-8?q?Delete:=E5=88=A0=E9=99=A4=20.gradle=20?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=A4=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gradle/3.5.1/file-changes/last-build.bin | Bin 1 -> 0 bytes .gradle/3.5.1/taskHistory/taskHistory.lock | Bin 17 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .gradle/3.5.1/file-changes/last-build.bin delete mode 100644 .gradle/3.5.1/taskHistory/taskHistory.lock diff --git a/.gradle/3.5.1/file-changes/last-build.bin b/.gradle/3.5.1/file-changes/last-build.bin deleted file mode 100644 index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1 IcmZPo000310RR91 diff --git a/.gradle/3.5.1/taskHistory/taskHistory.lock b/.gradle/3.5.1/taskHistory/taskHistory.lock deleted file mode 100644 index 1a1ada5203be8e7b6e776c64bbe342499620c2d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 TcmZQ}US2Noawhu}1}FdkEbs%G From 220f417739925a84707c51424cf3404898237e45 Mon Sep 17 00:00:00 2001 From: ryan730 Date: Mon, 22 Apr 2019 16:11:00 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 格式化 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 912b809a..6ec8fa68 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ flutter优点主要包括: #### Flutter Go 的优势 -- 详解常用widget多达 **140+** 个 +- 详解常用 widget 多达 **140+** 个 - 配套 Demo 详解 widget 常规用法 - 集中整合 widget 案例,一个 APP 搞定所有常用 widget 的用法 - 持续迭代 ‘追新’ 官方版本 From cad20632d9b4b46a39b36d8140739d490004dbb2 Mon Sep 17 00:00:00 2001 From: ryan730 Date: Fri, 26 Apr 2019 11:55:34 +0800 Subject: [PATCH 6/6] change License change License --- LICENSE | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/LICENSE b/LICENSE index 266fb814..cf97132f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,28 @@ -Copyright (c) 2018-present Alibaba Inc. +BSD License -Permission is granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: +Copyright (c) 2015-present, Alibaba Group Holding Limited. All rights reserved. -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: -THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS", -WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO -THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE \ No newline at end of file + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the copyright holder nor the names of its contributors may be used to + endorse or promote products derived from this software without specific + prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.