说明:
这个步骤是历史遗留的操作。
新版Android Studio自带OpenJava,不需要这个步骤。
放置文件
$ tar -zxvf jdk-8u181-linux-x64.tar.gz
$ sudo mkdir /usr/java
$ sudo mv ./jdk1.8.0_181 /usr/java
添加环境变量,两种方式,任选其一:
$ sudo vim /etc/profile # 全局
$ vim ~/.bashrc # 当前用户
环境变量内容:
export JAVA_HOME=/usr/java/jdk1.8.0_181
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
使环境变量生效,两种方式:
$ source /etc/profile
$ source ~/bashrc
检查安装版本:
java -version
放置文件
$ tar -zxvf android-studio-ide-183.5452501-linux.tar.gz
安装
$ cd android_studio/bin
$ ./studio.sh
后续图形化安装。
安装时报错unable to access android sdk add-on list
,忽略之,后续手动选择sdk安装目录,进行安装。
安装完成后,启动AVD管理器报错。
参考:
https://issuetracker.google.com/issues/128271323
原因:请勿在studio启动界面下直接启动AVD,先建立项目,在项目界面下启动AVD即可。
在项目界面下启动AVD,并下载镜像以后,提示Your CPU does not support required features (VT-x or SVM)
。
如果使用的是物理机,需要安装相应的虚拟化支持软件。(百度来的,各种曲折经历,多属此种情况)
我用的是VMWare,那就幸运多了。解决方法:虚拟机>>设置>>处理器>>虚拟化引擎>>虚拟化Intel VT-x。
SDK:Software Development Kit
NDK:Native Development Kit
JNI:Java Native Interface
$ sudo vim /usr/share/applications/Studio.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Android Studio
Exec="/home//android-studio/bin/studio.sh" %f
Icon=/home/<username>/android-studio/bin/studio.png
Categories=Development;IDE;
Terminal=false
StartupNotify=true
StartupWMClass=jetbrains-android-studio
Name[en_GB]=android-studio.desktop
保存退出,即可在bash中找到快捷方式。
其中Exec、Icon为文件路径,据实填写。
错误表现:
模拟器启动时闪退,弹出的窗口含有如下内容:
android emulator closed because of an internal error:
emuglConfig_init: blacklisted=0 has_guest_renderer=1
emuglConfig_init: auto-selected host based on conditions and UI preference 0
错误复现:
对于有Play Store
标志的Skin,Emulated Peformance Graphics
被强制只能使用automatic
,则出现此种错误。
选择其它Skin,Emulated Peformance Graphics
选择automatic
之外的选项,则不会出现此种错误。
错误原因:
报错信息里已经说的很明白了,是一些配置选项引起了错误。
但谁叫我是小白呢,根本不明白它在说些啥。
好在选个别的Skin就可以用了,凑合过吧。
错误表现:
Emulator: qemu-system-x86_64: warning: TSC frequency mismatch between VM (2496000 kHz) and host (2496002 kHz), and TSC scaling unavailable
解决方法:
进入AVD管理器,在出现问题的模拟器右方的Actions
列选择Wipe Data
。
错误表现:
Emulator: context mismatch in svga_surface_destroy
Emulator: context mismatch in svga_sampler_view_destroy
解决方法:
虚拟机内无解,换成真机。
模拟器可以调试,真机调试卡在“installing apks”。
解决方法:
file >> setings >> Build, Execution, Deployment >> Instant Run
取消勾选“Enable Instant Run…… ”
没什么说的,一切顺利。
运行按钮是灰的,搜啊搜,搜啊搜,搜到好多似是而非的解决方法。
我一度以为,使用Kotlin需要一些额外设置什么的。
后来,这个问题莫名其妙的消失了。
也许是因为它需要下载一些东西?
不知道哎。
小白如我,就不深究了,先用起来再说。
下载flutter_linux_v1.5.4-hotfix.2-stable.tar.xz,解压到主目录。
添加环境变量:
$ vim ~/.bashrc # 当前用户
环境变量内容:
export PUB_HOSTED_URL=https://pub.flutter-io.cn #国内用户需要设置
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn #国内用户需要设置
export PATH=/home/xf/flutter/bin:$PATH
使环境变量生效:
$ source ~/bashrc
检查依赖
$ cd flutter
$ flutter doctor
按照提示,解决依赖问题。
启动Android Studio.
File>Settings>Plugins
搜索 Flutter,安装之。
搜索 Dart,安装之。
重启Android Studio后插件生效。
使用实体手机进行连接时,flutter doctor
报insufficient permissions for device: user in plugdev group; are your udev rules wrong?
。
adb devices
报no permissions (user in plugdev group; are your udev rules wrong?)
意为权限不足。
并给出一个网址http://developer.android.com/tools/device.html。
解决方法就在该网址中,是因为Linux下需要手动设备权限文件。
解决方法:
$ lsusb
Bus 001 Device 003: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc.
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
其中Google Inc.是我的设备,vid=18d1,pid=4ee7。
$ sudo vim /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0666", GROUP="plugdev"
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
重新插拔设备,并在设备商授权,检查连接:
$ adb devices
List of devices attached
e8241aed device
已成功连接。
建立flutter项目之后,尝试运行的时候,卡在initializing gradle。
这是android studio在下载gradle。
如果没有外网,是永远也下载不了的,而它也并不报错。
即使翻了墙,这个下载速度,也是极慢的。
因此,需要为gradle配置国内镜像。
$ vim ~/.gradle/init.gradle
allprojects{
repositories {
def ALIYUN_REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public'
def ALIYUN_JCENTER_URL = 'http://maven.aliyun.com/nexus/content/repositories/jcenter'
all { ArtifactRepository repo ->
if(repo instanceof MavenArtifactRepository){
def url = repo.url.toString()
if (url.startsWith('https://repo1.maven.org/maven2')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_REPOSITORY_URL."
remove repo
}
if (url.startsWith('https://jcenter.bintray.com/')) {
project.logger.lifecycle "Repository ${repo.url} replaced by $ALIYUN_JCENTER_URL."
remove repo
}
}
}
maven {
url ALIYUN_REPOSITORY_URL
url ALIYUN_JCENTER_URL
}
}
}
错误表现:
make project时,报错如下:
Failed to open zip file.
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) Re-download dependencies and sync project (requires network) Re-download dependencies and sync project (requires network)
错误原因:
折腾的过程中,强制关机过,其实那个时候gradle正在下载文件,强制关机导致了一些问题。
错误解决:
删除~/.gradle/wrapper/dists
文件夹,重新启动Android Studio,等待它重新建立文件。
当然了,需要两个条件:联网,漫长的等待。
真的就是内存不足,扩大VMWare虚拟机的内存就可以了。
这个错误:
Error connecting to the service protocol: HttpException: Connection closed before full header was received, uri = http://127.0.0.1:39277/Yhbg0tyy0Ck=/ws
百度、谷歌对此给出的答案是:
禁用代理、禁用wifi。
甚至还有个视频教大家降低AVD操作系统的版本。
然并卵。