您当前的位置: 首页 >  eclipse

xiangzhihong8

暂无认证

  • 2浏览

    0关注

    1324博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

将studio项目 转换为eclipse项目

xiangzhihong8 发布时间:2015-09-15 22:20:02 ,浏览量:2

总会有些奇怪的事情,比如,有的人就有将studio项目 转换为eclipse项目的需求

首先,不要因为编译原因而放弃。studio项目是完全可以转换成eclipse的

本站的开源代码板块有很多项目都是android studio开发的,很多同学以为必须要先学会studio,才能编译这些源代码,于是花了很长时间学studio,结果发现还是不会。其实任何studio项目都是可以转换成eclipse的,eclipse目前的编译能力比studio只会多不会少。只要你熟练了,一个中等复杂的studio项目转成eclipse也只是分分钟的事情。 在这里我要强调的是开源代码板块的studio项目95%以上都是我亲自编译成功并且运行了的,而剩下我没有验证的极少部分往往是因为该项目在github上已经得到非常多的star,而编译起来又异常复杂,但这是极少数的情况。

转换方法

下面来谈谈studio到eclipse的转换问题。在studio项目转换成eclipse项目的过程中,对于studio的知识点只需记住条:studio项目中src/main目录下才是真正的项目代码,main下java目录里面的代码对应的是eclispe项目中的src目录中的代码。至于其他什么乱七八糟的Gradle 代码,完全不要去理会。

比如在twoway-view 项目中在使用方法里面就有如下代码

1
2
3
4
5
6
7
repositories {
     maven { url  "https://oss.sonatype.org/content/repositories/snapshots/"  }
}
 
dependencies {
     compile  'org.lucasr.twowayview:core:1.0.0-SNAPSHOT@aar'
     compile  'org.lucasr.twowayview:layouts:1.0.0-SNAPSHOT@aar' }

看不懂?没关系,我也看不懂。你只要看懂上面红色文字部分的意思就行了。

首先要讲的就是项目结构的转换,这一点很基础,我已经在http://jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0918/1692.html一文中讲解过。

但是那篇文章没有结合具体的例子来说明,因此对于新手来讲,还是很难开头。其实除了项目的结构之外,项目的依赖关系其实也是一个难点:对于一个studio项目我们如何知道他依赖了哪些东西呢?

一个比较典型的实例

一般来讲一个项目如果没有什么新系统的特征,直接转换成eclipse的目录结构然后eclipse import进去就ok了,但是现在很多项目往往使用了Material Design中的一些东西,比如ToolBar,RecyclerView以及appcompat的主题等,这种依赖关系就比较复杂。

下面我以https://github.com/TonicArtos/SuperSLiM 为例讲解如何将它转换成eclipse项目。

更改项目结构

首先下载然后解压:

QQ图片20150110173851.png

这么复杂!吓到了是吧,没关系很多文件和目录我可以直接删掉,从文件的名称来看example下面应该是demo代码,library下面是库代码。其他的直接删掉,当然为了保险起见,你还是点击去看下如果里面有src目录基本上就可以确认这是跟项目代码相关的了。删掉其他文件和目录之后我们就只剩下:

QQ图片20150110174358.png

心情顿时就好了。

我们先来解决library目录中的问题。打开library

QQ图片20150110174530.png

回想上面说的studio项目中src/main目录下才是真正的项目代码。因此我们将src/main中的文件全部copy出来,其他的都可以直接删掉了,至于copy出来放在哪里那是你的事,一般我自己的做法是直接放在library目录下,然后删除掉copy文件之外的所有东西。如果你按照我描述的做,那么到这一步library下面应该是这样的:

QQ图片20150110175203.png

再回想上面说的main下java目录里面的代码对应的是eclispe项目中的src目录中的代码。因此我们将java目录改名src目录:

QQ图片20150110175559.png

这不就是熟悉的eclipse项目么,其实非常简单,本来我是不想写那么多的,但是有些人就是不会。至此library目录中的项目结构我们就改造完成了。

按照完全一致的方法我们去改造example目录。

导入eclipse

将修正过的项目(此处为SuperSLiM-master目录)下的所有内容导入到eclipse中:

QQ图片20150110180018.jpg

导入之后生成了library和MainActivity两个project:

QQ图片20150110235355.jpg

library是库,而MainActivity中是demo,通常我喜欢将他们的项目名称改成github上的名称,这里我分别更改为:SuperSLiMLibrary和SuperSLiMDemo

解决错误

从上图中可以看到导入的两个project有错误,其实这些错误基本上是依赖关系导致的。因为SuperSLiMDemo是依赖于SuperSLiMLibrary的,所以我们先从SuperSLiMLibrary中的错误入手。

在这个时候我并不知道这些错误具体产生的原因,所以我需要查看具体的错误文件,打开项目的包,发现以下java文件有红叉:

QQ图片20150111000222.png

随便选择一个文件进去看看,这里我就选择第一个好了找到了第一个错误:

QQ图片20150111000437.png

LayoutState的recyclerState方法找不到,LayoutState不就是上图中的第三个文件么,进去很多错误,随便截个图

QQ图片20150111000638.png

显然是需要导入RecyclerView包了。期望导入RecyclerView之后就不会有任何问题了。

导入后发现大部分错误不见了,只有LayoutState还有错误,原来是因为LayoutState中有这样的代码

1
  if  (Build.VERSION.SDK_INT 
关注
打赏
1482932726
查看更多评论
0.0422s