Title

Android Studio 2.0-安装


Android Studio 更新 gradle

https://developer.android.com/tools/revisions/gradle-plugin.html
http://www.gradle.org/
如何用 Android Studio 导入开源项目以及常见错误的解决办法

Android Studio有哪些非常好用的插件?


Android Studio build.gradle 插件依赖更新自动检查

  • 添加以下部分到项目依赖
1
2
3
4
5
6
7
8
9
10
11
12
apply plugin: 'com.github.ben-manes.versions'

buildscript {
repositories {
jcenter()
}

dependencies {
classpath 'com.github.ben-manes:gradle-versions-plugin:0.12.0'
// classpath 'org.codehaus.groovy:groovy-backports-compat23:2.3.5' // uncomment if you're using Gradle 1.x
}
}
  • 执行检查
1
gradlew dependencyUpdates -Drevision=release

How to check if gradle dependency has new version
ben-manes/gradle-versions-plugin



Android Studio Live Template

在Android Studio 中,我们会发现有时候我们有一些打出一些拼写就会出来一些东西.比如:psvm

Android Studio live templates 的使用


Android Studio 无线调试

pedrovgs/AndroidWiFiADB
Android wifi无线调试App新玩法ADB WIFI


Android Studio 加速

加速Android Studio/Gradle构建
Android Studio的Gradle的加速


Android Studio插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Markdown

.ignore
Genymotion
Lombok
Android ButterKnife Zelezny //
ADB WIFI
Android Parcelable code generator // https://github.com/mcharmas/android-parcelable-intellij-plugin
ideavim

GsonFormat //五颗星推荐,把json数据往粘贴板一贴,自动生成Bean有没有,显著提高生成力.
Android Methods Count // http://www.methodscount.com/plugins

android-material-design-icon-generator-plugin // https://github.com/konifar/android-material-design-icon-generator-plugin
...


Gsonformat
Android Postfix Completion
AndroidAccessors
Lifecycle Sorter

JsonOnlineViewer
CodeGlance
findBugs-IDEA

Android Studio插件
Java开发必装的IntelliJ IDEA插件


Android自动清理无用资源工具

lint-cleaner-plugin

1
2
3
4
5
6
7
8
9
10
11
12
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
classpath 'com.droidtitan:lint-cleaner-plugin:0.3.0'
}
}

apply plugin: 'android'
apply plugin: 'com.droidtitan.lintcleaner'
  • 执行命令清理
1
gradle lintClean
  • 搜索 UnusedResources 手动删除未使用的资源文件

Android Studio 瘦身攻略清理无用的资源(Image. Layout. Strings. Color)
Android自动清理无用资源工具
清除Android工程中没用到的资源


常见问题

编译项目时,提示错误

Execution failed for task ':assetManager:processDebugResources'.
 > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'G:\Program Files\Android\sdk\build-tools\22.0.1\aapt.exe'' finished with non-zero exit value 1

执行 输出编译详情

./gradlew assembleDebug --info

在Win8下,若需要在命令行下使用gradlw命令,添加到系统环境变量 PATH 下 G:\Program Files\Android\Android Studio\gradle\gradle-2.4\bin

使用命令行编译打包android-gradle项目

1. 执行 ./gradlew -v 来查看下项目所用的Gradle版本
2. 接着执行 ./gradlew clean
3. 最后执行 ./gradlew build

紧接着在 9GAG/app/build/outputs/apk 目录下会看到类似于app-debug-unaligned.apk, app-release-unsigned.apk等,看名字应该能理解意思,unaligned代表没有进行zip优化的,unsigned代表没有签名的.然后就可以直接安装apk查看运行效果了.


编译项目时,提示错误

Error:Execution failed for task ':assetManager:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'G:\Program Files\Java\jdk8\bin\java.exe'' finished with non-zero exit value 2

肯定是哪里依赖有冲突重复的包了,将依赖注释掉即可

经验总结

清除不必要的/libs/.jar包,即使没用引入
尽量不要引入本地包,使用 compile ‘io.reactivex:rxjava:1.0.14’ 的形式引入包
把不需要的jar包给删除了就可以了,亲测有效,重点排查android.support:appcompat-v7和com.android.support:support-v4包这个得用compile方法导入
//有相同包了,注意finished这句话,删除包,就可以了
compile 包引入重复的其它关联包,(版本不同也会重复引入,比如 android 注解库),使用 exclude 去掉关联引用:

