注册

Android项目从Eclipse导入到Android Studio中遇到的一些坑

之前开发环境刚从Eclipse切换到Android Studio时做过Android项目由Elipse导入到Studio的总结,也踩过几个坑,随手解决了。但是并没有记录下来。今天遇到一个需求需要导入到Studio中跑一下项目时,费了好长时间才弄成功。干脆,就把踩过的几个坑记录一下,既可以回头来看,也兴许能帮助到别人。
1.项目中使用了其他library的项目.

我导的项目刚好就是在Eclipse中依赖了两个额外的独立的library;在Android Studio 选择条目界面选择从Eclipse项目中导入时,向下continue两步就会提示无法完成设置sdk,导入不成功。
解决方案:该问题的解决办法是,到原来的Eclipse项目中,把原来的依赖解除掉。具体的步骤为:在Eclipse项目根目录下的project.properties文件中将设置的target,以及android.library.reference全部注视掉,之后再次open选择项目,就能够导入打开。

2.依赖模块指定sdk版本不存在的问题

由于很多项目都有依赖,所以导入主module之后还要依次导入依赖的module,然后做依赖关联。在进行完这些操作之后,编译项目时,有可能还会编译失败,这个时候首先要检查一下依赖是否已经进行关联,其次要检查一下配置文件是否有误,也就是各个module的gradle文件以及整个项目的build.gradle文件;很多时候都是出在配置文件上。我遇到的问题是依赖的module导入后build.gradle中指定的编译sdk为10,我本地环境不存在该版本的sdk,所以编译失败不通过。
解决方案:根据我自己的经验,说下我的解决思路,不一定对,仅供参考。遇到编译失败的问题,首先就是看主module和各依赖module的依赖关系是否已经关联,然后查看各个module的配置文件以及整个项目的build.gradle,一般的编译失败在terminal中都会有相应的错误日志,以及提示如何修改,根据日志进行修改能更明确。另外,像我遇到的各个module中指定sdk版本不一致的问题,为了方便,可以对所有的module都指定统一的编译sdk,具体的做法就是在项目根目录下的配置文件中声明指定,然后在各个module的build.gradle文件中进行引用

3.某些png图片编译时提示:libpng warning : iCCP: Not recognizeizing known sRGB profile that has been edited问题

解决了上面的问题之后就是提示该问题了,还是编译失败。其实之前在别的项目中遇到过类似的警告,没有解决也能编译通过,但是今天编译走到这就提示这些,然后编译失败,没办法,只能解决了把该问题排除。具体的原因真没弄明白,看晚上的资料说新版本编译条件比旧版本要苛刻,所以会提示这个问题。下面说下该问题的解决办法。
解决方案:解决该问题需要借助一个图片编辑工具,我选择的是Image Maglick,下载安装没得说。然后打开终端,执行如下命令:
find <path to res folder> -name *.png -exec mogrify +profile sRGB {}  \;
等待命令执行完成即可。将terminal中提示的所有的目录都执行一遍该命令,然后再进行编译就可以。具体的上面这句命令的意思大概就是:删除所有png文件内的profile sRGB。在写这篇博客的时候,我重新搜了下别人提供的答案,有人说是5.0以后编译会提示该警告,所以还有一种方案是修改编译工具的版本由
buildToolsVersion "22.0.1" 改为 buildToolsVersion "20.0.0"
这种方案我并没有试过,有遇到该问题的可以尝试解决试试。
 
4.编译提示多个资源文件被重复定义的问题

有的时候编译失败之后,terminal内的编译日志会提示多个文件重复定义的问题,导致编译不能通过。
解决方案:该问题的解决方案很简单,也很暴力,直接根据提示重复的文件名找到主module中的该资源文件,删除即可。需要注意的是,删除时要删除主module中的资源文件,保留依赖module中的声明。因为在Android Studio中主module中能够引用依赖module中的资源,而依赖module中不能引用主module中的资源。

5.Java finished with non-zero exit value 1的问题

出现这个value 1的问题就是项目中有明确的报错的问题了。比如AndroidManifest文件中存在项目中已不存在的Activity声明,比如布局文件中引用资源错误,比如drawable提示找不到或者程序中有问题等,都是value 1的失败提示。总之,value 1的问题一定是程序中有明显的错误,Android Studio编译时检查比Eclipse要严格,所以就会提示错误,这个需要自己根据自己的项目去找,思路同样也是结合terminal日志提示,外加从配置文件到程序,依次进行。

6.Java finished with non-zero exit value 2的问题

出现value 2的问题原因比较好找,就是jar包冲突,出现此问题意味着项目中引用了重复的jar包。通常最最常见的jar包冲突就是v4包的冲突。我们的项目中配置别人的依赖时也遇到过v4的冲突,这个需要在配置里面将v4去除。具体的配置格式大概如下:
compile('cn.trinea.android.view.autoscrollviewpager:android-auto-scroll-view-pager:1.1.2') {    
exclude module: 'support-v4'
}
我遇到的大概的就是这几类问题,可能有重复,也肯定是不全。有误的地方欢迎追加指出。

本文作者喜欢而非坚持
 

1 个评论

还有几个: .9图片格式不对 不是gradle项目 方法过时

要回复文章请先登录注册