今天把Eclipse项目转化AndroidStudio项目中遇到的问题,记录一下
导入进去之后,就看到这样的加载画面。
refreshing vcs history 这肯定是因为之前上传到svn服务器过。
因为加载的时间久了点,我就点击进度条后面红叉停止了加载。
注:如果要重新上传请删掉之前项目的隐藏文件.svn,这个.svn几乎每个目录下都有,最好搜索然后一并删除,
还有如果上传不了,svn format选择的时候1.6或者1.7,有时候1.8有问题上传不上去。
还有这样出现的一个错误提示
URL: svn: E155036: Please see the 'svn upgrade' command svn: E155036: The working copy at 'D:\project_as_1\MyUyac\ElegantLife2.1.0' is too old (format 12) to work with client version '1.9.4 (r1740329)' (expects format 31). You need to upgrade the working copy first.
暂时先不管这个问题 先看下能不能运行
然后运行 ,就报错了。
Error:Execution failed for task ':social_sdk_library_project:transformResourcesWithMergeJavaResForRelease'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/org.twitter4j/twitter4j-core/pom.xml
File1: D:\AndroidStudioProjects\Uyac2.3\social_sdk_library_project\libs\twitter4j-core-4.0.4.jar
File2: D:\AndroidStudioProjects\Uyac2.3\social_sdk_library_project\libs\SocialSDK_twitter.jar
这是第一个错误,查了下错误原因:
错误原因
项目依赖方法是并集jar包,Twitter4j 包包含了httpmime包。
解决办法
删除httpmime包(实际未解决,出现下面这个错误)
出现错误参考点击打开链接
好吧接着报错。
问题:
D:\project_as_1\MyUyac\ElegantLife2.1.0\build\intermediates\res\merged\debug\values-v23\values-v23.xml
Error:(4) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
Error:(34) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.
解决:将 compileSdkVersion23调成23就好了
注意:这里说一下compileSdkVersion、buildToolsVersion、targerSdkVersion最好保持一致,比如下图targetSdkVerion最好改为23.
接着继续运行
错误:
问题 : 没有httpclient包
Error:(5, 23) 错误: 程序包org.apache.http不存在
Error:(118, 34) 错误: 找不到符号
解决:找到sdk下的httpclient包,放在主lib下面。下图org.apache.http.legacy.jar 就是httpclient包。
重要:但是这样虽然不报错了,但是很容易和其它jar冲突,造成重复,比如和okhttp。
好的办法是:在android{}中加上 useLibrary'org.apache.http.legacy' 这样就不会报错了。
问题:
错误:
com.umeng.socialize.activity 不存在
解决:这个是我自己的原因,不小心SocialSDK_alipay.jar删掉了。
好吧继续,还是报错。天!!
错误:
错误原因:是说/apache/commons/codec/Decoder; 这个类重复了。只要有finished with non-zero就是有重复的。
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lorg/apache/commons/codec/Decoder;
:ElegantLife2.1.0:transformClassesWithDexForDebug FAILED
Error:Execution failed for task ':ElegantLife2.1.0: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 'C:\Program Files\Java\jdk1.7.0_60\bin\java.exe'' finished with non-zero exit value 2
解决:Lorg/apache/commons/codec/Decoder; 我这里是httpclient和okhttp冲突了。这里依照上面的办法。
好的办法是:在android{}中加上 useLibrary 'org.apache.http.legacy' 这样就不会报错了。
事情还没有完,我这里还在报错。
问题:
错误原因:我也不知道
Error:Execution failed for task ':ElegantLife2.1.0:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okio/okio/pom.xml
File1: D:\project_as_1\MyUyac\ElegantLife2.1.0\libs\okio-1.6.0.jar
File2: D:\project_as_1\MyUyac\ElegantLife2.1.0\libs\com.umeng.message.lib_v2.5.0.jar
解决:在android{}里面加上代码
packagingOptions {
exclude 'META-INF/NOTICE' // will not include NOTICE file
exclude 'META-INF/LICENSE' // will not include LICENSE file
exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
}