那些年我们遇到的坑

### 从eclipse到idea再到想在的as转变,都曾添加过很多的lib,从以前的add jar到现在complie lib,在这其中相信大家有踩到过很多的坑,今天我们就把这些踩过的坑跟大家讨论讨论


1.当我们从eclipse中把项目导入到as中很多.9图片出现问题的时候:
在gradel中添加如下代码:

aaptOptions.cruncherEnable = false
aaptOptions.useNewCruncher = false

以此来关闭as对PNG的合法性检查

2.as出错:非法字符:”\ufeff”:需要class,interface,enum

原因:

eclipse只能的把UTF-8+BOM文件转为普通的UTF-8文件,AS还没有这个功能,所以当我们在使用as编译UTF-8+BOM编码的文件时会出现”非法字符:’\ufeff’之类的错误

解决方案:

手动的把UTF-8+BOM编码的文件转化为普通的UTF-8文件,这个可以借助别的编辑器,比如EditPlus.

3.将项目导入AS出现以下问题:

Error:Execution failed for task
‘:app:transformResourcesWithMergeJavaResForDebug’
. > com.android.bui

解决方法:
在build.grade中添加以下代码:
android{
packagingOptions {
exclude ‘META-INF/DEPENDENCIES.txt’
exclude ‘META-INF/NOTICE’
exclude ‘META-INF/NOTICE.txt’
exclude ‘META-INF/LICENSE’
exclude ‘META-INF/LICENSE.txt’
}
}

4.修改了Android项目的minSDKVersion后很过style文件找不到
解决方案
compileSdkVersion 是多少版本的
那么compile ‘com.android.support:appcompat-v7:23.2.1’ 就是啥版本的。

5.AS编译问题:finished with non-zero exit value 2

Error:Execution failed for task ‘
:androidShopNC2014Moblie:transformClassesWithDexForDebug’
.>com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
java.util.concurrent.ExecutionException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process ‘command ‘/Library/Java/JavaVirtualMachines/
jdk1.7.0_79.jdk/Contents/Home/bin/java’’
finished with non-zero exit value 2

解决方案:
这个只需要在gradel中添加这句:
android{
defalutConfig{
multiDexEnable true
}
}

6.AS编译问题:finished with non-zero exit value 1(由于导入依赖出现了重复)

问题日志:

Error:Execution failed for task ‘
:app:transformClassesWithDexForDebug’.
com.Android.build.api.
transform.TransformException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process ‘command ‘F:\Program Files (x86)[Java]
(http://lib.csdn.net/base/17)\jdk1.8.0_31\bin\java.exe
‘ finished with non-zero exit value 1

解决方案:

这个是依赖包重复了,比如很多库都各自添加了v4造成了冲突,可以exclue一个

7.错误日志:

Error:Execution failed for task
‘:app:transformClassesWithJarMergingForDebug’.>
com.android.build.api.transform.TransformException:
java.util.zip.ZipException:duplicate entry:
org/apache/http/ConnectionClosedException.class

通常这个是在几个库中存在了相同的类删掉其中一个或者更改其中一个类的名称

8.添加第三方依赖出现的问题:

Error:Execution failed for task ‘:
app:processDebugManifest’.

Manifest merger failed :
uses-sdk:minSdkVersion 14 cannot be smaller than version
19 declared in library [com.github.meikoz:basic:2.0.3]
/AndroidStudioCode/EnjoyLife/app/build/intermediates/
exploded-aar/
com.github.meikoz/basic/2.0.3/AndroidManifest.xml
Suggestion: use tools:overrideLibrary=”com.android.core”
to force usage

错误原因:

出现这个错误的原因就是您的minSdkVersion小于第三方库中的minSdkVersion
解决方案:

在manifest中添加如下代码

其中xxx为包名,如果存在多个库的异常可以用逗号隔开他们,

这样做可以使项目的manifest文件和第三方的manifest文件忽略掉对最低版本的限制

9.AS的编译问题:finished with non-zero exit value 1
错误日志:

Error:Execution failed for task ‘:app:
transformClassesWithDexForDebug’.
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:
Process ‘command ‘/Library/Java/JavaVirtualMachines/
jdk1.7.0_79.jdk/Contents/Home/bin/java’’
finished with non-zero exit value 1

解决方案:
由于buildToolsVersion版本太高,调低buildToolsVersion

10.Android studio编译问题:Gradle DSL not found ‘android()’
问题描述:
error(51,52)错误:-source 1.6不支持diamond运算符(请使用-source 7或更高版来启动diamond运算符)

解决方法:
android {
compileOptions {sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}