解决无限 This file is indented with tabs instead of 4 spaces
File -> Settings -> Editor -> Code Style -> Java -> Tabs and Indents -> 勾选Use tab character选项
配置阿里Maven仓库加速Gradle构建
1 | allprojects { |
升级Andorid Studio 2.3.0无法使用Instant run
1 | This version of Android Studio is incompatible with the Gradle Plugin used. Try disabling Instant Run (or updating either the IDE or the Gradle plugin to the latest version) |
关闭Instant Run即可
卡在Building XXX Gradle project info
方式一
项目中gradle-wrapper-gradle-wrapper.properties文件distributionUrl字段是编译项目所用的Gradle,如果本地没有这个Gradle版本,需要从网络上下载,下载速度极其感人。
把distributionUrl字段的值改为本地已有的Gradle版本即可,例如:
1 | distributionUrl=file\:/Users/Kevin/Workspaces/Gradle/gradle-3.4.1-all.zip |
由于每次都要修改distributionUrl
字段,不符合一个追求完美的程序员的作风。
方式二
- 新建一个项目在里面查找:
gradle-wrapper.properties
这个文件,看到:distributionUrl=https\://services.gradle.org/distributions/gradle-xxx-all.zip;
这里说明推荐gradle版本需要用xxx版本 - 自己上网下载到这个包:
gradle-xxx-all.zip
进入目录/Users/xxx/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv,(8bnwg5hd3w55iofp58khbp6yv这个文件夹各个机器不一样),将里面的东西全部删掉 - 将下载的gradle-2.14.1-all.zip放到这里
- 重新启动android studio,gradle将会顺利通过。
gradle替换AndroidManifest中的占位符
1 | <application |
1 | buildTypes { |
java.util.concurrent.ExecutionException
1 | Error:Execution failed for task ':app.main:transformClassesWithDexForDebug'. |
在 gradle.properties
中增加如下配置:
1 | org.gradle.jvmargs=-Xmx10248m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 |
java.lang.NoClassDefFoundError: rx.plugins.RxJavaPlugins
来自 stackOverflow 的翻译:
该问题可能是没有初始化 Multidex 选项导致的:
Android 5.0 之后的版本支持 Multidex
5.0 之后的 Android 版本用了一个叫做 ART 的运行时,它支持从 APK 文件中加载多 dex ,ART 在应用初始化的时候执行预编译,扫描 classes(..N).dex 文件并且编译它们为一个 .oat 文件,用于 Android 设备执行,关于 Android 5.0 运行时更多的资料,请看ART 的介绍,App 能够在 API21 上正常工作就是这个原因
Android 5.0 之前的设备支持 Multidex
Android 5.0 之前的平台用的是 Dalvik 运行时执行 App 代码的。默认情况下,Dalvik 限制每个 APK 只能是一个 classes.dex 字节码文件。为了绕过这个限制,可以使用 Multidex 的支持库,该支持库将会变成你应用程序主 DEX 文件的一部分,用来管理对附加 DEX 文件以及其包含代码的访问
如果出现了 java.lang.NoClassDefFoundError: rx.plugins.RxJavaPlugins
异常,首先确定一下设备的 Android 版本信息,如果低于 5.0,就可以采用一下方案解决:
首先导入 Multidex 支持库:
1 | dependencies { |
自定义一个 application ,然后让它继承 MultiDexApplication
,如下所示:
1 | public class CustomApp extends MultiDexApplication { |
Build APK 报错
Error:java.lang.OutOfMemoryError: GC overhead limit exceeded
在 gradle.properties
文件中添加如下配置:
1 | org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 |
mips64el-linux-android-strip
A problem occurred starting process ‘command ‘/Users/Kevin/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/bin/mips64el-linux-android-strip’’
官方 NDK 版本历史中的最新版已经移除了 MIPS
和 MIPS64
,如果项目中有用到需要下载较低版本替换即可,Revision 16b中虽然已经废弃了,但是还存在,Revision 17c 中已经没有这个库了
评论