配置
基本配置成功是這樣的。
可以看到其實需四部分東西:
1、二進制,我們使用穩定版1.22.x。具體參照 https://flutter.cn/docs/get-started/install/macos
2.工具鏈,android和iOS兩個系統的工具鏈
3.IDE Android Studio及flutter/dart插件
4.調試模擬器
Mac中最常見的問題就是和android相關的
一、flutter和dart的插件找不到,明明已經下載了,就是報錯
這是因為Android Studio (4.1) 的插件位置換成了
~/Library/Application\ Support/Google/AndroidStudio4.1/plugins,而老版本的位置為~/Library/Application\ Support/AndroidStudio4.1
需要執行一個軟鏈
ln -s ~/Library/Application\ Support/Google/AndroidStudio4.1/plugins ~/Library/Application\ Support/AndroidStudio4.1
二、android sdk的版本和platform tool的版本提示錯誤
Flutter requires Android SDK 29 and the Android BuildTools 28.0.3 To update the Android SDK visit
這個有兩個可能的原因:
1、確實沒有安裝android sdk和platform-tool的包
切記,要勾選show package details選項框,才會顯示出所有版本號。
2、PATH沒有配置對
android studio下載的路徑是Android SDK location對應的路徑,而flutter doctor 檢測的路徑是環境變量PATH,此二者務必對應上!
這是flutter doctor遇到的兩個主要坑
三、運行問題
Android問題
1.android跑不起來,Gradle threw an error while trying to update itself.
Launching lib\main.dart on Android SDK built for x86 in debug mode...
Running Gradle task 'assembleDebug'...
Exception in thread "main" java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:225)
at java.util.zip.ZipFile.<init>(ZipFile.java:155)
at java.util.zip.ZipFile.<init>(ZipFile.java:169)
at org.gradle.wrapper.Install.unzip(Install.java:214)
at org.gradle.wrapper.Install.access$600(Install.java:27)
at org.gradle.wrapper.Install$1.call(Install.java:74)
at org.gradle.wrapper.Install$1.call(Install.java:48)
at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
at org.gradle.wrapper.Install.createDist(Install.java:48)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
[!] Gradle threw an error while trying to update itself. Retrying the update...
這個的原因是gradle的版本問題,需要把系統中的gradle版本刪掉,然后run的時候自動下載一個就可以了
/Users/用戶名/.gradle/wrapper/dists/gradle-5.6.2-all
或者也可以下載文件放到這個目錄中,把之前的替代了
https://downloads.gradle-dn.com/distributions/gradle-5.6.2-all.zip
2、安卓跑不起來, io.flutter問題
Execution failed for task ':app:checkDebugAarMetadata'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
> Could not resolve io.flutter:arm64_v8a_debug:1.0.0-920a33a0fc3a1d9913d889a77593161e175f1863.
Required by:
project :app
> Could not resolve io.flutter:arm64_v8a_debug:1.0.0-920a33a0fc3a1d9913d889a77593161e175f1863.
> Could not get resource 'https://dl.google.com/dl/android/maven2/io/flutter/arm64_v8a_debug/1.0.0-920a33a0fc3a1d9913d889a77593161e175f1863/arm64_v8a_debug-1.0.0-920a33a0fc3a1d9913d889a77593161e175f1863.pom'.
> Could not GET 'https://dl.google.com/dl/android/maven2/io/flutter/arm64_v8a_debug/1.0.0-920a33a0fc3a1d9913d889a77593161e175f1863/arm64_v8a_debug-1.0.0-920a33a0fc3a1d9913d889a77593161e175f1863.pom'.
> Connect to dl.google.com:443 [dl.google.com/203.208.50.97] failed: Read timed out
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
#0 throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
#1 RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:625:7)
<asynchronous suspension>
#2 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1157:12)
<asynchronous suspension>
#3 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1009:27)
<asynchronous suspension>
#4 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#5 AppContext.run (package:flutter_tools/src/base/context.dart:149:12)
<asynchronous suspension>
#6 CommandRunner.runCommand (package:args/command_runner.dart:197:13)
<asynchronous suspension>
#7 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:278:9)
<asynchronous suspension>
#8 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#9 AppContext.run (package:flutter_tools/src/base/context.dart:149:12)
<asynchronous suspension>
#10 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:234:5)
<asynchronous suspension>
#11 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:64:9)
<asynchronous suspension>
#12 run.<anonymous closure> (package:flutter_tools/runner.dart:62:12)
<asynchronous suspension>
#13 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
<asynchronous suspension>
#14 AppContext.run (package:flutter_tools/src/base/context.dart:149:12)
<asynchronous suspension>
#15 runInContext (package:flutter_tools/src/context_runner.dart:73:10)
<asynchronous suspension>
#16 main (package:flutter_tools/executable.dart:90:3)
<asynchronous suspension>
這些跑不起來真機或模擬器的case,報一些io.flutter.xxx的問題,基本是因為倉庫源下不下來。
解決方法:
1、在android/build.gradle中將google() jcenter()刪掉,換成aliyun的倉庫,外加一個download.flutter.io
2、在$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"中同樣
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven { url 'http://download.flutter.io' }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven { url 'http://download.flutter.io' }
}
}
buildscript {
repositories {
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven { url 'http://download.flutter.io' }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
}
}
安卓gradle插件和版本對應關系
插件版本 | 所需Gradle版本 |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.5.0 | 2.2.1 - 2.13 |
2.0.0 - 2.1.2 | 2.10 - 2.13 |
2.1.3 - 2.2.3 | 2.14.1+ |
2.3.0+ 3.3+ | |
3.0.0+ 4.1+ | |
3.1.0+ 4.4+ | |
3.2.0 - 3.2.1 | 4.6+ |
3.3.0 - 3.3.3 | 4.10.1+ |
3.4.0 - 3.4.3 | 5.1.1+ |
3.5.0 - 3.5.4 | 5.4.1+ |
3.6.0 - 3.6.4 | 5.6.4+ |
4.0.0+ | 6.1.1+ |
4.1.0+ | 6.5+ |
3.gradle問題
gradle是個人最深惡痛絕的一個東西,先吐為快!
首先他有gradle版本和插件的配套問題,和上面的圖標一致。其次它自身很大,更新頻繁,向下兼容性差,需要翻墻。
好了,言歸正傳。
每次編譯都下載gradle-x.x-all.zip gradle-x.x.zip。每次都下不下來,等的想砸電腦。
解決方法:
1、環境變量里配置
export GRADLE_HOME=/usr/local/Cellar/gradle/wrapper/dists/gradle-6.1.1-all
export PATH=$PATH:${GRADLE_HOME}/bin
2、gradle-wrapper.properties中修改distributionUrl為file:///usr/local/Cellar/gradle/wrapper/dists/gradle-6.8.1-all.zip
distributionUrl=file:///usr/local/Cellar/gradle/wrapper/dists/gradle-6.8.1-all.zip
這個文件是
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https://services.gradle.org/distributions/gradle-6.1.1-all.zip
distributionUrl=file:///usr/local/Cellar/gradle/wrapper/dists/gradle-6.8.1-all.zip
GRADLE_USER_HOME對應的是preferences里Build,Execution,Deployment中Gradle下的General settings下的Gradle user home。
distributionPath對應的是這個目錄下的某一個目錄。
zipStoreBase和zipStorePath顧名思義就是zip包的存儲位置
distributionUrl是zip包的來源,默認是從https://services.gradle.org/distributions拿,我們改成從一個本地目錄拿。
修改完之后,執行flutter clean flutter run --verbose即可看到不在downloading.
緊接著,你會遇到另一個問題,
卡在Starting a Gradle Daemon (subsequent builds will be faster)
解決方法:
切換網絡,直到它開始執行。時間會長一些。
[+19195 ms] > Task :app:preBuild UP-TO-DATE
[ ] > Task :app:preDebugBuild UP-TO-DATE
[+1997 ms] > Task :flutter:compileFlutterBuildDebug
[ ] [ +115 ms] executing: [/Users/hyf/develop/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[ ] [ +69 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[ ] [ ] 5aa6cba31d8a779ea11d2f5d37e39d3502a26bde
[ ] [ ] executing: [/Users/hyf/develop/flutter/] git tag --points-at 5aa6cba31d8a779ea11d2f5d37e39d3502a26bde
[ ] [ +85 ms] Exit code 0 from: git tag --points-at 5aa6cba31d8a779ea11d2f5d37e39d3502a26bde
[ ] [ +2 ms] executing: [/Users/hyf/develop/flutter/] git describe --match *.*.* --long --tags 5aa6cba31d8a779ea11d2f5d37e39d3502a26bde
[ ] [ +70 ms] Exit code 0 from: git describe --match *.*.* --long --tags 5aa6cba31d8a779ea11d2f5d37e39d3502a26bde
[ ] [ ] 1.26.0-12.0.pre-95-g5aa6cba31d
[ ] [ +64 ms] executing: [/Users/hyf/develop/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[ ] [ +16 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[ ] [ ] origin/master
[ ] [ ] executing: [/Users/hyf/develop/flutter/] git ls-remote --get-url origin
[ ] [ +14 ms] Exit code 0 from: git ls-remote --get-url origin
[ ] [ ] https://github.com/flutter/flutter.git
[ ] [ +68 ms] executing: [/Users/hyf/develop/flutter/] git rev-parse --abbrev-ref HEAD
[ ] [ +16 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[ ] [ ] master
[ ] [ +52 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[ ] [ +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ ] [ +75 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[ ] [ ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[ ] [ ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[ ] [ ] Artifact Instance of 'PubDependencies' is not required, skipping update.
[ ] [ +88 ms] Initializing file store
[ ] [ +18 ms] Skipping target: gen_localizations
[ ] [ +8 ms] kernel_snapshot: Starting due to {}
[ ] [ +18 ms] /Users/hyf/develop/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev
/Users/hyf/develop/flutter/bin/cache/artifacts/engine/darwin-x64/frontend_server.dart.snapshot --sdk-root
/Users/hyf/develop/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk/ --target=flutter --no-print-incremental-dependencies
-DFLUTTER_WEB_AUTO_DETECT=true -Ddart.vm.profile=false -Ddart.vm.product=false --enable-asserts --track-widget-creation --no-link-platform --packages
/Users/hyf/develop/ios/palfish/phonics/ai_app/.dart_tool/package_config.json --output-dill
/Users/hyf/develop/ios/palfish/phonics/ai_app/.dart_tool/flutter_build/0817f209a07422e16cc94a150e08c67e/app.dill --depfile
/Users/hyf/develop/ios/palfish/phonics/ai_app/.dart_tool/flutter_build/0817f209a07422e16cc94a150e08c67e/kernel_snapshot.d package:ai_app/main.dart
[+8989 ms] [+9586 ms] kernel_snapshot: Complete
[ +400 ms] [ +391 ms] debug_android_application: Starting due to {}
[ +297 ms] [ +297 ms] debug_android_application: Complete
[ +502 ms] [ +505 ms] Persisting file store
[ ] [ +7 ms] Done persisting file store
[ ] [ +5 ms] build succeeded.
[ ] [ +12 ms] "flutter assemble" took 11,038ms.
[ ] [ +3 ms] ensureAnalyticsSent: 0ms
[ ] [ +1 ms] Running shutdown hooks
[ ] [ ] Shutdown hooks complete
[ ] [ ] exiting with code 0
[ +197 ms] > Task :flutter:packLibsflutterBuildDebug
[ ] > Task :flutter:preBuild UP-TO-DATE
[ ] > Task :flutter:preDebugBuild UP-TO-DATE
[ ] > Task :flutter:compileDebugAidl NO-SOURCE
[ ] > Task :app:compileDebugAidl NO-SOURCE
[ ] > Task :flutter:packageDebugRenderscript NO-SOURCE
[ ] > Task :app:compileDebugRenderscript NO-SOURCE
[ ] > Task :app:generateDebugBuildConfig
[ +99 ms] > Task :app:generateDebugResValues
[ ] > Task :app:javaPreCompileDebug
[ ] > Task :flutter:writeDebugAarMetadata
[ ] > Task :app:generateDebugResources
[ ] > Task :flutter:compileDebugRenderscript NO-SOURCE
[ ] > Task :flutter:generateDebugResValues
[ ] > Task :flutter:generateDebugResources
[ ] > Task :flutter:packageDebugResources
[+29996 ms] > Task :app:mergeDebugResources
[+18599 ms] > Task :app:createDebugCompatibleScreenManifests
[ ] > Task :app:extractDeepLinksDebug
[ ] > Task :flutter:extractDeepLinksDebug
[ +99 ms] > Task :flutter:compileDebugLibraryResources
[ +101 ms] > Task :flutter:processDebugManifest
[ +502 ms] > Task :flutter:parseDebugLocalResources
[ ] > Task :app:checkDebugAarMetadata
[ ] > Task :flutter:generateDebugBuildConfig
[ ] > Task :flutter:javaPreCompileDebug
[ ] > Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
[ ] > Task :app:mergeDebugShaders
[ ] > Task :app:compileDebugShaders NO-SOURCE
[ ] > Task :app:generateDebugAssets UP-TO-DATE
[ ] > Task :flutter:cleanPackageDebugAssets UP-TO-DATE
[ ] > Task :flutter:mergeDebugShaders
[ ] > Task :flutter:compileDebugShaders NO-SOURCE
[ ] > Task :flutter:generateDebugAssets UP-TO-DATE
[ ] > Task :flutter:packageDebugAssets
[ +295 ms] > Task :flutter:copyFlutterAssetsDebug
[ +300 ms] > Task :app:mergeDebugAssets
[ ] > Task :app:processDebugJavaRes NO-SOURCE
[ ] > Task :flutter:processDebugJavaRes NO-SOURCE
[ ] > Task :flutter:bundleLibResDebug NO-SOURCE
[ +600 ms] > Task :app:compressDebugAssets
[+14699 ms] > Task :app:mergeDebugJavaResource
[ +98 ms] > Task :app:checkDebugDuplicateClasses
[ +901 ms] > Task :app:mergeDebugJniLibFolders
[ ] > Task :flutter:mergeDebugJniLibFolders
[ ] > Task :flutter:mergeDebugNativeLibs NO-SOURCE
[ ] > Task :flutter:stripDebugDebugSymbols NO-SOURCE
[ ] > Task :flutter:copyDebugJniLibsProjectOnly
[ +99 ms] > Task :app:validateSigningDebug
[ ] > Task :flutter:copyDebugJniLibsProjectAndLocalJars
[ ] > Task :flutter:prepareLintJarForPublish
[ ] > Task :app:desugarDebugFileDependencies
[ ] > Task :flutter:mergeDebugJavaResource
[ +99 ms] > Task :app:processDebugMainManifest
[ ] [androidx.vectordrawable:vectordrawable-animated:1.0.0]
/Users/hyf/.gradle/caches/transforms-3/a6a0bb9725429dd49f389c7ed2e63cc4/transformed/vectordrawable-animated-1.0.0/AndroidManifest.xml Warning:
[ ] Package name 'androidx.vectordrawable' used in: androidx.vectordrawable:vectordrawable-animated:1.0.0, androidx.vectordrawable:vectordrawable:1.0.1.
[ +399 ms] > Task :app:processDebugManifest
[ +100 ms] > Task :flutter:generateDebugRFile
[+2699 ms] > Task :app:mergeDebugNativeLibs
[+3699 ms] > Task :app:stripDebugDebugSymbols
[ ] Unable to strip the following libraries, packaging them as they are: libflutter.so.
[ +101 ms] > Task :app:mergeExtDexDebug
[+1198 ms] > Task :flutter:compileDebugJavaWithJavac
[ ] > Task :flutter:bundleLibRuntimeToJarDebug
[ ] > Task :flutter:bundleLibCompileToJarDebug
[+22200 ms] > Task :app:processDebugManifestForPackage
[+7799 ms] > Task :flutter:extractDebugAnnotations
執行到這里,又卡住了!
解決方法:
別急,換臺設備 ,或者換成模擬器,或者模擬器換設備。切換網絡等等。
出現下面的日志就算完全成功了!
[+5201 ms] > Task :flutter:extractDebugAnnotations
[ +97 ms] > Task :app:mergeExtDexDebug UP-TO-DATE
[ +101 ms] > Task :app:stripDebugDebugSymbols
[ ] > Task :flutter:mergeDebugGeneratedProguardFiles
[ ] > Task :flutter:mergeDebugConsumerProguardFiles
[ ] > Task :flutter:prepareLintJarForPublish UP-TO-DATE
[ ] > Task :flutter:mergeDebugJavaResource UP-TO-DATE
[ ] > Task :flutter:syncDebugLibJars
[+1899 ms] > Task :flutter:bundleDebugAar
[ ] > Task :flutter:compileDebugSources UP-TO-DATE
[ ] > Task :flutter:assembleDebug
[ ] > Task :app:processDebugManifestForPackage
[+1399 ms] > Task :app:processDebugResources
[ +799 ms] > Task :app:compileDebugJavaWithJavac
[ ] > Task :app:compileDebugSources
[ +400 ms] > Task :app:dexBuilderDebug
[ +999 ms] > Task :app:mergeDexDebug
[+1501 ms] > Task :app:packageDebug
[ ] > Task :app:assembleDebug
[ ] Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
[ ] Use '--warning-mode all' to show the individual deprecation warnings.
[ ] See https://docs.gradle.org/6.8.1/userguide/command_line_interface.html#sec:command_line_warnings
[ ] BUILD SUCCESSFUL in 18s
[ ] 55 actionable tasks: 20 executed, 35 up-to-date
[ +403 ms] Running Gradle task 'assembleDebug'... (completed in 19.0s)
[ +132 ms] calculateSha: LocalDirectory: '/Users/hyf/develop/ios/palfish/phonics/ai_app/build/host/outputs/apk'/app.apk
[ +15 ms] calculateSha: reading file took 14us
[ +407 ms] calculateSha: computing sha took 407us
[ +2 ms] ? Built build/host/outputs/apk/debug/app-debug.apk.
[ +6 ms] executing: /Users/hyf/develop_tool/android_sdk/sdk/build-tools/30.0.3/aapt dump xmltree
/Users/hyf/develop/ios/palfish/phonics/ai_app/build/host/outputs/apk/app.apk AndroidManifest.xml
[ +85 ms] Exit code 0 from: /Users/hyf/develop_tool/android_sdk/sdk/build-tools/30.0.3/aapt dump xmltree
/Users/hyf/develop/ios/palfish/phonics/ai_app/build/host/outputs/apk/app.apk AndroidManifest.xml
[ ] N: android=http://schemas.android.com/apk/res/android
E: manifest (line=2)
A: android:versionCode(0x0101021b)=(type 0x10)0x1
A: android:versionName(0x0101021c)="1.0" (Raw: "1.0")
A: android:compileSdkVersion(0x01010572)=(type 0x10)0x1e
A: android:compileSdkVersionCodename(0x01010573)="11" (Raw: "11")
A: package="com.duwo.ai.host" (Raw: "com.duwo.ai.host")
A: platformBuildVersionCode=(type 0x10)0x1e
A: platformBuildVersionName=(type 0x10)0xb
E: uses-sdk (line=7)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0x10
A: android:targetSdkVersion(0x01010270)=(type 0x10)0x1e
E: uses-permission (line=16)
A: android:name(0x01010003)="android.permission.INTERNET" (Raw: "android.permission.INTERNET")
E: application (line=18)
A: android:label(0x01010001)="ai_app" (Raw: "ai_app")
A: android:icon(0x01010002)=@0x7f0a0000
A: android:debuggable(0x0101000f)=(type 0x12)0xffffffff
A: android:appComponentFactory(0x0101057a)="androidx.core.app.CoreComponentFactory" (Raw: "androidx.core.app.CoreComponentFactory")
E: activity (line=23)
A: android:theme(0x01010000)=@0x7f0c00a0
A: android:name(0x01010003)="com.duwo.ai.host.MainActivity" (Raw: "com.duwo.ai.host.MainActivity")
A: android:launchMode(0x0101001d)=(type 0x10)0x1
A: android:configChanges(0x0101001f)=(type 0x11)0x40003fb4
A: android:windowSoftInputMode(0x0101022b)=(type 0x11)0x10
A: android:hardwareAccelerated(0x010102d3)=(type 0x12)0xffffffff
E: meta-data (line=37)
A: android:name(0x01010003)="io.flutter.app.android.SplashScreenUntilFirstFrame" (Raw: "io.flutter.app.android.SplashScreenUntilFirstFrame")
A: android:value(0x01010024)=(type 0x12)0xffffffff
E: intent-filter (line=41)
E: action (line=42)
A: android:name(0x01010003)="android.intent.action.MAIN" (Raw: "android.intent.action.MAIN")
E: category (line=44)
A: android:name(0x01010003)="android.intent.category.LAUNCHER" (Raw: "android.intent.category.LAUNCHER")
E: meta-data (line=51)
A: android:name(0x01010003)="flutterEmbedding" (Raw: "flutterEmbedding")
A: android:value(0x01010024)=(type 0x10)0x2
E: meta-data (line=54)
A: android:name(0x01010003)="flutterProjectType" (Raw: "flutterProjectType")
A: android:value(0x01010024)="module" (Raw: "module")
[ +6 ms] Stopping app 'app.apk' on Android SDK built for x86.
[ ] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 shell am force-stop com.duwo.ai.host
[ +77 ms] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 shell pm list packages com.duwo.ai.host
[ +55 ms] Installing APK.
[ +1 ms] Installing build/host/outputs/apk/app.apk...
[ ] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 install -t -r
/Users/hyf/develop/ios/palfish/phonics/ai_app/build/host/outputs/apk/app.apk
[+2677 ms] Success
[ +1 ms] Installing build/host/outputs/apk/app.apk... (completed in 2,678ms)
[ +1 ms] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 shell echo -n f68556d6dff8262529ab8d91f5ab6ced4bcbd98b >
/data/local/tmp/sky.com.duwo.ai.host.sha1
[ +44 ms] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 shell -x logcat -v time -t 1
[ +158 ms] --------- beginning of system
01-29 17:08:09.747 W/ActivityManager( 2020): Slow operation: 122ms so far, now at startProcess: asking zygote to start proc
[ +6 ms] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 shell am start -a android.intent.action.RUN -f 0x20000000 --ez
enable-background-compilation true --ez enable-dart-profiling true --ez enable-checked-mode true --ez verify-entry-points true
com.duwo.ai.host/com.duwo.ai.host.MainActivity
[ +300 ms] Starting: Intent { act=android.intent.action.RUN flg=0x20000000 cmp=com.duwo.ai.host/.MainActivity (has extras) }
[ ] Waiting for observatory port to be available...
[+2715 ms] Observatory URL on device: http://127.0.0.1:34755/tPV1ZgZA--U=/
[ ] executing: /Users/hyf/develop_tool/android_sdk/sdk/platform-tools/adb -s emulator-5554 forward tcp:0 tcp:34755
[ +12 ms] 61444
[ ] Forwarded host port 61444 to device port 34755 for Observatory
[ +3 ms] Caching compiled dill
[ +78 ms] Connecting to service protocol: http://127.0.0.1:61444/tPV1ZgZA--U=/
[ +320 ms] Launching a Dart Developer Service (DDS) instance at http://127.0.0.1:0, connecting to VM service at http://127.0.0.1:61444/tPV1ZgZA--U=/.
[ +461 ms] DDS is listening at http://127.0.0.1:61450/95Jbzaefkko=/.
[ +54 ms] Successfully connected to service protocol: http://127.0.0.1:61444/tPV1ZgZA--U=/
[ +697 ms] DevFS: Creating new filesystem on the device (null)
[ +91 ms] DevFS: Created new filesystem on the device (file:///data/user/0/com.duwo.ai.host/code_cache/ai_appOWTMQQ/ai_app/)
[ +2 ms] Updating assets
[ +103 ms] Syncing files to device Android SDK built for x86...
[ +2 ms] <- reset
[ ] Compiling dart to kernel with 0 updated files
[ +3 ms] <- recompile package:ai_app/main.dart 367dbbe2-ccc9-4d87-a27f-c33d3de374ef
[ ] <- 367dbbe2-ccc9-4d87-a27f-c33d3de374ef
[ +141 ms] Updating files.
[ ] DevFS: Sync finished
[ ] Syncing files to device Android SDK built for x86... (completed in 147ms)
[ ] Synced 0.0MB.
[ +1 ms] <- accept
[ +14 ms] Connected to _flutterView/0xd27a2c10.
Starting a Gradle Daemon, 2 busy Daemons could not be reused, use --status for details
關掉精靈進程可以用 gradle stop
他會告訴你 No Gradle daemons are running.
但是仍然會卡住。
Starting a Gradle Daemon, 2 stopped Daemons could not be reused, use --status for details
gradle --status
PID STATUS INFO
61498 IDLE 6.8.1
59750 STOPPED (stop command received)
57879 STOPPED (by user or operating system)
卡住的原因是同步的,需要在gradle全局配置中設置為支持并行
解決方法:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
在如上目錄中找到gradle.properties(沒有就創建一個)
加上下面兩句
org.gradle.daemon=true
org.gradle.parallel=true
iOS問題
1.iOS真機無法打開“iproxy”,因為無法驗證開發者。
無法打開“ idevice_id”,因為無法驗證開發者。
無法打開“ idevicename”,因為無法驗證開發者。
無法打開“ idevicescreenshot”,因為無法驗證開發者。
無法打開“ idevicesyslog”,因為無法驗證開發者。
無法打開“ ideviceinfo”,因為無法驗證開發者。
這都是一類問題
執行如下命令,就可以了。
sudo spctl --master-disable
sudo xattr -r -d com.apple.quarantine {flutter目錄}/bin/cache/artifacts/libimobiledevice/idevice_id
sudo xattr -r -d com.apple.quarantine {flutter目錄}/bin/cache/artifacts/libimobiledevice/idevicename
sudo xattr -r -d com.apple.quarantine {flutter目錄}/bin/cache/artifacts/libimobiledevice/idevicescreenshot
sudo xattr -r -d com.apple.quarantine {flutter目錄}/bin/cache/artifacts/libimobiledevice/idevicesyslog
sudo xattr -r -d com.apple.quarantine {flutter目錄}/bin/cache/artifacts/libimobiledevice/ideviceinfo
sudo xattr -d com.apple.quarantine {flutter目錄}/bin/cache/artifacts/usbmuxd/iproxy
2、iOS<Flutter/Flutter.h>文件找不到問題
/Users/hyf/develop/ios/demos/AI/f_ai/.ios/Flutter/FlutterPluginRegistrant/Classes/GeneratedPluginRegistrant.h:8:9: 'Flutter/Flutter.h' file not found
需要flutter版本和cocoapods版本對應,1.22版本需要和cocoapods1.10.x匹配。
執行sudo gem install cocoapods
,刪除Podfile.lock,然后執行pod install即可。
這個坑歷史版本也出現過。比如flutter0.2.x必須匹配cocoapods1.4 https://github.com/flutter/flutter/issues/16036,總之,flutter doctor中建議你用什么版本就用什么版本,千萬不要相信它的兼容性。
3、flutter Waiting for iPad to report its views
從master更換到stable之后,一直就跑不起來。報這個錯,屏幕白屏,卡在那里。
需要 flutter clean
再 flutter run
四、更新相關
對web的支持是在beta channel中的。stable channel暫未支持。
切換channel使用flutter channel stable
和flutter channel beta
,穩定性上stable要比beta高的多,但beta代碼要新的多.beta分支上,不僅flutter的代碼是beta的,連依賴也是beta的,如dart
比如
>flutter upgrade
Flutter is already up to date on channel beta
Flutter 1.25.0-8.3.pre ? channel beta ? https://github.com/flutter/flutter.git
Framework ? revision 5d36f2e7f5 (6 天前) ? 2021-01-14 15:57:49 -0800
Engine ? revision 7a8f8ca02c
Tools ? Dart 2.12.0 (build 2.12.0-133.7.beta)
官方建議要使用package,不要使用pub. 不明白這兩個有啥區別,麻煩知道的大大們留言告知一下。
不要使用pub get或pub upgrade命令來管理你的依賴關系。相反,應該使用flutter packages get或flutter packages upgrade。如果您想手動使用pub,則可以通過設置FLUTTER_ROOT環境變量來直接運行它。
五、倉庫
.gitignore的生成
1、標準化:https://www.toptal.com/developers/gitignore
2、前輩實踐:https://github.com/flutter/flutter/issues/13892