compile('io.reactivex:rxandroid:1.0.1') {
    exclude module: 'rxjava', group: 'io.reactivex'
}

参考 Error:Execution failed for task ‘:app:dexDebug’. > com.android.ide.common.process.ProcessException


Android API 22 以上已经弃用了 httpclient 支持,需要额外引入:

compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

使用

useLibrary  'org.apache.http.legacy'

引入旧版支持,无代码提示
但是使用手动导包到 libs下引用,像下面这样,就会提示上面的错误

compile files('libs/org.apache.http.legacy.jar')

所有还是通过下面这种方式导包

android {
    ...
    useLibrary  'org.apache.http.legacy'
}

并且两种情况都不需要引入下面这两个依赖包

///compile "org.apache.httpcomponents:httpclient:4.+"
///compile "org.apache.httpcomponents:httpcore:4.+" //需要引入,否则会出现错误 Error:(250, 17) 错误: 找不到符号 符号: 类 NameValuePair

编译项目时,提示错误

Error:Execution failed for task ':assetManager:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'G:\Program Files\Java\jdk8\bin\java.exe'' finished with non-zero exit value 1

将 java 1.8 改成 java 1.7 即可

compileOptions {
    encoding "UTF-8" //手动添加的
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

将 targetCompatibility JavaVersion.VERSION_1_7 改成 targetCompatibility JavaVersion.VERSION_1_8 后提示 lint * 错误,后参考项目 rxjava-webservice 的配置添加 retrolambda 解决


build.gradle 引入 compile ‘com.daimajia.easing:library:1.0.0@aar’ 后,出现以下错误

:app:processDebugManifest
F:\BaiDuCloud\StudioProjects\ShangYun\app\src\debug\AndroidManifest.xml:68:9-38 Error:
    Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:68:9-38
    is also present at [com.daimajia.easing:library:1.0.0] AndroidManifest.xml:13:9-45 value=(@drawable/ic_launcher)
    Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:65:5-580:19 to override
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:68:9-38
    is also present at [com.daimajia.easing:library:1.0.0] AndroidManifest.xml:13:9-45 value=(@drawable/ic_launcher)
    Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:65:5-580:19 to override

因为引入的库与当前主项目的logo有冲突,于是按以下修改:

在Manifest.xml的application标签下添加tools:replace=”android:icon, android:theme”(多个属性用,隔开,并且记住在manifest根标签上加入xmlns:tools=”http://schemas.android.com/tools",否则会找不到namespace哦)
参考 http://blog.csdn.net/codezjx/article/details/38669939


软件包引入依赖过多文件之后,起用 renderscriptTargetApi 19 和 renderscriptSupportModeEnabled true 后出现以下错误:

com.android.dex.DexIndexOverflowException: Cannot merge new index 65536 into a non-jumbo instruction!

添加如下配置后解决问题

android {
    ...
    dexOptions {
        jumboMode true
    }
}

但是在一些旧的Android机上可能不能安装, 还是要想办法控制包数量的大小,不用的包去掉 其中 lombok 占用 1323kb,注释掉后没有出现问题,参考:
DexIndexOverflowException: Cannot merge new index 65772 into a non-jumbo instruction!: Jumbo Mode? and/or Multi-Dex? What is behind the scene?
Android Studio ONLY! DexException: Cannot merge new index 65536 into a non-jumbo instruction
解决”Cannot merge new index 67208 into a non-jumbo instruction”的问题


参考

http://stackoverflow.com/questions/28640314/android-studio-fails-to-debug-with-error-org-gradle-process-internal-execexcepti

文章目录
  1. 1. Android Studio 更新 gradle
  2. 2. Android Studio build.gradle 插件依赖更新自动检查
  3. 3. Android Studio Live Template
  4. 4. Android Studio 无线调试
  5. 5. Android Studio 加速
  6. 6. Android Studio插件
  7. 7. Android自动清理无用资源工具
  8. 8. 常见问题
    1. 8.1. 经验总结