flutter升级到1.0(mac环境,其余环境一致)

估计有不少小伙伴像我同样早早的就体验了flutter,而后抛弃了,看到发布1.0,又想捣鼓一番;android


1.不要使用pub getpub upgrade命令来管理你的依赖关系。相反,应该使用flutter packages getflutter packages upgradeios

2.使用flutter时报错“Error: Unable to 'pub upgrade' flutter tool:git

找到clone下来的flutter库, 删除bin目录下的cache文件夹github

export PUB_HOSTED_URL=pub.flutter-io.cnjson

export FLUTTER_STORAGE_BASE_URL=storage.flutter-io.cnxcode

git clone -b dev github.com/flutter/flu…app

export PATH="$PWD/flutter/bin:$PATH"异步

cd ./flutteride

flutter doctorpost



参考:https://flutter.io/community/china

https://flutterchina.club/upgrading/







如下内容为转载

做者:否极泰来_2662
连接:https://www.jianshu.com/p/bf3002de6a5e
來源:简书

1、运行Xcode编译或者flutter run/build 过程当中报错:"x86_64" is not an allowed value for option "ios-arch".

解决方案

在Debug.xcconfig中指定 “FLUTTER_BUILD_MODE=debug”,Release.xcconfig中指定“FLUTTER_BUILD_MODE=release”

错误分析

这看起来是在模拟器编译环境下选择了真机的Framework什么的,后来查询发现是没有设置这个变量。由于工程的Build Phases里运行了<"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build>相关命令,而xcode_backend里为build_mode变量设置了默认值"release",这使得在查找Flutter.framework等编译所需的“原材料”时,默认选择了release的目录,致使了这个错误,因此,加上debug这个设置后,会去ios这个目录中查找相关文件,就不会有问题了。附目录截图:

注:所在目录 flutter/bin/cache/artifacts/engine/

2、Flutter plugin not installed; this adds Flutter specific functionality. Dart plugin not installed; this adds Dart specific functionality

解决方案

1.) Start the Android Studio application

2.) Open plugin preferences (Preferences>Plugins on macOS, File>Settings>Plugins on Windows & Linux).

3.) Select Browse repositories…, select the Flutter plug-in and click install .

4.) Click Yes when prompted to install the Dart plugin.

5.) Click Restart when prompted.

错误分析

若是你使用的是iOS开发环境或者没有安装Flutter插件的Android Studio,会报这个错误。Flutter是Google开发的移动开发SDK,为了方便,基于本身的IDE开发了Flutter插件,以方便集成过程。在Flutter生成双端产物的时候,须要通过插件作一些操做。

3、Android license status unknown

解决方案

执行 “flutter doctor --android-licenses” 命令

会问你'Do you want to review the licenses?',输入“y” 而后 回车,这时再执行一次flutter doctor就行了

4、MissingPluginException(No implementation found for method xxx on channel xxx)

解决方案

方案一:flutter clean一下,再次 flutter run/build

方案二:将flutter run的进程终止掉从新 flutter run/build

方案三:看看你的FlutterPluginRegistrant产物是否存在,是否更新了

错误分析

问题本质是Plugin的方法没有找到,也多是Plugin自己就没有注册成功。老版本的Flutter SDK遇到这个问题多是没有触发GeneratedPluginRegistrant.register(this),新版本的已经不须要手动触发了。


5、Waiting for another flutter command to release the startup lock

解决方案

rm ./flutter/bin/cache/lockfile

错误分析

缘由是在flutter编译等操做运行过程当中,会建立一个文件锁,可是因为一些缘由锁没有释放致使的,并且一直没法释放……


6、'Flutter/Flutter.h' file not found

解决方案

方案一:若是集成方式是静态库(.a),须要在引用Flutter的工程中,修改Build settings中的Header Search Paths,将Flutter所在目录加入其中。

方案二:若是集成方式是动态库(.framework),说明在引用Flutter的工程中并无依赖成功,须要检查Flutter.framework包内是否包含Headers文件夹,是否其中包含Flutter.h,另外就是Podspec和podfile是否正确。还有,Cocoapods必须1.5版本及以上。

方案三:若是你用的podspec.json,试试改写成podspec(这个坑曾让我浪费了几天的时间……)


7、error: cannot parse the debug map for xxx: No such file or directory

解决方案

依赖产物只针对 真机 ,但调试中使用了另外一种 模拟器。或者反过来了。

错误分析

真机和模拟器的平台是不一样的,符号也不一样。


8、diff: /../Podfile.lock: No such file or directory

解决方案

方案一:从新pod install

方案二:删除workspace、podfile.lock、Pods/、~/Library/Developer/Xcode/DerivedData

方案三:

一、运行sudo gem install cocoapods-deintegrate安装快速解除项目cocopods依赖的库

二、安装成功后,cd到你项目的更目录运行pod deintegrate解除项目cocopods依赖

三、运行pod install,从新安装cocopods

错误分析

Cocoapods的锅……


9、Flutter Bitcode

解决方案

在podfile中禁止bitcode

错误分析

Flutter相关集成是不支持bitcode的,因此须要将相关产物的bitcode功能关闭。若是你的现有工程中仓库众多,有的仓库是必须bitcode的,这样的话就须要每次pod install以后再在工程配置中手动设置回来,如下脚本放在podfile中能够解决此问题。

post_install do |installer|

installer.pods_project.targets.each do |target|

if target.name =="App" || target.name =="Flutter"

target.build_configurations.each do |config|

config.build_settings['ENABLE_BITCODE'] ='NO'

end

end

end

end


10、module importing failed: ('invalid syntax', ('temp.py',xxx

解决方案

执行如下命令

brew update

brew uninstall --ignore-dependencies libimobiledevice ios-deploy cocoapods

brew uninstall --ignore-dependencies usbmuxd

brew install --HEAD usbmuxd

brew unlink usbmuxd

brew link usbmuxd

brew install --HEAD libimobiledevice

brew install ideviceinstaller ios-deploy cocoapods

11、Flutter集成到现有工程后,性能问题

解决方案

用Release产物集成

问题分析

为了实现Hot refresh功能,Flutter在Debug下作了不少工做,影响了性能,能够经过修改

FLUTTER_BUILD_MODE的值("debug" => "release")

使用Release产物集成的方式屏蔽这部分影响。注意,flutter_assets是须要同时更新的,Debug产物中含有kernel_blob.bin文件,Release产物则没有。

12、iOS系统中,第一次从Native跳转到Flutter页面时,会出现LaunchScreen

解决方案

采用继承、Category同名方法等方式,覆盖FlutterViewController的splashScreenView的get方法,直接返回成员变量,将中间的读取LaunchScreen页面过程覆盖掉,甚至能够自定义本身的逻辑。

问题分析

Flutter的渲染是异步的,第一次加载须要建立Application和页面,没法及时返回结果,因此Flutter本身把这部分逻辑加到了SDK内部,实际上是为了解决 “纯Flutter App首屏白屏” 问题,但给咱们这种混编的App带来了麻烦。

相关文章
相关标签/搜索