Android Studio 升级 El Capitan 之后的两个问题

升级 OS X 11 (El Capitan)后 Android Studio 遇到了两个麻烦的问题,在这里记一下。

1. 升级之后字体发虚

这个主要是低分屏下看起来很不舒服,同事的高分屏就没有这个。字体发虚是 JDK 的问题,因为 Jetbrains 全家桶都是基于 Java 开发的,所以把 JDK 的这一不良特性也带了进来,下载直接去苹果官网即可:https://support.apple.com/kb/DL1572

不过也不急解决这个问题,因为下面这个问题可以一起解决

2. 外接显示器+全屏模式会导致一定几率崩溃

这个问题是最让人蛋疼的。因为自己平时习惯两个显示器低头看文档抬头写代码,升级之后莫名其妙就会有一定几率崩溃,而且是随机的完全摸不清头脑,在 V2EX 上连发两个问题也没能得到满意的解决方案(不过第一个问题是很快就有人告诉我是 JDK 的问题,还是十分感谢 V2EX 的)。直到今天 IDEA 15 发布了正式版,下载之后发现切换屏幕焦点之后不像我电脑上装的其他 Jetbrains 产品那样闪屏,仔细看了一下它安装包自带了一个 JDK。所以就尝试了把这个 JDK 放到了 Android Studio 下,果然不出所料,Android Studio 也不闪屏了,而且多显示器全屏的问题似乎也解决了。IDEA 15 下载地址:https://www.jetbrains.com/idea/download/ 社区版就可以了,然后从 .app 文件下把 jre 这个文件夹复制到 Android Studio 的对应目录即可。

更令人高兴的是,用 Intellij 提供的 JDK 同样也可以解决第一个问题。

JetBrains 家应用字体渲染问题

昨天安装了新的系统 El Capitan,升级后发现 Android Studio 中字体很虚,但是其他应用又没有问题,在 v2ex 上提问后有人说 java 环境问题:因为 JetBrains 的 IDE 基本都是用 Java 开发的(包括 Intellij IDEA、php Storm、Android Studio 等),使用苹果提供的 java 环境里有针对系统的字体渲染,而使用 oracle 提供的 jre 就没有。所以同样有字体发虚问题的朋友请到 Apple 官网下载 java 环境即可(R 屏可无视)

Android应用证书签名

在 Android Studio 上给应用签名很简单,首先在菜单中选择 Generate Signed APK,然后会有一个向导,如果之前有证书则需要填写证书路径和密码,如果没有的话可以根据向导创建一个,然后一直 next 直到 finish 就好了。

不过说下遇到的一些小问题:

  1. 之前用 debug 证书签名的应用,如果需要安装 release 版本的应用,有时候在卸载本地应用后仍然安装不上新的应用,这时可以使用 adb uninstall PACKAGE_NAME 完整卸载掉应用。
  2. 在应用存在是 adb install 可能会安装不上版本升级后的应用。这时需要使用 adb install -r 命令即可。

How to speed up gradle build time

If you use the new Gradle build system with Android (or Android Studio) you might have realized, that even the simplest Gradle call (e.g. gradle project or grade tasks) is pretty slow. On my computer it took around eight seconds for that kind of Gradle calls. You can decrease this startup time of Gradle (on my computer down to two seconds), if you tell Gradle to use a daemon to build. Just create a file named gradle.properties in the following directory:

  • /home//.gradle/ (Linux)
  • /Users//.gradle/ (Mac)
  • C:\Users\.gradle (Windows)

Add this line to the file:

