Android Studio 更新 gradle
https://developer.android.com/tools/revisions/gradle-plugin.html
http://www.gradle.org/
如何用 Android Studio 导入开源项目以及常见错误的解决办法
Android Studio build.gradle 插件依赖更新自动检查
- 添加以下部分到项目依赖
1 | apply plugin: 'com.github.ben-manes.versions' |
- 执行检查
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 | Markdown |
Android Studio插件
Java开发必装的IntelliJ IDEA插件
Android自动清理无用资源工具
1 | buildscript { |
- 执行命令清理
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”的问题
参考