flutter Android 开发一 (环境设置)

尝试做了个手机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. 

Android studio内置的更新机制分为canary、dev、stable、beta四个版本,根本上区分在于其稳定性。
而as的更新机制默认是stable

解压,都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 成功了!'),
        ),
      ),
    );
  }
}

 手机 上运行成功了, 模拟器启动起来,机器几乎无法动了。

 
原文地址:https://www.cnblogs.com/lxgbky/p/12880471.html