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

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

     
  • 相关阅读:
    Pure播放器
    WPF绑定并转换
    WPF的DataTrigger使用
    NancyFx框架之检测任务管理器
    Asp.Net MVC 5使用Identity之简单的注册和登陆
    AspNetCore使用MySQL
    Head First 设计模式之适配器模式与外观模式
    Head First 设计模式之命令模式(CommandPattern)
    Head First 设计模式之工厂模式(Factory Pattern)
    .NET设计规范————类型设计规范
  • 原文地址:https://www.cnblogs.com/lxgbky/p/12880471.html
Copyright © 2020-2023  润新知