├── .gitignore ├── .gradle ├── 5.1.1 │ ├── fileChanges │ │ └── last-build.bin │ ├── fileHashes │ │ └── fileHashes.lock │ └── gc.properties ├── buildOutputCleanup │ ├── buildOutputCleanup.lock │ └── cache.properties └── vcs-1 │ └── gc.properties ├── .metadata ├── .travis.yml ├── LICENSE ├── PrivacyPolicy.md ├── README.md ├── android ├── app │ ├── build.gradle │ ├── libs │ │ └── client.aar.file │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── ic_launcher-web.png │ │ ├── java │ │ │ └── com │ │ │ │ └── iotserv │ │ │ │ └── gateway │ │ │ │ ├── MainActivity.java │ │ │ │ ├── NatCloudClientService.java │ │ │ │ └── SYSBroadcastReceiver.java │ │ └── res │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_foreground.png │ │ │ └── ic_launcher_round.png │ │ │ └── values │ │ │ ├── ic_launcher_background.xml │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties └── settings.gradle ├── build.cmd ├── delhistory.sh ├── image └── screen.png ├── ios ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ └── contents.xcworkspacedata │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ └── contents.xcworkspacedata └── Runner │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ ├── Contents.json │ │ ├── Icon-App-1024x1024@1x.png │ │ ├── Icon-App-20x20@1x.png │ │ ├── Icon-App-20x20@2x.png │ │ ├── Icon-App-20x20@3x.png │ │ ├── Icon-App-29x29@1x.png │ │ ├── Icon-App-29x29@2x.png │ │ ├── Icon-App-29x29@3x.png │ │ ├── Icon-App-40x40@1x.png │ │ ├── Icon-App-40x40@2x.png │ │ ├── Icon-App-40x40@3x.png │ │ ├── Icon-App-60x60@2x.png │ │ ├── Icon-App-60x60@3x.png │ │ ├── Icon-App-76x76@1x.png │ │ ├── Icon-App-76x76@2x.png │ │ └── Icon-App-83.5x83.5@2x.png │ └── LaunchImage.imageset │ │ ├── Contents.json │ │ ├── LaunchImage.png │ │ ├── LaunchImage@2x.png │ │ ├── LaunchImage@3x.png │ │ └── README.md │ ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard │ ├── Info.plist │ └── main.m ├── lib └── main.dart ├── local.properties ├── phicomm-r1-install-gateway ├── AdbWinApi.dll ├── AdbWinUsbApi.dll ├── README.md ├── adb.exe └── 第二步-双击这个-R1-云易连网关安装自启动工具.bat ├── pubspec.lock ├── pubspec.yaml ├── secrets.tar.enc ├── tarsign.sh ├── test └── widget_test.dart └── untarsign.sh /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # Visual Studio Code related 19 | .vscode/ 20 | 21 | # Flutter/Dart/Pub related 22 | **/doc/api/ 23 | .dart_tool/ 24 | .flutter-plugins 25 | .packages 26 | .pub-cache/ 27 | .pub/ 28 | /build/ 29 | 30 | # Android related 31 | **/android/**/gradle-wrapper.jar 32 | **/android/.gradle 33 | **/android/captures/ 34 | **/android/gradlew 35 | **/android/gradlew.bat 36 | **/android/local.properties 37 | **/android/**/GeneratedPluginRegistrant.java 38 | #add by Farry 39 | **/android/key.properties 40 | **/android/key.jks 41 | **/android/app/libs/*.aar 42 | *.apk 43 | 44 | # iOS/XCode related 45 | **/ios/**/*.mode1v3 46 | **/ios/**/*.mode2v3 47 | **/ios/**/*.moved-aside 48 | **/ios/**/*.pbxuser 49 | **/ios/**/*.perspectivev3 50 | **/ios/**/*sync/ 51 | **/ios/**/.sconsign.dblite 52 | **/ios/**/.tags* 53 | **/ios/**/.vagrant/ 54 | **/ios/**/DerivedData/ 55 | **/ios/**/Icon? 56 | **/ios/**/Pods/ 57 | **/ios/**/.symlinks/ 58 | **/ios/**/profile 59 | **/ios/**/xcuserdata 60 | **/ios/.generated/ 61 | **/ios/Flutter/App.framework 62 | **/ios/Flutter/Flutter.framework 63 | **/ios/Flutter/Generated.xcconfig 64 | **/ios/Flutter/app.flx 65 | **/ios/Flutter/app.zip 66 | **/ios/Flutter/flutter_assets/ 67 | **/ios/ServiceDefinitions.json 68 | **/ios/Runner/GeneratedPluginRegistrant.* 69 | 70 | # Exceptions to above rules. 71 | !**/ios/**/default.mode1v3 72 | !**/ios/**/default.mode2v3 73 | !**/ios/**/default.pbxuser 74 | !**/ios/**/default.perspectivev3 75 | !/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages 76 | /.flutter-plugins-dependencies 77 | /ios/Flutter/flutter_export_environment.sh 78 | -------------------------------------------------------------------------------- /.gradle/5.1.1/fileChanges/last-build.bin: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gradle/5.1.1/fileHashes/fileHashes.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/.gradle/5.1.1/fileHashes/fileHashes.lock -------------------------------------------------------------------------------- /.gradle/5.1.1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/.gradle/5.1.1/gc.properties -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/buildOutputCleanup.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/.gradle/buildOutputCleanup/buildOutputCleanup.lock -------------------------------------------------------------------------------- /.gradle/buildOutputCleanup/cache.properties: -------------------------------------------------------------------------------- 1 | #Tue Apr 30 23:02:28 CST 2019 2 | gradle.version=5.1.1 3 | -------------------------------------------------------------------------------- /.gradle/vcs-1/gc.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/.gradle/vcs-1/gc.properties -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: 8661d8aecd626f7f57ccbcb735553edc05a2e713 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | cache: 2 | directories: 3 | - "$HOME/.pub-cache" 4 | - $GOPATH/pkg/mod 5 | - $HOME/.cache/go-build 6 | #env: 7 | # - GO111MODULE=on 8 | jobs: 9 | include: 10 | - stage: deployAPK 11 | os: linux 12 | language: android 13 | licenses: 14 | - android-sdk-preview-license-.+ 15 | - android-sdk-license-.+ 16 | - google-gdk-license-.+ 17 | android: 18 | components: 19 | - tools 20 | - platform-tools 21 | - build-tools-28.0.3 22 | - android-28 23 | - sys-img-armeabi-v7a-google_apis-25 24 | - extra-android-m2repository 25 | - extra-google-m2repository 26 | - extra-google-android-support 27 | jdk: oraclejdk8 28 | sudo: false 29 | addons: 30 | apt: 31 | sources: 32 | - ubuntu-toolchain-r-test 33 | packages: 34 | - libstdc++6 35 | - fonts-droid 36 | before_script: 37 | - git clone https://github.com/flutter/flutter.git 38 | # download golang 39 | - wget -q https://dl.google.com/go/go1.15.1.linux-amd64.tar.gz 40 | - sudo tar -zxf go1.15.1.linux-amd64.tar.gz -C /usr/local 41 | - export GOROOT=/usr/local/go 42 | - export GOPATH=/home/travis/go 43 | - export PATH=$GOROOT/bin:$GOPATH/bin:$PATH 44 | - go version 45 | - go env 46 | - export GO111MODULE=off 47 | # download ndk 48 | - wget -q https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip 49 | - sudo unzip -q android-ndk-r21-linux-x86_64.zip -d $ANDROID_HOME 50 | - export ANDROID_NDK_HOME=$ANDROID_HOME/android-ndk-r21 51 | # install gomobile 52 | - go get golang.org/x/mobile/cmd/gomobile 53 | - go get golang.org/x/mobile/cmd/gobind 54 | - gomobile init 55 | - gomobile version 56 | - pwd 57 | - go get -u github.com/OpenIoTHub/gateway-go 58 | - go env 59 | - rm -rf android/app/libs/*.aar 60 | - gomobile bind -target=android -o=android/app/libs/client.aar github.com/OpenIoTHub/gateway-go/client 61 | # build aar over 62 | script: 63 | - yes | sdkmanager "platforms;android-28" 64 | - yes | sdkmanager "platforms;android-29" 65 | - mkdir release 66 | - ./flutter/bin/flutter doctor -v 67 | - ./flutter/bin/flutter pub get 68 | - ./flutter/bin/flutter clean 69 | - ./flutter/bin/flutter -v build apk --release --split-per-abi 70 | - cp build/app/outputs/apk/release/app-armeabi-v7a-release.apk ./phicomm-r1-install-gateway 71 | - zip phicomm-r1-install-gateway.zip phicomm-r1-install-gateway/* 72 | - mv phicomm-r1-install-gateway.zip ./release 73 | - mv build/app/outputs/apk/release/app-armeabi-v7a-release.apk ./release 74 | - mv build/app/outputs/apk/release/app-arm64-v8a-release.apk ./release 75 | - mv build/app/outputs/apk/release/app-x86_64-release.apk ./release 76 | - ./flutter/bin/flutter -v build apk --release 77 | - mv build/app/outputs/apk/release/app-release.apk ./release 78 | - ./flutter/bin/flutter --version 79 | deploy: 80 | provider: releases 81 | skip_cleanup: true 82 | api_key: 83 | secure: tIC0p7eQNGas5h0OQFap54IawkHWB1pH2sybLelm+bb2pREHdDtwQH2VfspGzS2c8Q51B99PmE6UwtYESO4iqMnNlUN51XWcX50nA65tDWHdQUbd/J/7EcexjoPgqfxZ99qJAPXZfuu0Hk1gDqHjx1NmCw+gwbThuOu/P3cMztb88fYXzQODUqL1PZSSSVDS4xJN+bLWsMlf1PooS+oTEaWP5f6yXCPF7dHu9hcHqdO+9dOfLOD9pkfCZE7ml0u9tpTGeZ0kUOcJUBJQsoI23dyzmz2JBPY/zRQdkHDbWhuF7G7cyW7GjllK83/PMXWSl9veS90BRp30d6Snz8YO3cLU41+dCAX3KvpS5PHJEwWDSObuepGipYzGSV1rqBILEvEdiiR0ynO5UBQ600BbspdcCrvi0cA7enjGNoNETo8GXKHnmSESo4rKt4OBww110Mq44Pl1XxxbljxBDaPU0Qsksf0+edf+J2yJARs41/OgENuc8PLDcO41GQH4kFiDLoDYIB9HJspgsOBzMi/QsHFjp3UL/9ewU2fT0S7hGq6CrXaKYdLHGe9e4+bWXnETwTt2uKo6ov27VyymvbahEtgjuXiJTxANB6t30wwPYSASIPhXAxTr9lLYn7LHKvsstjiupTFkc7EpKC9n2NKEH5qhD5c68i3cw+sertyhHuM= 84 | file: 85 | - release/app-armeabi-v7a-release.apk 86 | - release/app-arm64-v8a-release.apk 87 | - release/app-x86_64-release.apk 88 | - release/app-release.apk 89 | - release/phicomm-r1-install-gateway.zip 90 | on: 91 | tags: true 92 | before_install: 93 | - export ANDROID_HOME=/usr/local/android-sdk 94 | - openssl aes-256-cbc -K $encrypted_9bf81d20de01_key -iv $encrypted_9bf81d20de01_iv 95 | -in secrets.tar.enc -out secrets.tar -d 96 | - tar xvf secrets.tar -C ./android 97 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 NAT Cloud 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /PrivacyPolicy.md: -------------------------------------------------------------------------------- 1 | 本应用非常重视用户隐私政策并严格遵守相关的法律规定。请您仔细阅读《隐私政策》后再继续使用。如果您继续使用我们的服务,表示您已经充分阅读和理解我们协议的全部内容。 2 | 3 | 本app尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更优质的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。 4 | 5 | 1. 适用范围 6 | 7 | (a) 在您注册本应用app帐号时,您根据app要求提供的个人注册信息; 8 | 9 | (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据; 10 | 11 | (c) 本应用通过合法途径从商业伙伴处取得的用户个人数据。 12 | 13 | (d)本应用严禁用户发布不良信息,如裸露、色情和亵渎内容,发布的内容我们会进行审核,一经发现不良信息,会禁用该用户的所有权限,予以封号处理。 14 | 15 | 2. 信息使用 16 | 17 | (a)本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人登录信息。如果我们存储发生维修或升级,我们会事先发出推送消息来通知您,请您提前允许本应用消息通知。 18 | 19 | (b) 本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。 20 | 21 | (c) 为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。 22 | 23 | 3. 信息披露 24 | 25 | 在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息: 26 | 27 | (a) 未经您事先同意,我们不会向第三方披露; 28 | 29 | (b)为提供您所要求的产品和服务,而必须和第三方分享您的个人信息; 30 | 31 | (c) 根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露; 32 | 33 | (d) 如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露; 34 | 35 | (e) 如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷; 36 | 37 | 4. 信息存储和交换 38 | 39 | 本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。 40 | 41 | 5. Cookie的使用 42 | 43 | (a) 在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies ,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。 44 | 45 | (b) 您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。 46 | 47 | (c) 通过本应用所设cookies所取得的有关信息,将适用本政策。 48 | 49 | 6.本隐私政策的更改 50 | 51 | (a)如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。 52 | 53 | (b)本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。 54 | 55 | 方披露自己的个人信息,如联络方式或者邮政地址。请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。 56 | 57 | 感谢您花时间了解我们的隐私政策!我们将尽全力保护您的个人信息和合法权益,再次感谢您的信任! 58 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GateWay(物联网、私有云、内网穿透网关) 2 | #### 作用 3 | - 用来管理本网络的设备 4 | - 访问本网络的私有云 5 | - 远程访问本网络的端口 6 | 7 | #### 下载: 8 | ##### https://github.com/OpenIoTHub/GateWay/releases 9 | ##### 斐讯r1音箱安装:https://github.com/OpenIoTHub/GateWay/releases 中的phicomm-r1-install-gateway.zip 10 | #### 访问工具下载: 11 | ##### https://github.com/OpenIoTHub/OpenIoTHub/releases 12 | #### 界面: 13 | ![image](./image/screen.png) 14 | ## Getting Started 15 | 16 | This project is a starting point for a Flutter application. 17 | 18 | A few resources to get you started if this is your first Flutter project: 19 | 20 | - [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab) 21 | - [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook) 22 | 23 | For help getting started with Flutter, view our 24 | [online documentation](https://flutter.io/docs), which offers tutorials, 25 | samples, guidance on mobile development, and a full API reference. 26 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | //add by Farry 10 | def gitVersionCode() { 11 | def cmd = 'git rev-list HEAD --first-parent --count' 12 | cmd.execute().text.trim().toInteger() 13 | } 14 | 15 | def gitVersionTag() { 16 | def cmd = 'git describe --tags' 17 | def version = cmd.execute().text.trim() 18 | 19 | def pattern = "-(\\d+)-g" 20 | def matcher = version =~ pattern 21 | 22 | if (matcher) { 23 | version = version.substring(0, matcher.start()) + "." + matcher[0][1] 24 | } else { 25 | version = version + ".0" 26 | } 27 | 28 | return version 29 | } 30 | //add end 31 | 32 | def flutterRoot = localProperties.getProperty('flutter.sdk') 33 | if (flutterRoot == null) { 34 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 35 | } 36 | 37 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 38 | if (flutterVersionCode == null) { 39 | flutterVersionCode = '1' 40 | } 41 | 42 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 43 | if (flutterVersionName == null) { 44 | flutterVersionName = '1.0' 45 | } 46 | 47 | apply plugin: 'com.android.application' 48 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 49 | 50 | def keystorePropertiesFile = rootProject.file("key.properties") 51 | def keystoreProperties = new Properties() 52 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 53 | 54 | android { 55 | compileSdkVersion 29 56 | 57 | lintOptions { 58 | disable 'InvalidPackage' 59 | } 60 | 61 | defaultConfig { 62 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 63 | applicationId "com.iotserv.gateway" 64 | minSdkVersion 16 65 | targetSdkVersion 28 66 | versionCode gitVersionCode() 67 | versionName gitVersionTag() 68 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 69 | } 70 | 71 | signingConfigs { 72 | release { 73 | keyAlias keystoreProperties['keyAlias'] 74 | keyPassword keystoreProperties['keyPassword'] 75 | storeFile file(keystoreProperties['storeFile']) 76 | storePassword keystoreProperties['storePassword'] 77 | } 78 | } 79 | 80 | buildTypes { 81 | // add by Farry 82 | debug { 83 | // 为了不和 release 版本冲突 84 | applicationIdSuffix ".debug" 85 | } 86 | // add end 87 | release { 88 | // TODO: Add your own signing config for the release build. 89 | // Signing with the debug keys for now, so `flutter run --release` works. 90 | signingConfig signingConfigs.release 91 | } 92 | } 93 | } 94 | 95 | flutter { 96 | source '../..' 97 | } 98 | 99 | dependencies { 100 | testImplementation 'junit:junit:4.12' 101 | androidTestImplementation 'androidx.test.ext:junit:1.1.1' 102 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' 103 | implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) 104 | } 105 | -------------------------------------------------------------------------------- /android/app/libs/client.aar.file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/libs/client.aar.file -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 21 | 25 | 32 | 36 | 40 | 45 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 61 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /android/app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /android/app/src/main/java/com/iotserv/gateway/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.iotserv.gateway; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import io.flutter.embedding.android.FlutterActivity; 6 | 7 | public class MainActivity extends FlutterActivity { 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | Intent it=new Intent(this, NatCloudClientService.class); 12 | startService(it); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/iotserv/gateway/NatCloudClientService.java: -------------------------------------------------------------------------------- 1 | package com.iotserv.gateway; 2 | 3 | import android.annotation.TargetApi; 4 | import android.app.Notification; 5 | import android.app.NotificationChannel; 6 | import android.app.NotificationManager; 7 | import android.app.PendingIntent; 8 | import android.app.Service; 9 | import android.content.Intent; 10 | import android.graphics.Color; 11 | import android.os.Build; 12 | import android.os.IBinder; 13 | import android.util.Log; 14 | 15 | import client.Client; 16 | 17 | public class NatCloudClientService extends Service { 18 | @Override 19 | public IBinder onBind(Intent intent) { 20 | return null; 21 | } 22 | 23 | /** 24 | * 首次创建服务时,系统将调用此方法来执行一次性设置程序(在调用 onStartCommand() 或 onBind() 之前)。 25 | * 如果服务已在运行,则不会调用此方法。该方法只被调用一次 26 | */ 27 | @Override 28 | public void onCreate() { 29 | Log.d("Service","onCreate invoke"); 30 | 31 | Thread t1= new Thread(){ 32 | public void run(){ 33 | Client.run(); 34 | } 35 | }; 36 | t1.start(); 37 | super.onCreate(); 38 | } 39 | 40 | /** 41 | * 每次通过startService()方法启动Service时都会被回调。 42 | * @param intent 43 | * @param flags 44 | * @param startId 45 | * @return 46 | */ 47 | @TargetApi(Build.VERSION_CODES.O) 48 | // @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) 49 | @Override 50 | public int onStartCommand(Intent intent, int flags, int startId) { 51 | Log.d("Service","onStartCommand invoke"); 52 | String CHANNEL_ONE_ID = "com.iotserv.gateway"; 53 | String CHANNEL_ONE_NAME = "Channel One"; 54 | NotificationChannel notificationChannel = null; 55 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { 56 | notificationChannel = new NotificationChannel(CHANNEL_ONE_ID, 57 | CHANNEL_ONE_NAME, NotificationManager.IMPORTANCE_LOW); 58 | notificationChannel.enableLights(true); 59 | notificationChannel.setLightColor(Color.RED); 60 | notificationChannel.setShowBadge(true); 61 | notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC); 62 | NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 63 | manager.createNotificationChannel(notificationChannel); 64 | PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); 65 | Notification notification = new Notification.Builder(this) 66 | .setChannelId(CHANNEL_ONE_ID) 67 | .setTicker("Nature") 68 | .setSmallIcon(R.mipmap.ic_launcher) 69 | .setContentTitle("云易连(网关)") 70 | .setContentText("云易连网关正在运行") 71 | .setContentIntent(pendingIntent) 72 | .build(); 73 | notification.flags |= Notification.FLAG_NO_CLEAR; 74 | startForeground(1, notification); 75 | }else{ 76 | PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0); 77 | Notification notification = new Notification.Builder(this) 78 | .setTicker("Nature") 79 | .setSmallIcon(R.mipmap.ic_launcher) 80 | .setContentTitle("云易连(网关)") 81 | .setContentText("云易连网关正在运行") 82 | .setContentIntent(pendingIntent) 83 | .build(); 84 | notification.flags |= Notification.FLAG_NO_CLEAR; 85 | startForeground(1, notification); 86 | } 87 | return super.onStartCommand(intent, flags, startId); 88 | } 89 | 90 | /** 91 | * 服务销毁时的回调 92 | */ 93 | @Override 94 | public void onDestroy() { 95 | Log.d("Service","onDestroy invoke"); 96 | super.onDestroy(); 97 | } 98 | 99 | } 100 | -------------------------------------------------------------------------------- /android/app/src/main/java/com/iotserv/gateway/SYSBroadcastReceiver.java: -------------------------------------------------------------------------------- 1 | package com.iotserv.gateway; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import com.iotserv.gateway.MainActivity; 8 | 9 | public class SYSBroadcastReceiver extends android.content.BroadcastReceiver { 10 | 11 | @Override 12 | public void onReceive(Context context, Intent intent) { 13 | if(Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())){ 14 | // 开机开启后台服务 15 | Intent it=new Intent(context, NatCloudClientService.class); 16 | context.startService(it); 17 | 18 | // 开机打开应用 19 | // Intent thisIntent = new Intent(context, MainActivity.class); 20 | // thisIntent.setAction("android.intent.action.MAIN"); 21 | // thisIntent.addCategory("android.intent.category.LAUNCHER"); 22 | // thisIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 23 | // context.startActivity(thisIntent); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /android/app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.3.50' 3 | repositories { 4 | google() 5 | jcenter() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:3.5.1' 10 | } 11 | } 12 | 13 | allprojects { 14 | repositories { 15 | google() 16 | jcenter() 17 | } 18 | } 19 | 20 | rootProject.buildDir = '../build' 21 | subprojects { 22 | project.buildDir = "${rootProject.buildDir}/${project.name}" 23 | } 24 | subprojects { 25 | project.evaluationDependsOn(':app') 26 | } 27 | 28 | task clean(type: Delete) { 29 | delete rootProject.buildDir 30 | } 31 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.enableR8=true 3 | android.useAndroidX=true 4 | android.enableJetifier=true 5 | -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Apr 29 12:52:17 CST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip 7 | -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath() 4 | 5 | def plugins = new Properties() 6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins') 7 | if (pluginsFile.exists()) { 8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) } 9 | } 10 | 11 | plugins.each { name, path -> 12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile() 13 | include ":$name" 14 | project(":$name").projectDir = pluginDirectory 15 | } 16 | -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | CALL flutter build apk --split-per-abi -v 2 | explorer build\app\outputs\apk\release -------------------------------------------------------------------------------- /delhistory.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch *.aar' --prune-empty --tag-name-filter cat -- --all 3 | git push origin master --force -------------------------------------------------------------------------------- /image/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/image/screen.png -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 3 | #include "Generated.xcconfig" 4 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 32 | end 33 | 34 | post_install do |installer| 35 | installer.pods_project.targets.each do |target| 36 | flutter_additional_ios_build_settings(target) 37 | end 38 | end 39 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; }; 13 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 14 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; }; 15 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 16 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; }; 17 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; }; 18 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; }; 19 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 20 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 21 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXCopyFilesBuildPhase section */ 25 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = { 26 | isa = PBXCopyFilesBuildPhase; 27 | buildActionMask = 2147483647; 28 | dstPath = ""; 29 | dstSubfolderSpec = 10; 30 | files = ( 31 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */, 32 | 9705A1C71CF904A300538489 /* Flutter.framework in Embed Frameworks */, 33 | ); 34 | name = "Embed Frameworks"; 35 | runOnlyForDeploymentPostprocessing = 0; 36 | }; 37 | /* End PBXCopyFilesBuildPhase section */ 38 | 39 | /* Begin PBXFileReference section */ 40 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 41 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 42 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 43 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; }; 44 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 45 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 46 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 47 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 48 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 49 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; }; 50 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 51 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 52 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 53 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 54 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 55 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 56 | /* End PBXFileReference section */ 57 | 58 | /* Begin PBXFrameworksBuildPhase section */ 59 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 60 | isa = PBXFrameworksBuildPhase; 61 | buildActionMask = 2147483647; 62 | files = ( 63 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */, 64 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */, 65 | ); 66 | runOnlyForDeploymentPostprocessing = 0; 67 | }; 68 | /* End PBXFrameworksBuildPhase section */ 69 | 70 | /* Begin PBXGroup section */ 71 | 9740EEB11CF90186004384FC /* Flutter */ = { 72 | isa = PBXGroup; 73 | children = ( 74 | 3B80C3931E831B6300D905FE /* App.framework */, 75 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 76 | 9740EEBA1CF902C7004384FC /* Flutter.framework */, 77 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 78 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 79 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 80 | ); 81 | name = Flutter; 82 | sourceTree = ""; 83 | }; 84 | 97C146E51CF9000F007C117D = { 85 | isa = PBXGroup; 86 | children = ( 87 | 9740EEB11CF90186004384FC /* Flutter */, 88 | 97C146F01CF9000F007C117D /* Runner */, 89 | 97C146EF1CF9000F007C117D /* Products */, 90 | CF3B75C9A7D2FA2A4C99F110 /* Frameworks */, 91 | ); 92 | sourceTree = ""; 93 | }; 94 | 97C146EF1CF9000F007C117D /* Products */ = { 95 | isa = PBXGroup; 96 | children = ( 97 | 97C146EE1CF9000F007C117D /* Runner.app */, 98 | ); 99 | name = Products; 100 | sourceTree = ""; 101 | }; 102 | 97C146F01CF9000F007C117D /* Runner */ = { 103 | isa = PBXGroup; 104 | children = ( 105 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 106 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 107 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 108 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 109 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 110 | 97C147021CF9000F007C117D /* Info.plist */, 111 | 97C146F11CF9000F007C117D /* Supporting Files */, 112 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 113 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 114 | ); 115 | path = Runner; 116 | sourceTree = ""; 117 | }; 118 | 97C146F11CF9000F007C117D /* Supporting Files */ = { 119 | isa = PBXGroup; 120 | children = ( 121 | 97C146F21CF9000F007C117D /* main.m */, 122 | ); 123 | name = "Supporting Files"; 124 | sourceTree = ""; 125 | }; 126 | /* End PBXGroup section */ 127 | 128 | /* Begin PBXNativeTarget section */ 129 | 97C146ED1CF9000F007C117D /* Runner */ = { 130 | isa = PBXNativeTarget; 131 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 132 | buildPhases = ( 133 | 9740EEB61CF901F6004384FC /* Run Script */, 134 | 97C146EA1CF9000F007C117D /* Sources */, 135 | 97C146EB1CF9000F007C117D /* Frameworks */, 136 | 97C146EC1CF9000F007C117D /* Resources */, 137 | 9705A1C41CF9048500538489 /* Embed Frameworks */, 138 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 139 | ); 140 | buildRules = ( 141 | ); 142 | dependencies = ( 143 | ); 144 | name = Runner; 145 | productName = Runner; 146 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 147 | productType = "com.apple.product-type.application"; 148 | }; 149 | /* End PBXNativeTarget section */ 150 | 151 | /* Begin PBXProject section */ 152 | 97C146E61CF9000F007C117D /* Project object */ = { 153 | isa = PBXProject; 154 | attributes = { 155 | LastUpgradeCheck = 0910; 156 | ORGANIZATIONNAME = "The Chromium Authors"; 157 | TargetAttributes = { 158 | 97C146ED1CF9000F007C117D = { 159 | CreatedOnToolsVersion = 7.3.1; 160 | }; 161 | }; 162 | }; 163 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 164 | compatibilityVersion = "Xcode 3.2"; 165 | developmentRegion = English; 166 | hasScannedForEncodings = 0; 167 | knownRegions = ( 168 | en, 169 | Base, 170 | ); 171 | mainGroup = 97C146E51CF9000F007C117D; 172 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 173 | projectDirPath = ""; 174 | projectRoot = ""; 175 | targets = ( 176 | 97C146ED1CF9000F007C117D /* Runner */, 177 | ); 178 | }; 179 | /* End PBXProject section */ 180 | 181 | /* Begin PBXResourcesBuildPhase section */ 182 | 97C146EC1CF9000F007C117D /* Resources */ = { 183 | isa = PBXResourcesBuildPhase; 184 | buildActionMask = 2147483647; 185 | files = ( 186 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 187 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 188 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */, 189 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 190 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 191 | ); 192 | runOnlyForDeploymentPostprocessing = 0; 193 | }; 194 | /* End PBXResourcesBuildPhase section */ 195 | 196 | /* Begin PBXShellScriptBuildPhase section */ 197 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 198 | isa = PBXShellScriptBuildPhase; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | ); 202 | inputPaths = ( 203 | ); 204 | name = "Thin Binary"; 205 | outputPaths = ( 206 | ); 207 | runOnlyForDeploymentPostprocessing = 0; 208 | shellPath = /bin/sh; 209 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin"; 210 | }; 211 | 9740EEB61CF901F6004384FC /* Run Script */ = { 212 | isa = PBXShellScriptBuildPhase; 213 | buildActionMask = 2147483647; 214 | files = ( 215 | ); 216 | inputPaths = ( 217 | ); 218 | name = "Run Script"; 219 | outputPaths = ( 220 | ); 221 | runOnlyForDeploymentPostprocessing = 0; 222 | shellPath = /bin/sh; 223 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 224 | }; 225 | /* End PBXShellScriptBuildPhase section */ 226 | 227 | /* Begin PBXSourcesBuildPhase section */ 228 | 97C146EA1CF9000F007C117D /* Sources */ = { 229 | isa = PBXSourcesBuildPhase; 230 | buildActionMask = 2147483647; 231 | files = ( 232 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */, 233 | 97C146F31CF9000F007C117D /* main.m in Sources */, 234 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 235 | ); 236 | runOnlyForDeploymentPostprocessing = 0; 237 | }; 238 | /* End PBXSourcesBuildPhase section */ 239 | 240 | /* Begin PBXVariantGroup section */ 241 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 242 | isa = PBXVariantGroup; 243 | children = ( 244 | 97C146FB1CF9000F007C117D /* Base */, 245 | ); 246 | name = Main.storyboard; 247 | sourceTree = ""; 248 | }; 249 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 250 | isa = PBXVariantGroup; 251 | children = ( 252 | 97C147001CF9000F007C117D /* Base */, 253 | ); 254 | name = LaunchScreen.storyboard; 255 | sourceTree = ""; 256 | }; 257 | /* End PBXVariantGroup section */ 258 | 259 | /* Begin XCBuildConfiguration section */ 260 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 261 | isa = XCBuildConfiguration; 262 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 263 | buildSettings = { 264 | ALWAYS_SEARCH_USER_PATHS = NO; 265 | CLANG_ANALYZER_NONNULL = YES; 266 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 267 | CLANG_CXX_LIBRARY = "libc++"; 268 | CLANG_ENABLE_MODULES = YES; 269 | CLANG_ENABLE_OBJC_ARC = YES; 270 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 271 | CLANG_WARN_BOOL_CONVERSION = YES; 272 | CLANG_WARN_COMMA = YES; 273 | CLANG_WARN_CONSTANT_CONVERSION = YES; 274 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 275 | CLANG_WARN_EMPTY_BODY = YES; 276 | CLANG_WARN_ENUM_CONVERSION = YES; 277 | CLANG_WARN_INFINITE_RECURSION = YES; 278 | CLANG_WARN_INT_CONVERSION = YES; 279 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 280 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 281 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 282 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 283 | CLANG_WARN_STRICT_PROTOTYPES = YES; 284 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 285 | CLANG_WARN_UNREACHABLE_CODE = YES; 286 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 287 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 288 | COPY_PHASE_STRIP = NO; 289 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 290 | ENABLE_NS_ASSERTIONS = NO; 291 | ENABLE_STRICT_OBJC_MSGSEND = YES; 292 | GCC_C_LANGUAGE_STANDARD = gnu99; 293 | GCC_NO_COMMON_BLOCKS = YES; 294 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 295 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 296 | GCC_WARN_UNDECLARED_SELECTOR = YES; 297 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 298 | GCC_WARN_UNUSED_FUNCTION = YES; 299 | GCC_WARN_UNUSED_VARIABLE = YES; 300 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 301 | MTL_ENABLE_DEBUG_INFO = NO; 302 | SDKROOT = iphoneos; 303 | TARGETED_DEVICE_FAMILY = "1,2"; 304 | VALIDATE_PRODUCT = YES; 305 | }; 306 | name = Profile; 307 | }; 308 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 309 | isa = XCBuildConfiguration; 310 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 311 | buildSettings = { 312 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 313 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 314 | DEVELOPMENT_TEAM = S8QB4VV633; 315 | ENABLE_BITCODE = NO; 316 | FRAMEWORK_SEARCH_PATHS = ( 317 | "$(inherited)", 318 | "$(PROJECT_DIR)/Flutter", 319 | ); 320 | INFOPLIST_FILE = Runner/Info.plist; 321 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 322 | LIBRARY_SEARCH_PATHS = ( 323 | "$(inherited)", 324 | "$(PROJECT_DIR)/Flutter", 325 | ); 326 | PRODUCT_BUNDLE_IDENTIFIER = com.natcloud.client; 327 | PRODUCT_NAME = "$(TARGET_NAME)"; 328 | VERSIONING_SYSTEM = "apple-generic"; 329 | }; 330 | name = Profile; 331 | }; 332 | 97C147031CF9000F007C117D /* Debug */ = { 333 | isa = XCBuildConfiguration; 334 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 335 | buildSettings = { 336 | ALWAYS_SEARCH_USER_PATHS = NO; 337 | CLANG_ANALYZER_NONNULL = YES; 338 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 339 | CLANG_CXX_LIBRARY = "libc++"; 340 | CLANG_ENABLE_MODULES = YES; 341 | CLANG_ENABLE_OBJC_ARC = YES; 342 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 343 | CLANG_WARN_BOOL_CONVERSION = YES; 344 | CLANG_WARN_COMMA = YES; 345 | CLANG_WARN_CONSTANT_CONVERSION = YES; 346 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 347 | CLANG_WARN_EMPTY_BODY = YES; 348 | CLANG_WARN_ENUM_CONVERSION = YES; 349 | CLANG_WARN_INFINITE_RECURSION = YES; 350 | CLANG_WARN_INT_CONVERSION = YES; 351 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 352 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 353 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 354 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 355 | CLANG_WARN_STRICT_PROTOTYPES = YES; 356 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 357 | CLANG_WARN_UNREACHABLE_CODE = YES; 358 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 359 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 360 | COPY_PHASE_STRIP = NO; 361 | DEBUG_INFORMATION_FORMAT = dwarf; 362 | ENABLE_STRICT_OBJC_MSGSEND = YES; 363 | ENABLE_TESTABILITY = YES; 364 | GCC_C_LANGUAGE_STANDARD = gnu99; 365 | GCC_DYNAMIC_NO_PIC = NO; 366 | GCC_NO_COMMON_BLOCKS = YES; 367 | GCC_OPTIMIZATION_LEVEL = 0; 368 | GCC_PREPROCESSOR_DEFINITIONS = ( 369 | "DEBUG=1", 370 | "$(inherited)", 371 | ); 372 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 373 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 374 | GCC_WARN_UNDECLARED_SELECTOR = YES; 375 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 376 | GCC_WARN_UNUSED_FUNCTION = YES; 377 | GCC_WARN_UNUSED_VARIABLE = YES; 378 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 379 | MTL_ENABLE_DEBUG_INFO = YES; 380 | ONLY_ACTIVE_ARCH = YES; 381 | SDKROOT = iphoneos; 382 | TARGETED_DEVICE_FAMILY = "1,2"; 383 | }; 384 | name = Debug; 385 | }; 386 | 97C147041CF9000F007C117D /* Release */ = { 387 | isa = XCBuildConfiguration; 388 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 389 | buildSettings = { 390 | ALWAYS_SEARCH_USER_PATHS = NO; 391 | CLANG_ANALYZER_NONNULL = YES; 392 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 393 | CLANG_CXX_LIBRARY = "libc++"; 394 | CLANG_ENABLE_MODULES = YES; 395 | CLANG_ENABLE_OBJC_ARC = YES; 396 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 397 | CLANG_WARN_BOOL_CONVERSION = YES; 398 | CLANG_WARN_COMMA = YES; 399 | CLANG_WARN_CONSTANT_CONVERSION = YES; 400 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 401 | CLANG_WARN_EMPTY_BODY = YES; 402 | CLANG_WARN_ENUM_CONVERSION = YES; 403 | CLANG_WARN_INFINITE_RECURSION = YES; 404 | CLANG_WARN_INT_CONVERSION = YES; 405 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 406 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 407 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 408 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 409 | CLANG_WARN_STRICT_PROTOTYPES = YES; 410 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 411 | CLANG_WARN_UNREACHABLE_CODE = YES; 412 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 413 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 414 | COPY_PHASE_STRIP = NO; 415 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 416 | ENABLE_NS_ASSERTIONS = NO; 417 | ENABLE_STRICT_OBJC_MSGSEND = YES; 418 | GCC_C_LANGUAGE_STANDARD = gnu99; 419 | GCC_NO_COMMON_BLOCKS = YES; 420 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 421 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 422 | GCC_WARN_UNDECLARED_SELECTOR = YES; 423 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 424 | GCC_WARN_UNUSED_FUNCTION = YES; 425 | GCC_WARN_UNUSED_VARIABLE = YES; 426 | IPHONEOS_DEPLOYMENT_TARGET = 8.0; 427 | MTL_ENABLE_DEBUG_INFO = NO; 428 | SDKROOT = iphoneos; 429 | TARGETED_DEVICE_FAMILY = "1,2"; 430 | VALIDATE_PRODUCT = YES; 431 | }; 432 | name = Release; 433 | }; 434 | 97C147061CF9000F007C117D /* Debug */ = { 435 | isa = XCBuildConfiguration; 436 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 437 | buildSettings = { 438 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 439 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 440 | ENABLE_BITCODE = NO; 441 | FRAMEWORK_SEARCH_PATHS = ( 442 | "$(inherited)", 443 | "$(PROJECT_DIR)/Flutter", 444 | ); 445 | INFOPLIST_FILE = Runner/Info.plist; 446 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 447 | LIBRARY_SEARCH_PATHS = ( 448 | "$(inherited)", 449 | "$(PROJECT_DIR)/Flutter", 450 | ); 451 | PRODUCT_BUNDLE_IDENTIFIER = com.natcloud.client; 452 | PRODUCT_NAME = "$(TARGET_NAME)"; 453 | VERSIONING_SYSTEM = "apple-generic"; 454 | }; 455 | name = Debug; 456 | }; 457 | 97C147071CF9000F007C117D /* Release */ = { 458 | isa = XCBuildConfiguration; 459 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 460 | buildSettings = { 461 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 462 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 463 | ENABLE_BITCODE = NO; 464 | FRAMEWORK_SEARCH_PATHS = ( 465 | "$(inherited)", 466 | "$(PROJECT_DIR)/Flutter", 467 | ); 468 | INFOPLIST_FILE = Runner/Info.plist; 469 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 470 | LIBRARY_SEARCH_PATHS = ( 471 | "$(inherited)", 472 | "$(PROJECT_DIR)/Flutter", 473 | ); 474 | PRODUCT_BUNDLE_IDENTIFIER = com.natcloud.client; 475 | PRODUCT_NAME = "$(TARGET_NAME)"; 476 | VERSIONING_SYSTEM = "apple-generic"; 477 | }; 478 | name = Release; 479 | }; 480 | /* End XCBuildConfiguration section */ 481 | 482 | /* Begin XCConfigurationList section */ 483 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 484 | isa = XCConfigurationList; 485 | buildConfigurations = ( 486 | 97C147031CF9000F007C117D /* Debug */, 487 | 97C147041CF9000F007C117D /* Release */, 488 | 249021D3217E4FDB00AE95B9 /* Profile */, 489 | ); 490 | defaultConfigurationIsVisible = 0; 491 | defaultConfigurationName = Release; 492 | }; 493 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 494 | isa = XCConfigurationList; 495 | buildConfigurations = ( 496 | 97C147061CF9000F007C117D /* Debug */, 497 | 97C147071CF9000F007C117D /* Release */, 498 | 249021D4217E4FDB00AE95B9 /* Profile */, 499 | ); 500 | defaultConfigurationIsVisible = 0; 501 | defaultConfigurationName = Release; 502 | }; 503 | /* End XCConfigurationList section */ 504 | }; 505 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 506 | } 507 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 68 | 69 | 75 | 77 | 83 | 84 | 85 | 86 | 88 | 89 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #include "AppDelegate.h" 2 | #include "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | client 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | UISupportedInterfaceOrientations 30 | 31 | UIInterfaceOrientationPortrait 32 | UIInterfaceOrientationLandscapeLeft 33 | UIInterfaceOrientationLandscapeRight 34 | 35 | UISupportedInterfaceOrientations~ipad 36 | 37 | UIInterfaceOrientationPortrait 38 | UIInterfaceOrientationPortraitUpsideDown 39 | UIInterfaceOrientationLandscapeLeft 40 | UIInterfaceOrientationLandscapeRight 41 | 42 | UIViewControllerBasedStatusBarAppearance 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | // Step 7 (Final): Change the app's theme 2 | import 'package:flutter/material.dart'; 3 | import 'package:openiothub_plugin/plugins/mdnsService/mDNSService/getway.dart'; 4 | import 'package:openiothub_grpc_api/pb/service.pb.dart'; 5 | import 'package:openiothub_grpc_api/pb/service.pbgrpc.dart'; 6 | 7 | void main() => runApp(new MyApp()); 8 | //TODO 开机自启,配置保存,斐讯r1安装网关脚本 9 | class MyApp extends StatelessWidget { 10 | static PortService get gatewayPortService { 11 | PortService gatewayPortService = PortService.create(); 12 | gatewayPortService.isLocal = true; 13 | gatewayPortService.ip = "127.0.0.1"; 14 | gatewayPortService.port = 1082; 15 | gatewayPortService.info.addAll({ 16 | "name": "网关", 17 | "model": Gateway.modelName, 18 | "mac": "mac", 19 | "id": "id", 20 | "author": "Farry", 21 | "email": "newfarry@126.com", 22 | "home-page": "https://github.com/OpenIoTHub", 23 | "firmware-respository": "https://github.com/OpenIoTHub/gateway-go", 24 | "firmware-version": "version", 25 | } 26 | ); 27 | } 28 | 29 | 30 | @override 31 | Widget build(BuildContext context) { 32 | return new MaterialApp( 33 | title: '云易连网关', 34 | theme: new ThemeData( 35 | primaryColor: Colors.purple, 36 | ), 37 | home: Gateway(serviceInfo: gatewayPortService), 38 | darkTheme: new ThemeData( 39 | primaryColor: Colors.black, 40 | ), 41 | ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /local.properties: -------------------------------------------------------------------------------- 1 | ## This file must *NOT* be checked into Version Control Systems, 2 | # as it contains information specific to your local configuration. 3 | # 4 | # Location of the SDK. This is only used by Gradle. 5 | # For customization when using a Version Control System, please read the 6 | # header note. 7 | #Fri Nov 08 22:05:03 CST 2019 8 | ndk.dir=C\:\\Users\\Farry\\AppData\\Local\\Android\\Sdk\\ndk\\20.0.5594570 9 | sdk.dir=C\:\\Users\\Farry\\AppData\\Local\\Android\\Sdk 10 | -------------------------------------------------------------------------------- /phicomm-r1-install-gateway/AdbWinApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/phicomm-r1-install-gateway/AdbWinApi.dll -------------------------------------------------------------------------------- /phicomm-r1-install-gateway/AdbWinUsbApi.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/phicomm-r1-install-gateway/AdbWinUsbApi.dll -------------------------------------------------------------------------------- /phicomm-r1-install-gateway/README.md: -------------------------------------------------------------------------------- 1 | #### 安装前,请将新版本网关(armeabi架构)命名为"app-armeabi-v7a-release.apk"放到本目录 2 | # 操作: 3 | ### 第一步:安装本文件夹中第一步配网软件到手机,按照软件操作给r1配网 4 | ### 第二步:双击本文件夹的第二步文件,按照提示输入之前连上wifi的r1的ip地址,然后按照提示等待安装完成。 5 | ##### 本目录未包含最新网关程序app-armeabi-v7a-release.apk可以从 [releases page][releases]直接下载phicomm-r1-install-gateway.zip下载完整目录(包含最新app-armeabi-v7a-release.apk) 6 | [releases]: https://github.com/OpenIoTHub/GateWay/releases -------------------------------------------------------------------------------- /phicomm-r1-install-gateway/adb.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/phicomm-r1-install-gateway/adb.exe -------------------------------------------------------------------------------- /phicomm-r1-install-gateway/第二步-双击这个-R1-云易连网关安装自启动工具.bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/phicomm-r1-install-gateway/第二步-双击这个-R1-云易连网关安装自启动工具.bat -------------------------------------------------------------------------------- /pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | url: "https://pub.flutter-io.cn" 9 | source: hosted 10 | version: "2.5.0-nullsafety.3" 11 | boolean_selector: 12 | dependency: transitive 13 | description: 14 | name: boolean_selector 15 | url: "https://pub.flutter-io.cn" 16 | source: hosted 17 | version: "2.1.0-nullsafety.3" 18 | characters: 19 | dependency: transitive 20 | description: 21 | name: characters 22 | url: "https://pub.flutter-io.cn" 23 | source: hosted 24 | version: "1.1.0-nullsafety.5" 25 | charcode: 26 | dependency: transitive 27 | description: 28 | name: charcode 29 | url: "https://pub.flutter-io.cn" 30 | source: hosted 31 | version: "1.2.0-nullsafety.3" 32 | clock: 33 | dependency: transitive 34 | description: 35 | name: clock 36 | url: "https://pub.flutter-io.cn" 37 | source: hosted 38 | version: "1.1.0-nullsafety.3" 39 | collection: 40 | dependency: transitive 41 | description: 42 | name: collection 43 | url: "https://pub.flutter-io.cn" 44 | source: hosted 45 | version: "1.15.0-nullsafety.5" 46 | convert: 47 | dependency: transitive 48 | description: 49 | name: convert 50 | url: "https://pub.flutter-io.cn" 51 | source: hosted 52 | version: "2.1.1" 53 | crypto: 54 | dependency: transitive 55 | description: 56 | name: crypto 57 | url: "https://pub.flutter-io.cn" 58 | source: hosted 59 | version: "2.1.5" 60 | cupertino_icons: 61 | dependency: "direct main" 62 | description: 63 | name: cupertino_icons 64 | url: "https://pub.flutter-io.cn" 65 | source: hosted 66 | version: "0.1.3" 67 | fake_async: 68 | dependency: transitive 69 | description: 70 | name: fake_async 71 | url: "https://pub.flutter-io.cn" 72 | source: hosted 73 | version: "1.2.0-nullsafety.3" 74 | ffi: 75 | dependency: transitive 76 | description: 77 | name: ffi 78 | url: "https://pub.flutter-io.cn" 79 | source: hosted 80 | version: "0.1.3" 81 | file: 82 | dependency: transitive 83 | description: 84 | name: file 85 | url: "https://pub.flutter-io.cn" 86 | source: hosted 87 | version: "5.2.1" 88 | fixnum: 89 | dependency: transitive 90 | description: 91 | name: fixnum 92 | url: "https://pub.flutter-io.cn" 93 | source: hosted 94 | version: "0.10.11" 95 | flutter: 96 | dependency: "direct main" 97 | description: flutter 98 | source: sdk 99 | version: "0.0.0" 100 | flutter_colorpicker: 101 | dependency: transitive 102 | description: 103 | name: flutter_colorpicker 104 | url: "https://pub.flutter-io.cn" 105 | source: hosted 106 | version: "0.3.5" 107 | flutter_test: 108 | dependency: "direct dev" 109 | description: flutter 110 | source: sdk 111 | version: "0.0.0" 112 | flutter_web_plugins: 113 | dependency: transitive 114 | description: flutter 115 | source: sdk 116 | version: "0.0.0" 117 | gateway_grpc_api: 118 | dependency: transitive 119 | description: 120 | path: "." 121 | ref: HEAD 122 | resolved-ref: "93cceaa39a9726cc0a5bf6f317ab474472414c71" 123 | url: "https://github.com/OpenIoTHub/gateway-grpc-api" 124 | source: git 125 | version: "1.0.0" 126 | googleapis_auth: 127 | dependency: transitive 128 | description: 129 | name: googleapis_auth 130 | url: "https://pub.flutter-io.cn" 131 | source: hosted 132 | version: "0.2.12+1" 133 | grpc: 134 | dependency: transitive 135 | description: 136 | name: grpc 137 | url: "https://pub.flutter-io.cn" 138 | source: hosted 139 | version: "1.0.3" 140 | http: 141 | dependency: "direct main" 142 | description: 143 | name: http 144 | url: "https://pub.flutter-io.cn" 145 | source: hosted 146 | version: "0.12.2" 147 | http2: 148 | dependency: transitive 149 | description: 150 | name: http2 151 | url: "https://pub.flutter-io.cn" 152 | source: hosted 153 | version: "1.0.1" 154 | http_parser: 155 | dependency: transitive 156 | description: 157 | name: http_parser 158 | url: "https://pub.flutter-io.cn" 159 | source: hosted 160 | version: "3.1.4" 161 | intl: 162 | dependency: transitive 163 | description: 164 | name: intl 165 | url: "https://pub.flutter-io.cn" 166 | source: hosted 167 | version: "0.16.1" 168 | js: 169 | dependency: transitive 170 | description: 171 | name: js 172 | url: "https://pub.flutter-io.cn" 173 | source: hosted 174 | version: "0.6.3-nullsafety.3" 175 | matcher: 176 | dependency: transitive 177 | description: 178 | name: matcher 179 | url: "https://pub.flutter-io.cn" 180 | source: hosted 181 | version: "0.12.10-nullsafety.3" 182 | meta: 183 | dependency: transitive 184 | description: 185 | name: meta 186 | url: "https://pub.flutter-io.cn" 187 | source: hosted 188 | version: "1.3.0-nullsafety.6" 189 | openiothub_api: 190 | dependency: transitive 191 | description: 192 | path: "." 193 | ref: HEAD 194 | resolved-ref: "938f2d48404def4279fce0ccc3ccc92319d62ea0" 195 | url: "https://github.com/OpenIoTHub/openiothub_api" 196 | source: git 197 | version: "0.0.1" 198 | openiothub_constants: 199 | dependency: transitive 200 | description: 201 | path: "." 202 | ref: HEAD 203 | resolved-ref: "243253b00fcb091995bb123e41c65497c2d1a6dd" 204 | url: "https://github.com/OpenIoTHub/openiothub_constants" 205 | source: git 206 | version: "0.0.1" 207 | openiothub_grpc_api: 208 | dependency: transitive 209 | description: 210 | path: "." 211 | ref: HEAD 212 | resolved-ref: "1a094d3b8d1ad4c0c71627081599bf4d4e7e9191" 213 | url: "https://github.com/OpenIoTHub/openiothub-grpc-api" 214 | source: git 215 | version: "1.0.0" 216 | openiothub_plugin: 217 | dependency: "direct main" 218 | description: 219 | path: "." 220 | ref: HEAD 221 | resolved-ref: "22c69435aea9253b17c4e68d5d7e7baacd30d3ca" 222 | url: "https://github.com/OpenIoTHub/openiothub_plugin" 223 | source: git 224 | version: "0.0.1" 225 | path: 226 | dependency: transitive 227 | description: 228 | name: path 229 | url: "https://pub.flutter-io.cn" 230 | source: hosted 231 | version: "1.8.0-nullsafety.3" 232 | path_provider_linux: 233 | dependency: transitive 234 | description: 235 | name: path_provider_linux 236 | url: "https://pub.flutter-io.cn" 237 | source: hosted 238 | version: "0.0.1+2" 239 | path_provider_platform_interface: 240 | dependency: transitive 241 | description: 242 | name: path_provider_platform_interface 243 | url: "https://pub.flutter-io.cn" 244 | source: hosted 245 | version: "1.0.4" 246 | path_provider_windows: 247 | dependency: transitive 248 | description: 249 | name: path_provider_windows 250 | url: "https://pub.flutter-io.cn" 251 | source: hosted 252 | version: "0.0.4+3" 253 | pedantic: 254 | dependency: transitive 255 | description: 256 | name: pedantic 257 | url: "https://pub.flutter-io.cn" 258 | source: hosted 259 | version: "1.9.2" 260 | petitparser: 261 | dependency: transitive 262 | description: 263 | name: petitparser 264 | url: "https://pub.flutter-io.cn" 265 | source: hosted 266 | version: "3.1.0" 267 | platform: 268 | dependency: transitive 269 | description: 270 | name: platform 271 | url: "https://pub.flutter-io.cn" 272 | source: hosted 273 | version: "2.2.1" 274 | plugin_platform_interface: 275 | dependency: transitive 276 | description: 277 | name: plugin_platform_interface 278 | url: "https://pub.flutter-io.cn" 279 | source: hosted 280 | version: "1.0.3" 281 | process: 282 | dependency: transitive 283 | description: 284 | name: process 285 | url: "https://pub.flutter-io.cn" 286 | source: hosted 287 | version: "3.0.13" 288 | protobuf: 289 | dependency: transitive 290 | description: 291 | name: protobuf 292 | url: "https://pub.flutter-io.cn" 293 | source: hosted 294 | version: "1.1.0" 295 | retry: 296 | dependency: transitive 297 | description: 298 | name: retry 299 | url: "https://pub.flutter-io.cn" 300 | source: hosted 301 | version: "2.0.0" 302 | server_grpc_api: 303 | dependency: transitive 304 | description: 305 | path: "." 306 | ref: HEAD 307 | resolved-ref: "145d1d08bb8c631f29b89237ffb52c5513456aee" 308 | url: "https://github.com/OpenIoTHub/server-grpc-api" 309 | source: git 310 | version: "1.0.0" 311 | shared_preferences: 312 | dependency: transitive 313 | description: 314 | name: shared_preferences 315 | url: "https://pub.flutter-io.cn" 316 | source: hosted 317 | version: "0.5.12+4" 318 | shared_preferences_linux: 319 | dependency: transitive 320 | description: 321 | name: shared_preferences_linux 322 | url: "https://pub.flutter-io.cn" 323 | source: hosted 324 | version: "0.0.2+4" 325 | shared_preferences_macos: 326 | dependency: transitive 327 | description: 328 | name: shared_preferences_macos 329 | url: "https://pub.flutter-io.cn" 330 | source: hosted 331 | version: "0.0.1+11" 332 | shared_preferences_platform_interface: 333 | dependency: transitive 334 | description: 335 | name: shared_preferences_platform_interface 336 | url: "https://pub.flutter-io.cn" 337 | source: hosted 338 | version: "1.0.4" 339 | shared_preferences_web: 340 | dependency: transitive 341 | description: 342 | name: shared_preferences_web 343 | url: "https://pub.flutter-io.cn" 344 | source: hosted 345 | version: "0.1.2+7" 346 | shared_preferences_windows: 347 | dependency: transitive 348 | description: 349 | name: shared_preferences_windows 350 | url: "https://pub.flutter-io.cn" 351 | source: hosted 352 | version: "0.0.2+2" 353 | sky_engine: 354 | dependency: transitive 355 | description: flutter 356 | source: sdk 357 | version: "0.0.99" 358 | source_span: 359 | dependency: transitive 360 | description: 361 | name: source_span 362 | url: "https://pub.flutter-io.cn" 363 | source: hosted 364 | version: "1.8.0-nullsafety.4" 365 | stack_trace: 366 | dependency: transitive 367 | description: 368 | name: stack_trace 369 | url: "https://pub.flutter-io.cn" 370 | source: hosted 371 | version: "1.10.0-nullsafety.6" 372 | stream_channel: 373 | dependency: transitive 374 | description: 375 | name: stream_channel 376 | url: "https://pub.flutter-io.cn" 377 | source: hosted 378 | version: "2.1.0-nullsafety.3" 379 | string_scanner: 380 | dependency: transitive 381 | description: 382 | name: string_scanner 383 | url: "https://pub.flutter-io.cn" 384 | source: hosted 385 | version: "1.1.0-nullsafety.3" 386 | term_glyph: 387 | dependency: transitive 388 | description: 389 | name: term_glyph 390 | url: "https://pub.flutter-io.cn" 391 | source: hosted 392 | version: "1.2.0-nullsafety.3" 393 | test_api: 394 | dependency: transitive 395 | description: 396 | name: test_api 397 | url: "https://pub.flutter-io.cn" 398 | source: hosted 399 | version: "0.2.19-nullsafety.6" 400 | typed_data: 401 | dependency: transitive 402 | description: 403 | name: typed_data 404 | url: "https://pub.flutter-io.cn" 405 | source: hosted 406 | version: "1.3.0-nullsafety.5" 407 | url_launcher: 408 | dependency: transitive 409 | description: 410 | name: url_launcher 411 | url: "https://pub.flutter-io.cn" 412 | source: hosted 413 | version: "5.7.10" 414 | url_launcher_linux: 415 | dependency: transitive 416 | description: 417 | name: url_launcher_linux 418 | url: "https://pub.flutter-io.cn" 419 | source: hosted 420 | version: "0.0.1+4" 421 | url_launcher_macos: 422 | dependency: transitive 423 | description: 424 | name: url_launcher_macos 425 | url: "https://pub.flutter-io.cn" 426 | source: hosted 427 | version: "0.0.1+9" 428 | url_launcher_platform_interface: 429 | dependency: transitive 430 | description: 431 | name: url_launcher_platform_interface 432 | url: "https://pub.flutter-io.cn" 433 | source: hosted 434 | version: "1.0.9" 435 | url_launcher_web: 436 | dependency: transitive 437 | description: 438 | name: url_launcher_web 439 | url: "https://pub.flutter-io.cn" 440 | source: hosted 441 | version: "0.1.5+1" 442 | url_launcher_windows: 443 | dependency: transitive 444 | description: 445 | name: url_launcher_windows 446 | url: "https://pub.flutter-io.cn" 447 | source: hosted 448 | version: "0.0.1+3" 449 | uuid: 450 | dependency: transitive 451 | description: 452 | name: uuid 453 | url: "https://pub.flutter-io.cn" 454 | source: hosted 455 | version: "2.2.2" 456 | vector_math: 457 | dependency: transitive 458 | description: 459 | name: vector_math 460 | url: "https://pub.flutter-io.cn" 461 | source: hosted 462 | version: "2.1.0-nullsafety.5" 463 | webdav: 464 | dependency: transitive 465 | description: 466 | path: "." 467 | ref: HEAD 468 | resolved-ref: b57fdab0fa896d104141f284d529a356292ada57 469 | url: "https://github.com/OpenIoTHub/dart-webdav" 470 | source: git 471 | version: "1.0.6-dev" 472 | webview_flutter: 473 | dependency: transitive 474 | description: 475 | name: webview_flutter 476 | url: "https://pub.flutter-io.cn" 477 | source: hosted 478 | version: "0.3.24" 479 | win32: 480 | dependency: transitive 481 | description: 482 | name: win32 483 | url: "https://pub.flutter-io.cn" 484 | source: hosted 485 | version: "1.7.4" 486 | xdg_directories: 487 | dependency: transitive 488 | description: 489 | name: xdg_directories 490 | url: "https://pub.flutter-io.cn" 491 | source: hosted 492 | version: "0.1.2" 493 | xml: 494 | dependency: transitive 495 | description: 496 | name: xml 497 | url: "https://pub.flutter-io.cn" 498 | source: hosted 499 | version: "3.7.0" 500 | sdks: 501 | dart: ">=2.12.0-0.0 <3.0.0" 502 | flutter: ">=1.22.0" 503 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: GateWay 2 | description: OpenIoTHub Gateway 3 | 4 | # The following defines the version and build number for your application. 5 | # A version number is three numbers separated by dots, like 1.2.43 6 | # followed by an optional build number separated by a +. 7 | # Both the version and the builder number may be overridden in flutter 8 | # build by specifying --build-name and --build-number, respectively. 9 | # In Android, build-name is used as versionName while build-number used as versionCode. 10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 12 | # Read more about iOS versioning at 13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 14 | version: 1.0.0+1 15 | author: Farry 16 | homepage: https://github.com/OpenIoTHub 17 | 18 | environment: 19 | sdk: ">=2.1.0 <3.0.0" 20 | 21 | dependencies: 22 | flutter: 23 | sdk: flutter 24 | 25 | # The following adds the Cupertino Icons font to your application. 26 | # Use with the CupertinoIcons class for iOS style icons. 27 | cupertino_icons: ^0.1.2 28 | http: ^0.12.0+2 29 | openiothub_plugin: 30 | git: https://github.com/OpenIoTHub/openiothub_plugin 31 | # path: ../modules 32 | 33 | dev_dependencies: 34 | flutter_test: 35 | sdk: flutter 36 | 37 | 38 | # For information on the generic Dart part of this file, see the 39 | # following page: https://www.dartlang.org/tools/pub/pubspec 40 | 41 | # The following section is specific to Flutter. 42 | flutter: 43 | 44 | # The following line ensures that the Material Icons font is 45 | # included with your application, so that you can use the icons in 46 | # the material Icons class. 47 | uses-material-design: true 48 | 49 | # To add assets to your application, add an assets section, like this: 50 | # assets: 51 | # - images/a_dot_burr.jpeg 52 | # - images/a_dot_ham.jpeg 53 | 54 | # An image asset can refer to one or more resolution-specific "variants", see 55 | # https://flutter.io/assets-and-images/#resolution-aware. 56 | 57 | # For details regarding adding assets from package dependencies, see 58 | # https://flutter.io/assets-and-images/#from-packages 59 | 60 | # To add custom fonts to your application, add a fonts section here, 61 | # in this "flutter" section. Each entry in this list should have a 62 | # "family" key with the font family name, and a "fonts" key with a 63 | # list giving the asset and other descriptors for the font. For 64 | # example: 65 | # fonts: 66 | # - family: Schyler 67 | # fonts: 68 | # - asset: fonts/Schyler-Regular.ttf 69 | # - asset: fonts/Schyler-Italic.ttf 70 | # style: italic 71 | # - family: Trajan Pro 72 | # fonts: 73 | # - asset: fonts/TrajanPro.ttf 74 | # - asset: fonts/TrajanPro_Bold.ttf 75 | # weight: 700 76 | # 77 | # For details regarding fonts from package dependencies, 78 | # see https://flutter.io/custom-fonts/#from-packages 79 | -------------------------------------------------------------------------------- /secrets.tar.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OpenIoTHub/GateWay/4b61aad9ada64154bccc4e70456f5d202652a425/secrets.tar.enc -------------------------------------------------------------------------------- /tarsign.sh: -------------------------------------------------------------------------------- 1 | tar cvf secrets.tar key.jks key.properties -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:client/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | -------------------------------------------------------------------------------- /untarsign.sh: -------------------------------------------------------------------------------- 1 | tar xvf secrets.tar -C ./android --------------------------------------------------------------------------------