各种问题集锦

* 本页面总结了在搭建整个项目开发环境的过程中遇到的各种问题的总结。

在开发任何一个项目的过程中,总会遇到这种或者那种奇奇怪怪的问题,有些时候,有些问题你翻半天网上的各种解决办法都可能解决不了。所以,我把整个研发过程中遇到的问题或者踩过的坑,把行之有效的解决办法记录下来,希望能够帮助到遇到同样问题的你!

IDE问题:Android Studio无法启动,弹框出现unable to access android sdk add-on list

出现这个问题的原因是每次IDE启动时都会检查Android SDK是否正常,而此操作会连接Google的服务,众所周知的原因,可能在国内访问服务会出现慢或者不通的情况,所以这个时候我们可以通过更改配置文件,免去启动检查这一步骤(配置文件在你的Android Studio安装目录下,我的为J:\Program Files\Android\Android Studio\bin\idea.properties):

disable.android.first.run=true

这样,再次重新启动IDE就不会出现那个提示了!

IDE问题:Terminal无法正常加载&SDK Manager无法正常打开

可以看到在IDE的Fatal Errors里面可以看到如下报错信息:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.Native
  at com.pty4j.windows.WinPty.(WinPty.java:380)
  at com.pty4j.windows.WinPtyProcess.(WinPtyProcess.java:71)
  at com.pty4j.windows.WinPtyProcess.(WinPtyProcess.java:49)
  at com.pty4j.PtyProcessBuilder.start(PtyProcessBuilder.java:109)
  ***** more cutdown *****
Terminal无法正常加载&SDK Manager无法正常打开
Terminal无法正常加载&SDK Manager无法正常打开

这个问题真的是耗费了我大半天的时间来找解决方案,各种尝试,各种更新Java环境等,最终解决了才知道这个问题早就该避免 —— 我家里电脑账户名是中文“郑凯”!

The reason to why I had these issue was because of the User folder name, which included spaces or cyrillic letters.

My username consists of cyrillic letters.

只需要重新更改我的账户名即可,然后将对应环境变量更新成最新的路径。以下是解决步骤:

  • Windows cmd(管理员身份启动)中开启超级管理员账户
  •   net user administrator /active:yes
  • 注销当前账户,进入Administrator账户,进入C:\Users目录,将“郑凯”改为“zkbhj”
  • 打开注册表(Win+R,然后regedit)
  • 依次计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList,浏览该标签页下元素,找到 值为 "C:\Users\郑凯" 的项,将其修改为"C:\Users\zkbhj"
  • 注销administrator,切换回 新用户名“San”账户,用管理员身份启动cmd,输入 net user administrator /active:no,重新禁用administrator
  •   net user administrator /active:no
      //will echo The command completed successfully.
  • 再次开启Android Studio IDE,终于可以正常加载Terminal和SDK Manager了
编译问题:一直停留在Running Gradle task 'assembleDebug'...的步骤很久

跟网络被墙有关系,你可以用以下几个步骤更换为国内镜像源完成优化:

  • 修改项目中android/build.gradle文件
  •   //修改的地方
      //google()
      //jcenter()
      maven { url 'https://maven.aliyun.com/repository/google' }
      maven { url 'https://maven.aliyun.com/repository/public' }
  • 修改Flutter的配置文件, 该文件在Flutter安装目录/flutter/packages/flutter_tools/gradle/flutter.gradle
  •   //google()
      //jcenter()
      maven { url 'https://maven.aliyun.com/repository/google' }
      maven { url 'https://maven.aliyun.com/repository/public' }
  • 另外也可能是下载gradle工具链接太慢了,可以更换为腾讯的镜像源:https://mirrors.cloud.tencent.com/gradle/
  • 修改文件\zkbhj_app\android\gradle\wrapper\gradle-wrapper.properties
  •   #Fri Jun 23 08:50:38 CEST 2017
      distributionBase=GRADLE_USER_HOME
      distributionPath=wrapper/dists
      zipStoreBase=GRADLE_USER_HOME
      zipStorePath=wrapper/dists
      distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-5.6.2-all.zip
代码自动关联问题:发现项目中引入的flutter文件无法找到

第一次创建或者打开项目,需要在当前项目目录下执行如下命令完成关联包的获取:

  flutter packages get
  //或者
  flutter pub get

执行完成之后,就可以看到IDE会重新分析文件并创建关联索引。

IDE问题:手机设备连接正常后,但是Flutter Devices却无法识别到
Flutter Devices无法识别
Flutter Devices无法识别

可以通过下面的方式解决该问题,即在flutter里设置上你的Android SDK的路径:

  flutter config --android-sdk /path/to/android/sdk
执行成功之后重启IDE
执行成功之后重启IDE

执行成功之后重启IDE即可发现,设备出现在了Flutter Devices列表里。

设备识别成功
设备识别成功
包安装问题:在真机上安装包时失败

当打包成功之后向手机上安装APP时报如下错误:

  √ Built build\app\outputs\apk\debug\app-debug.apk.
  Installing build\app\outputs\apk\app.apk...
  Error: ADB exited with exit code 1
  Performing Streamed Install

  adb: failed to install G:\APP\Flutter\zkbhj_music_app\build\app\outputs\apk\app.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
  Error launching application on Mi 10 Pro.

是因为安装的APP中使用了与当前CPU架构不一致的native libraries,所以导致报错,因为现在绝大多数的智能手机还都是采用ARM架构的,虽然android是支持ARM和x86架构,但是它们的指令集是有差别的,APP在开发的时候使用的是ARM的本地库,而我们在用AVD创建模拟器的时候使用的是x86的CPU,因此导致报错。只要修改 ndk 的类型重新打个包就可以了。

  //android/app/build.gradle
  ndk {
      //abiFilters "armeabi", "x86", "armeabi-v7a"
      abiFilters "armeabi", "armeabi-v7a","arm64-v8a", "x86"
  }

重新打包安装即可!

开发一个项目,就像是一场取经之路,总是会经历各种各样未知的困难和问题,但这也正是开发的乐趣所在!每一个解决问题获得的小成就感,是支撑你完成整个项目的一个个小动力!希望遇到过的这些问题能给大家带来一些方便和借鉴!


* 本页内容参考以下数据源:

  • https://www.jianshu.com/p/bb3262375425
  • https://stackoverflow.com/questions/65717599/android-studio-4-1-1-bypasses-sdk-installation-on-windows-10/65737072
  • https://stackoverflow.com/questions/44221688/noclassdeffounderror-during-project-sync-in-android-studio
  • https://maven.aliyun.com/mvn/guide
  • https://blog.csdn.net/lxd_love_lgc/article/details/107729002

凯冰科技 · 代码改变世界,技术改变生活
下一篇:为什么选择Flutter →