您的位置:首页 > 编程语言 > Java开发

eclipse项目转Androidstudio项目过程中遇到的一系列问题及解决办法

2017-03-24 16:26 781 查看
今天依旧闲着,,,于是决定把在eclipse项目转as项目中的问题记录一下,以供以后方便查阅。。(Ps:今天的单曲循环依旧是郝云的《活着》)

准备:

- 一个eclipse项目。

- android studio (我的版本号是2.0的)

泡杯茶,接下来就可以正式开始转了

1:打开As,进入欢迎界面,选择 Import project(Eclipse ADT,Gradle,etc.)

2:选择你的eclipse项目的主工程所在的路径

- 单一工程直接导入即可。

- 有库工程的需要注意,导入一定要指向主工程,而不是整个项目的目录。指向项目目录是无法进行转换的。

- 如图:

-


3:指定目标路径

如图:



4:然后一路next下去,.进行构建中。完成后出现了第一个错误:

Error:(1, 1) 错误: 非法字符: ‘\ufeff’

Error:(1, 10) 错误: 需要class, interface或enum



这个错误的解决方法就是重新编码:选择UTF-8无Bom格式编码 。详情见我的上一篇博客:

地址:http://blog.csdn.net/qq_25497773/article/details/65444978

上面的解决以后又出了第二个错误:

AAPT err(Facade for 1898549589): libpng error: Not a PNG file

Error:Execution failed for task ‘:zhsq:mergeDebugResources’.

Some file crunching failed, see logs for details

如图:



这个错误的原因可能是 UI给了你一个名叫.png的图,但它并不是png,eclipse 不会检查这么仔细,所以不会提示错误。

解决办法是:在你的主工程文件夹里的build.gradle文件里,加上下面这两句:

aaptOptions.cruncherEnabled = false

aaptOptions.useNewCruncher = false

如图:



然后点击sync now,重新编译下,会出现第三个错误:

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

Manifest merger failed : Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:23:9-38

is also present at [zhsq:androidLib:unspecified] AndroidManifest.xml:13:9-45 value=(@drawable/ic_launcher).

Suggestion: add ‘tools:replace=”android:icon”’ to element at AndroidManifest.xml:20:5-71:19 to override.

如图:



这个错误的意思就是你的主工程里面的AndroidManifest里面的内容和库工程里面的AndroidManifest里的application里面的内容重复了。下面是我的主工程下面的AndroidManifest:



下面是我的库工程的AndroidManifest:



两个文件对比了下,可以看到库文件和主工程的application下面都用了 android:icon=”@drawable/ic_launcher”

解决办法就是去掉库工程application下面的android:icon=”@drawable/ic_launcher”。然后再sync now下我发现我转成功了。。可以运行了。。。可以喝杯茶,放松下了。。

but…我看到我的库工程的build.gradle文件中:



这里面的v4包这里有红线。虽然不影响运行,但是我还是想给他去掉。。这里的主要原因是因为,这里v4包的版本号和你的targetSdkVersion版本号不一致导致,我们可以把targetSdkVersion修改成19或者把v4包的版本号换掉。不知道在那篇文章看到过说:这里最好的应该是targetSdkVersioncompileSdkVersion和buildToolsVersion三者保持一致,于是我就把这三个都修改成25.。然后就报错了。。扎心了。。

如图:



原来是因为我项目中用到了 apache的httpclient包

Android 6.0版本已经已经基本将Apahce Http Client 移除出SDK。所以会报出找不到。。

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’ 这样就不会报错了。

Ps:别忘了添加依赖。可以直接在app的build.gradle文件的dependencies节点直接添加一句话:

compile fileTree(dir: ‘libs’, include: [‘*.jar’])

如图:



至此。。彻底结束。。。鼓掌,撒花。。。

感谢:http://www.cnblogs.com/jhj117/p/5638212.html这篇文章的作者。跟着这个文章一步步的转的。

最后送上一句昨天刚看到的话:

只要路是对的,就不要害怕它是短暂还是遥远,你终究会到达。加油
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