flutter Android 开发一 (环境设置)
<p><strong>尝试做了个手机app,发布到自己手机上实验成功,记录一下。</strong></p><p> </p>
<p><strong>一、编辑,设置环境变量 </strong></p>
<p> # gedit /home/lxg/.bashrc</p>
<div class="cnblogs_code">
<pre>export PUB_HOSTED_URL=https://pub.flutter-<span style="color: rgba(0, 0, 0, 1)">io.cn
export FLUTTER_STORAGE_BASE_URL</span>=https://storage.flutter-io.cn</pre>
</div>
<p><strong>二、安装Flutter SDK</strong></p>
<p>访问官网,下载SDK; 解压</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513093055344-1154024633.png"></p>
<p> </p>
<p>我放在/home/lxg/11flutter/flutter ,里面有bin子目录 </p>
<p><strong>三、设置path,能访问bin</strong></p>
<p> #gedit ~.profile</p>
<div class="cnblogs_code">
<pre>export PATH=/home/lxg/11flutter/flutter/bin:$PATH</pre>
</div>
<p>使配置环境生效</p>
<p>#source ~<span class="token operator">/<span class="token punctuation">.profile</span></span></p>
<p>测试是否生效</p>
<p>#flutter doctor</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513093530069-1141584996.png"></p>
<p> </p>
<p><strong> 四、安装 addroid sdk</strong></p>
<p> 我没按各种手册, 用了偷懒的办法,使用jetbrains工具,创建Adroid工程,会自动检测android sdk, 如没有会自动下载安装</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513095041706-2140260508.png"></p>
<p> </p>
<p> </p>
<p> 安装路径:/home/lxg/Andriod/sdk</p>
<p> 再次检测: flutter doctor , 发现已经不报缺乏android sdk错误了。</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513095325105-1113629808.png"></p>
<p> </p>
<div class="cnblogs_Highlighter">
<pre class="brush:bash;gutter:true;">检测:<br># flutter doctor--android-licenses
</pre>
</div>
<p> <img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513100248634-796641468.png"></p>
<p> </p>
<p> 还要安装jdk</p>
<p><span style="font-size: 1em">下载地址</span>jdk-8u211-linux-x64.tar.gz</p>
<p> 还是通过idea 找项目的jdk,发现ubuntu上有jdk,只不过JAVA_HOME 制定错了</p>
<p>修改:</p>
<p> sudo gedit /etc/profile</p>
<div class="cnblogs_code">
<pre>export JAVA_HOME=/usr/jdk1.8<span style="color: rgba(0, 0, 0, 1)">.0_211
export JRE_HOME</span>=${JAVA_HOME}/<span style="color: rgba(0, 0, 0, 1)">jre
export CLASSPATH</span>=.:${JAVA_HOME}/lib:${JRE_HOME}/<span style="color: rgba(0, 0, 0, 1)">lib
export PATH</span>=${JAVA_HOME}/bin:$PATH </pre>
</div>
<p> </p>
<p> </p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513104617073-2081166993.png"></p>
<p> </p>
<p> </p>
<p>解决licence</p>
<pre class="brush:bash;gutter:true;"># flutter doctor--android-licenses<br> 按照指示,一步一步安装</pre>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513104915765-603620900.png"></p>
<p> </p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513105005015-1690232306.png"></p>
<p> </p>
<p>flutter doctor 后, 发现只剩下安装andriod studio和连接设备了, 加油!</p>
<p>flutter upgrade 升级,</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200513105258782-291844438.png"></p>
<p> </p>
<p> 版本挺新的,感谢单位,不用科学伤网(故意错别字,否则无法保存),就可以升级。</p>
<p> </p>
<p><strong>五、安装android studio (开发工具 ide)</strong></p>
<p>https://developer.android.google.cn/studio?hl=zh-cn</p>
<p>注意,不能安装太新的版本,canary的版本太新,不支持 flutter plugin,及时安装flutter plugin,也不显示 new flutter project. </p>
<div>Android studio内置的更新机制分为canary、dev、stable、beta四个版本,根本上区分在于其稳定性。</div>
<div>而as的更新机制默认是stable</div>
<p>解压,都andorod studio/bin目录</p>
<p># sh studio.sh 启动ide</p>
<p> </p>
<p>初次安装Android Studio,启动后,报错如下:</p>
<p>unable to access android sdk add-on lis</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200514163619945-890021530.png"></p>
<p> 主要原因是找不到android sdk, 直接点击cancel , 后面根据提示,制定android sdk的目录。</p>
<p> config / plugin / 找到 flutter, 安装插件。</p>
<p><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200514165927208-293781800.png"></p>
<p> </p>
<p> </p>
<p>重新启动后,可以创建 flutter project了。</p>
<p> <img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200514163949706-900538915.png"></p>
<p> </p>
<p><strong>六、连接手机或模拟器</strong></p>
<p> 没有device,futter程序无法运行。</p>
<p> 用手机: 要打开“开发者选项”, 打开里面的 ”USB调试“</p>
<p> 用模拟器: 打开 andriod studio / tool/ avd manager , 创建模拟器</p>
<p> </p>
<p>usb连接手机,或者 模拟器打开(开机)后,</p>
<p>#flutter devices 指令可以找到设备</p>
<p>#flutter doctor 能找到设备</p>
<div class="cnblogs_code">
<pre>lxg@lxg-opt:~/11flutter/test/<span style="color: rgba(0, 0, 0, 1)">test1$ flutter devices
</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> connected device:
NX523J V1 • b5c9b72 • android</span>-arm64 • Android <span style="color: rgba(128, 0, 128, 1)">5.1</span>.<span style="color: rgba(128, 0, 128, 1)">1</span> (API <span style="color: rgba(128, 0, 128, 1)">22</span><span style="color: rgba(0, 0, 0, 1)">)
lxg@lxg</span>-opt:~/11flutter/test/<span style="color: rgba(0, 0, 0, 1)">test1$ flutter doctor
Doctor summary (to see all details, run flutter doctor </span>-<span style="color: rgba(0, 0, 0, 1)">v):
[✓] Flutter (Channel stable, v1.</span><span style="color: rgba(128, 0, 128, 1)">17.0</span>, on Linux, locale zh_CN.UTF-<span style="color: rgba(128, 0, 128, 1)">8</span><span style="color: rgba(0, 0, 0, 1)">)
[✓] Android toolchain </span>- develop <span style="color: rgba(0, 0, 255, 1)">for</span> Android devices (Android SDK version <span style="color: rgba(128, 0, 128, 1)">29.0</span>.<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">)
[✓] Android Studio (version </span><span style="color: rgba(128, 0, 128, 1)">3.6</span><span style="color: rgba(0, 0, 0, 1)">)
[✓] Connected device (</span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> available)
• No issues found</span>!</pre>
</div>
<p><strong>可能出现问题一:</strong></p>
<p class="title-article">用手机连接时候, flutter报错 error: insufficient permissions for device</p>
<p class="title-article">lsusb,列出全部usb设备</p>
<div class="cnblogs_code">
<pre>lxg@lxg-opt:~/11flutter/test/<span style="color: rgba(0, 0, 0, 1)">test1$ lsusb
Bus </span><span style="color: rgba(128, 0, 128, 1)">002</span> Device <span style="color: rgba(128, 0, 128, 1)">001</span>: ID 1d6b:<span style="color: rgba(128, 0, 128, 1)">0003</span> Linux Foundation <span style="color: rgba(128, 0, 128, 1)">3.0</span><span style="color: rgba(0, 0, 0, 1)"> root hub
Bus </span><span style="color: rgba(128, 0, 128, 1)">001</span> Device <span style="color: rgba(128, 0, 128, 1)">004</span>: ID 413c:<span style="color: rgba(128, 0, 128, 1)">2113</span><span style="color: rgba(0, 0, 0, 1)"> Dell Computer Corp.
Bus </span><span style="color: rgba(128, 0, 128, 1)">001</span> Device <span style="color: rgba(128, 0, 128, 1)">003</span><span style="color: rgba(0, 0, 0, 1)">: ID 413c:301a Dell Computer Corp.
Bus </span><span style="color: rgba(128, 0, 128, 1)">001</span> Device <span style="color: rgba(128, 0, 128, 1)">006</span>: ID <span style="color: rgba(128, 0, 128, 1)">8087</span><span style="color: rgba(0, 0, 0, 1)">:0a2b Intel Corp.
Bus </span><span style="color: rgba(128, 0, 128, 1)">001</span> Device <span style="color: rgba(128, 0, 128, 1)">005</span><span style="color: rgba(0, 0, 0, 1)">: ID 1bcf:2b94 Sunplus Innovation Technology Inc.
Bus </span><span style="color: rgba(128, 0, 128, 1)">001</span> Device <span style="color: rgba(128, 0, 128, 1)">017</span><span style="color: rgba(0, 0, 0, 1)">: ID <span style="background-color: rgba(255, 204, 0, 1)">19d2:ffcd</span> ZTE WCDMA Technologies MSM
Bus </span><span style="color: rgba(128, 0, 128, 1)">001</span> Device <span style="color: rgba(128, 0, 128, 1)">001</span>: ID 1d6b:<span style="color: rgba(128, 0, 128, 1)">0002</span> Linux Foundation <span style="color: rgba(128, 0, 128, 1)">2.0</span><span style="color: rgba(0, 0, 0, 1)"> root hub
lxg@lxg</span>-opt:~/11flutter/test/test1$ </pre>
</div>
<p>cd etc/udev/rules.d</p>
<p>创建一个51-android.rules 文件</p>
<div class="cnblogs_code">
<pre>lxg@lxg-opt:/etc/udev/rules.d$ <span style="color: rgba(0, 0, 255, 1)">sudo</span> gedit <span style="color: rgba(128, 0, 128, 1)">51</span>-android.rules </pre>
</div>
<div class="cnblogs_code">
<pre>只有一行内容,注意两个关键字要正确对应<br>SUBSYSTEM==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">usb</span><span style="color: rgba(128, 0, 0, 1)">"</span>, ATTRS{idVendor}==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1); background-color: rgba(255, 204, 0, 1)">19d2</span><span style="color: rgba(128, 0, 0, 1)">"</span>, ATTRS{idProduct}==<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1); background-color: rgba(255, 204, 0, 1)">ffcd</span><span style="color: rgba(128, 0, 0, 1)">"</span>,MODE=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">0666</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<p>(1)sudo chmod a+x 51-android.rules </p>
<p>(2)拔掉手机,再插上,就解决问题了</p>
<p>确认:</p>
<p>$ adb devices<br>List of devices attached<br>AB100607 device</p>
<p> </p>
<p><strong>可能出现问题二:</strong></p>
<p id="卡在Running-‘gradle-assembleDebug">在android studio上,运行flutter程序时候, 程序迟迟不能推送到手机或模拟器上,而是卡在 Running 'gradle assembleDebug'</p>
<p>解决参考:https://www.cnblogs.com/wupeng88/p/11455874.html</p>
<p>修改2个文件,把</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">google()</span>
<span style="color: rgba(0, 128, 0, 1)">jcenter()</span>
</pre>
</div>
<p>注释掉上面的,因为网络不同,换成阿里的maven</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">google()</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">jcenter()</span>
maven { url 'https://maven.aliyun.com/repository/google'<span style="color: rgba(0, 0, 0, 1)"> }
maven { url </span>'https://maven.aliyun.com/repository/jcenter'<span style="color: rgba(0, 0, 0, 1)"> }
maven { url </span>'http://maven.aliyun.com/nexus/content/groups/public' }</pre>
</div>
<p>注意不要全文覆盖,只该这一点点。</p>
<p> </p>
<p>运行:</p>
<p>main.dart</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">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 成功了!'),
),
),
);
}
}</span></pre>
</div>
<p> </p>
<pre><span class="line"><span class="line"><span class="line"><span class="line"><span class="line"><img src="https://img2020.cnblogs.com/blog/1328412/202005/1328412-20200515154912412-383006243.png"></span></span></span></span></span></pre>
<p> </p>
<p> 手机 上运行成功了, 模拟器启动起来,机器几乎无法动了。</p>
<pre><span style="font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px"> </span></pre><br><br>
来源:https://www.cnblogs.com/lxgbky/p/12880471.html
頁:
[1]