尝试做了个手机app,发布到自己手机上实验成功,记录一下。
一、编辑,设置环境变量
# gedit /home/lxg/.bashrc
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
二、安装Flutter SDK
访问官网,下载SDK; 解压
我放在/home/lxg/11flutter/flutter ,里面有bin子目录
三、设置path,能访问bin
#gedit ~.profile
export PATH=/home/lxg/11flutter/flutter/bin:$PATH
使配置环境生效
#source ~/.profile
测试是否生效
#flutter doctor
四、安装 addroid sdk
我没按各种手册, 用了偷懒的办法,使用jetbrains工具,创建Adroid工程,会自动检测android sdk, 如没有会自动下载安装
安装路径:/home/lxg/Andriod/sdk
再次检测: flutter doctor , 发现已经不报缺乏android sdk错误了。
检测:
# flutter doctor --android-licenses
还要安装jdk
下载地址jdk-8u211-linux-x64.tar.gz
还是通过idea 找项目的jdk,发现ubuntu上有jdk,只不过JAVA_HOME 制定错了
修改:
sudo gedit /etc/profile
export JAVA_HOME=/usr/jdk1.8.0_211 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
解决licence
# flutter doctor --android-licenses
按照指示,一步一步安装
flutter doctor 后, 发现只剩下安装andriod studio和连接设备了, 加油!
flutter upgrade 升级,
版本挺新的,感谢单位,不用科学伤网(故意错别字,否则无法保存),就可以升级。
五、安装android studio (开发工具 ide)
https://developer.android.google.cn/studio?hl=zh-cn
注意,不能安装太新的版本,canary的版本太新,不支持 flutter plugin,及时安装flutter plugin,也不显示 new flutter project.
解压,都andorod studio/bin目录
# sh studio.sh 启动ide
初次安装Android Studio,启动后,报错如下:
unable to access android sdk add-on lis
主要原因是找不到android sdk, 直接点击cancel , 后面根据提示,制定android sdk的目录。
config / plugin / 找到 flutter, 安装插件。
重新启动后,可以创建 flutter project了。
六、连接手机或模拟器
没有device,futter程序无法运行。
用手机: 要打开“开发者选项”, 打开里面的 ”USB调试“
用模拟器: 打开 andriod studio / tool/ avd manager , 创建模拟器
usb连接手机,或者 模拟器打开(开机)后,
#flutter devices 指令可以找到设备
#flutter doctor 能找到设备
lxg@lxg-opt:~/11flutter/test/test1$ flutter devices 1 connected device: NX523J V1 • b5c9b72 • android-arm64 • Android 5.1.1 (API 22) lxg@lxg-opt:~/11flutter/test/test1$ flutter doctor Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, v1.17.0, on Linux, locale zh_CN.UTF-8) [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3) [✓] Android Studio (version 3.6) [✓] Connected device (1 available) • No issues found!
可能出现问题一:
用手机连接时候, flutter报错 error: insufficient permissions for device
lsusb,列出全部usb设备
lxg@lxg-opt:~/11flutter/test/test1$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 004: ID 413c:2113 Dell Computer Corp. Bus 001 Device 003: ID 413c:301a Dell Computer Corp. Bus 001 Device 006: ID 8087:0a2b Intel Corp. Bus 001 Device 005: ID 1bcf:2b94 Sunplus Innovation Technology Inc. Bus 001 Device 017: ID 19d2:ffcd ZTE WCDMA Technologies MSM Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub lxg@lxg-opt:~/11flutter/test/test1$
cd etc/udev/rules.d
创建一个51-android.rules 文件
lxg@lxg-opt:/etc/udev/rules.d$ sudo gedit 51-android.rules
只有一行内容,注意两个关键字要正确对应
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", ATTRS{idProduct}=="ffcd",MODE="0666"
(1)sudo chmod a+x 51-android.rules
(2)拔掉手机,再插上,就解决问题了
确认:
$ adb devices
List of devices attached
AB100607 device
可能出现问题二:
在android studio上,运行flutter程序时候, 程序迟迟不能推送到手机或模拟器上,而是卡在 Running 'gradle assembleDebug'
解决参考:https://www.cnblogs.com/wupeng88/p/11455874.html
修改2个文件,把
google() jcenter()
注释掉上面的,因为网络不同,换成阿里的maven
//google() //jcenter() 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' }
注意不要全文覆盖,只该这一点点。
运行:
main.dart
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Welcome to Flutter',
home: new Scaffold(
appBar: new AppBar(
title: new Text('Welcome to Flutter'),
),
body: new Center(
child: new Text('hello world 成功了!'),
),
),
);
}
}
手机 上运行成功了, 模拟器启动起来,机器几乎无法动了。