org<span class="class">.gradle</span><span class="class">.daemon</span>=true
`</pre>

From now on Gradle will use a daemon to build, whether you are using Gradle from command line or building in Android Studio. You could also place the gradle.properties file to the root directory of your project and commit it to your SCM system. But you would have to do this, for every project (if you want to use the daemon in every project).

Note: If you don’t build anything with Gradle for some time (currently 3 hours), it will stop the daemon, so that you will experience a long start-up time at the next build.

Note:Performance improvements are one of the great tasks in the Gradle roadmap for 2014 (and reaching into 2015). So I hope, we’ll see the general performance increasing within these years.

Note: This does only affect console builds. Android Studio always uses a Gradle daemon (and depending on your settings some other optimizations).

> 来源:[https://www.timroes.de/2013/09/12/speed-up-gradle/](https://www.timroes.de/2013/09/12/speed-up-gradle/)
(_至今没过英语四级的人的蹩脚翻译仅供参考_)
如果你使用新的 Gradle 构建系统(或 Android Studio)你也许认识到简单的 Gradle 调用(例如 gradle project 或者 gradle tasks)是如此之慢。在我的电脑上那些gradle 调用要花 8 秒左右。如果你告诉 Gradle 使用一个后台驻留进程去构建就可以减少 Gradle 的启动时间。只需要创建一个名为`gradle.properties`在下面的文件夹中:
  • /home//.gradle/ (Linux)
  • /Users//.gradle/ (Mac)
  • C:\Users\.gradle (Windows)

    在该文件中添加这样一行:

    `org.gradle.daemon=true

现在无论你使用 Gradle 命令行还是在 Android Studio 中, Gradle 将使用一个驻留进程去构建项目。你可以把gradle.properties文件放在你项目的根目录并提交到你的 SCM 系统。但是你必须每个项目都这样做(如果你想每个项目都使用后台驻留进程)。

Note:如果你在一段时间(当前是3小时)内不使用 Gradle 构建任何东西,它将会终止这个进程,那么你会在下一次构建时花费很长时间。

Note:不会翻译。

Note:这个只会影响控制台的构建。Android Studio 总是会使用一个 gradle 后台驻留进程(并且依靠于你设置上的其他优化)

AndroidStudio中so文件存放路径问题

最近要做一个关于地图导航的模块,用到了百度地图的 API,在 Hello World 的时候就出问题了:

文档中要求 so 文件放在 libs/armeabi/ 下,这样做之后编译通过,运行时报错:

1
java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v3_0_0 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.twiceyuan.baidumaptest-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.twiceyuan.baidumaptest-1, /vendor/lib, /system/lib]]]: findLibrary returned null

查了一下,原来是 so 文件存放路径问题,Android Studio 下 so 文件的存放路径为:src/main/jniLibs/armeabi/

之后运行成功了。

在Android Studio中删除Module

先前在项目设置中选择 Module 之后上面的减号不见了,所以原来删除 Module 的方法不再适用。

现在版本想要删除一个 Module(应该是0.5.2以后的版本),需要先在项目根目录下 setting.gradle 中删除所要删除 Module 的名称,然后点击工具栏上 Sync Project with Gradle Files 按钮,完成后右击所要删除的 Module 的文件夹就会发现原来不在的 Delete 键出现了,然后点击删除即可

在 Mac中离线升级 Android Studio

Android Studio 在线升级一直是个蛋疼问题,挂代理速度比较慢而且不稳定,但是所有蛋疼的在线升级问题都可以用一个方法解决——离线升级包。Mac 用离线升级包和Windows上基本相同只不过路径和资源的url不一样。

  1. http://dl.google.com/android/studio/patches/updates.xml 找最新版本号如 0.2.10 (Build number: 132.843336)

  2. 下载补丁 查找到版本号之后,直接从,http://dl.google.com/android/studio/patches/AI-[旧的版本号]-[新的版本号]-patch-mac.jar 例如从 130.737825 升级到 132.843336 就要下载 http://dl.google.com/android/studio/patches/AI-130.737825-132.843336-patch-mac.jar

  3. 下载之后可以把jar文件拷贝到 /Applications/Android Studio/ 然后终端进入到 Android Studio 目录终端输入

    java -classpath XXXX.jar com.intellij.updater.Runner install . (. 不可忽略,代表当前目录)

    然后会弹出一个升级框,即可完成升级。完成后即可删除jar文件