赞
踩
pubspec.lock
文件解决依赖冲突pubspec.lock
是flutter pub get过程中生成的依赖库图谱文件,文件中列出的依赖库及版本号才是真实打包使用的版本号。直接修改该文件中依赖库的版本号,然后执行pub get命令,可以下载使用对应版本三方库。
flutter工程中需要加入VCS的文件其实都列在.gitignore
文件中了,但是有时候不全,重点关注下pubspec.lock
这个文件,其实也是编译生成物,不需要加入VCS。
老生畅谈的问题,但是还是截个图备忘一下,根据flutter SDK实际存放位置进行配置:
打开:Project Structure>Facets,点击新建按钮,选择android,保持默认配置,点击确认即可。
进入项目目录,执行:
flutter create .
# 如果是插件,新版的flutter sdk需要你指定插件的平台
flutter create --platforms=ios,android .
会根据flutter create原来的配置创建对应的工程目录。比如当你删除android或ios目录时,使用这个命令可以将缺失的目录重新生成。
进入项目目录,执行:
flutter create example
会生成对应的example代码,然后在example的pubspec.yaml中引用lib代码即可。
乍一看这个需求非常鸡肋,但是经过实践发现实际上直接运行flutter的example和通过命令行gradle命令编译安装apk效果还是不一样的,有写情况下需要通过gradle命令来编译和安装apk:
# 进入example下android目录
cd example/android
# 编译example:app,生成apk,这步可以跳过,按需即可
gradlew :app:assembleDebug
# 安装apk
gradlew :app:installDebug
上述步骤可以实现与右键打开Open Android module in Android Studio
并运行项目一样的效果,而不用重新打开一个项目工程。
在内网开发环境下,可能一些库无法正常下载,flutter pub get
执行失败。可以通过配置代理来解决,flutter下载依赖库实际上借助了git和batch/shell中的下载命令,因此需要为git配置和命令行都配置代理:
Git配置代理方法:
# 代理可以是http://127.0.0.1:1080,或者不带协议127.0.0.1:1080,按实际情况
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
更多Git使用技巧:Git常用操作
命令行配置代理方法(只对当前命令行窗口生效):
# 代理无用户名密码
set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080
# 具有用户名密码
set HTTP_PROXY=http://proxy.com:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=password
set HTTPS_PROXY=http://proxy.com:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=password
# 取消网络代理
netsh winhttp reset proxy
更多batch使用方法:bat脚本:快速入门
dart pub global
命令可以添加/移除dart脚本到dart全局脚本库中,添加后即可在命令行执行脚本package中bin目录下的脚本的命令。可以利用此特性开发一些常用的flutter脚本工作,并发布到仓库供他人使用。
# 添加启用脚本
dart pub global activate <pub.dartlang package>
# 移除脚本
dart pub global deactivate <pub.dartlang package>
flutter create --org com.exmple --template plugin flutterPigeonDemo
dev_dependencies:
flutter_test:
sdk: flutter
pigeon:
version: 0.1.7
以pigeons/pigeonDemoMessage.dart
为例:
import 'package:pigeon/pigeon.dart'; class DemoReply { String result; } class DemoRequest { String methodName; } // 需要实现的api @HostApi() abstract class PigeonDemoApi { DemoReply getMessage(DemoRequest params); } // 输出配置 void configurePigeon(PigeonOptions opts) { opts.dartOut = './lib/PigeonDemoMessage.dart'; opts.objcHeaderOut = 'ios/Classes/PigeonDemoMessage.h'; opts.objcSourceOut = 'ios/Classes/PigeonDemoMessage.m'; opts.objcOptions.prefix = 'FLT'; opts.javaOut = 'android/src/main/kotlin/com/example/flutter_pigeon_demo/PigeonDemoMessage.java'; opts.javaOptions.package = 'package com.example.flutter_pigeon_demo'; }
flutter pub run pigeon --input pigeons/pigeonDemoMessage.dart
生成的模版代码文件:
flutter < 1.16.2:Obfuscating Dart Code
flutter >= 1.16.2:Obfuscating Dart Code
flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>
在我的工程中,开启和关闭
--obfuscate
前后的release包体积分别为:42436KB和41452KB,减少了984KB,体积缩小了2.3%,原生代码体量比较大的缘故,差别不是很大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。