当前位置: 首页 > 编程日记 > 正文

将Eclipse代码导入到AndroidStudio的两种方式

实现步骤

1. 从Eclipse中导出Gradle build files

  • 在Eclipse菜单中 File --> Export-->Generate Gradle build files
    01
  • 接下来会到达警告界面,这里会提示AndroidStudio可以直接导入ADT的工程,先过,后面有直接导入的讲解。
    02
  • 选中你的项目工程,包括主工程和库工程(Library)。
    03
  • 确认生成
    04

2. 修改导出文件参数

导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。
为了保证能够讲解的更清晰,下面分情况讲解一下:

没有库工程,只有主工程

这种情况下你看到的目录是这样的
05

首先需要更改的是 build.gradle 文件
需要将图中红框内的 0.12.+ 改为 2.2.3

  • 然后还需要更新Gradle版本,指定为所需要的2.14.1
    在 /gradle/wrapper/gradle-wrapper.properties里面

含有库工程

其实改动方法和上面一样,只需要注意是改动整个项目的build.gradle和 /gradle/wrapper/gradle-wrapper.properties。
而不要尝试去主工程或者库工程里面找build.gradle
08

3. 导入AndroidStudio

  • 进入到AndroidStudio中,选择导入非AndroidStudio工程
    09
  • 找到需要导入的工程目录,可以看到图标和Eclipse创建的工程不一样。
    10
  • 点击OK,进入漫长的加载过程,之后就可以正常使用了。
    11

已经创建过工程的打开AndroidStudio会直接进入以前的工程
这时候可以选择File-->Import Project, 选中后点击ok
12

兼容模式下的bug

使用IDE的打包:
13

在兼容模式只打主工程的,库工程没有加入到apk中,导致无法正常运行。
截止到1.0.2,AndroidStudio依然存在这个bug。
因为这个bug的存在,你在兼容模式可以使用AndroidStudio编程,打包时开启Eclipse。

OK,兼容模式介绍到这里。 我们开始介绍主角: Android Gradle Project。 这里必须说明的是Google更希望我们使用这种方式,如果没有什么团队的压力,还是使用这种吧。

使用新的目录结构

转换目录结构

  • 打开Import
    • 新用户:
      14
    • 老用户: File-->Import Project
      15
  • 直接找到原有的Eclipse工程
    • 单一工程直接导入即可。
    • 有库工程的需要注意,导入一定要指向主工程,而不是整个项目的目录。指向项目目录是无法进行转换的。
      16
  • 指定目标路径
    17
  • 这个地方需要详细说一下
    18
    这里上面两个选项暂且不说,勾选上。
    最后一项提一下: 将Module名创建为camelCase风格。
    驼峰式,这个搞Java的都会熟悉,camelCase表示首字母小写的驼峰式风格,CamelCase表示首字母大写的驼峰式风格。
    不勾选这个选项意味着你原先的工程名是啥样,转换完就是啥样。
    这里的AndroidStudio会去分析Eclipse工程下的. project文件,里面的name就是你在Eclipse中看到的工程名。(没有此文件时会使用此工程的文件夹名。)
    19
    当然也有例外,比如countly-sdk-android转换完就成了countlysdkandroid,下划线我就不知道了,这个没有再仔细研究规则,不过CamelCase会保持正常。
    这里我比较喜欢让Module首字母大写(不知道为啥看这首字母小写难受),原来的工程就是CamelCase风格,我就不勾选了。
    当然如果这里没注意直接转换成了camelCase但最后又不喜欢怎么办? 可以看后面《如何更改Module名称》部分。
    OK,配置完点击Finish即可

  • 之后需要经过一段时间的转换。成功后可以看到import-summary.txt,这个文件非常有用,后面会讲到。
    20

到这里,你的应用其实已经可以通过AndroidStudio正常编译,你也可以写代码去了。
但我希望你还能继续看下去,因为这个成功后弹出来的import-summary.txt写了些很重要的东西。

带你看懂import-summary.txt

Manifest Merging

Your project uses libraries that provide manifests, and your Eclipse
project did not explicitly turn on manifest merging. In Android Gradle
projects, manifests are always merged (meaning that contents from your
libraries' manifests will be merged into the app manifest. If you had
manually copied contents from library manifests into your app manifest
you may need to remove these for the app to build correctly.

这段应该都能看懂,无非就是说你Library的清单文件有效啦。
不用手工拷贝到主工程的清单文件中了。以前拷贝过的,要移除才能正确build。

Ignored Files(这个最重要)

之所以说这部分重要,是因为AndroidStudio通过这段文字告诉了你,它导入的时候忽略了哪些文件。
也就是说这部分内容,它没给你拷进来,你要是不去自己拷贝,那这部分你新Gradle工程里面就没有了。
这里选一些典型的ignore文件来看一下:

From SDK:
* proguard-project.txt
* proguard.cfg
From UI:
* cert\
* cert\cert
From CrosswalkWebview:
* ant.properties * build.xml From SlidingMenuLibrary: * LICENSE.txt * pom.xml

给上面的忽略文件分分类:

  • 确实不需要的:混淆文件、ant的ant.properties与build.xml、maven的pom.xml。
  • 需要再次声明的: LICENSE.txt。不声明属于盗版侵权啊~~
  • 自定义文件夹和文件:cert。 这个文件夹是自己创建的,不属于Android规定的目录,所以AndroidStudio没给拷贝。

需要留意你的Ignored Files部分,并根据自己的需要手工拷贝到新工程中。

Replaced Jars with Dependencies & Replaced Libraries with Dependencies

在Replaced Jars with Dependencies部分,有如下文字:

android-support-v4.jar => com.android.support:support-v4:21.0.3
gson-2.3.jar => com.google.code.gson:gson:2.3 joda-time-2.6.jar => joda-time:joda-time:2.6

可以看到jar被替换了。 可以看到工程里面没有了当初添加的jar包。那么jar包去哪了呢?
暂时先留个悬念。
我们继续来看 Replaced Libraries with Dependencies部分

ActionbarLibrary =>com.actionbarsherlock:actionbarsherlock:4.4.0@aar com.android.support:support-v4:21.0.3

可以看到ActionbarSherlock被替代为了aar(Android ARchive ,jar : Java ARchive)。关于aar的介绍可以看这里,本文就不再详细展开了。

可以看到的是Library和jar都被替换了,可是你在当前工程里再也找不到了。这是为什么?

跟我来看下面的操作:

  • 在Module上右击,选择Open Module Settings
    21
  • 切换到Dependencies
    22
  • 点击右侧的加号添加,选择Library dependency
    23
  • 可以看到这个界面:
    24

OK,到这里就可以知道真相了,在AndroidStudio中你可以添加在线的库或jar包,添加完成后你就可以和平时一样正常使用。
而你的同事在打开这个工程的时候会即时下载,保证你们的代码都能正常运行。
这也是为什么当你的工程转换完毕后,有些jar和Library消失的原因。他们被转成在线的了。

Moved Files

这部分在讲你的目录结构变化,基本上可以认为他在废话,没什么看的必要了。

Next Steps & Bugs

呵呵,略过吧

最后一句

This import summary is for your information only, and can be deleted
after import once you are satisfied with the results.

你一旦觉得自己的工程没问题了,就可以把这个文件删除了。

导入AndroidStudio工程注意

通过上面的步骤,你的项目已经转换了目录结构,这时候你可以提交代码,供其他同事下载使用了。
其他同事把代码下载下来,他们所需要引入的是一个Android Gradle Project了。

  • 新用户
    • 如果项目中有.idea之类的IntelliJ的文件,开始选择的应该是Open an existing Android Studio project,而不是Import Non-Android Studio project。
    • 如果你下载下来的代码里面只有gradle的文件,即使还是要选Import Non-Android Studio project。
  • 老用户依然使用: File-->Import Project

这里需要提醒的是,对于含有库工程的项目而言, 需要指定整个项目的目录,仅仅指定主工程是没用的。

到这里我们需要停下来总结一下:

  • 如果你导入的是一个Eclipse工程,那么指定主工程目录。AndroidStudio通过分析来帮你完成转换。
  • 如果你导入的是一个AndroidStudio工程,那么指定整个项目的目录 。

附: 如何更改Module名称

在Module上右键refactor--> rename ,当然可以看到有快捷键shift + F6, 这样就可以改变Module的名称了。
但是还没有结束,这样没有更改引用这个Module的地方。
如果他是一个库工程,你还需要继续去查看引用它的地方并进行修改。主要是其他Module的Gradle文件。

Tips:
选中Module,ctrl+c即可复制工程名,在相关Gradle文件中ctrl+v替换成新的名称即可。

最后,别忘了,settings.gradle,这里include的module名称也需要更改。 至此,算是修改结束。

一切修改完毕,点击弹出提示中的Sync Now,让工程重新构建
25
构建结束后就一切正常了。
当然你如果对文件夹的名称也看着不顺眼,也可以去修改文件夹名称,改变后记得重新导入即可。

转载于:https://www.cnblogs.com/wuxinglong/p/6203569.html

相关文章:

微软浏览器适配问题前端_「图」微软新贡献:修复Chromium浏览器的奇怪触控板手势问题...

去年微软宣布计划成为Chromium项目的重要贡献者之一,希望为包括Edge和Chrome在内所有基于Chromium的浏览器带来更多改进和功能。在增强鼠标滚动和搜索功能之外,微软现在将部分精力放在部分Windows 10设备(例如Surface Pro系列和Surface Book系列)上奇怪的…

ruby gems列表

1 https://github.com/shageman/cobradeps 转载于:https://www.cnblogs.com/or2-/p/9268352.html

简明区块链原理

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 “区块链”应有特质: 使用了具有 “哈希链” (下文有解释) 形式的数据结构保存基础数据 有多个结点参与系统运行(分布式…

Bash shell

一、认识bash shell 1、登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2、bash shell 功能 a. 命令记忆能力(history),默认1000个,存在~/.bash_history文件 b. 命令与文件补全功能(Tab键…

快过高铁!构建云分布式应用还能这样操作?!

先跟跟大家说一个中国历史上杰出的军事家、政治家,长长的胡子,红的发黑的脸,骑着一匹红色的马。没错!他就是三国跑的最快的男人——曹操(说曹操曹操到)! 不说笑了。 关羽,字云长&…

基于安卓的考试系统_基于安卓11定制!华为最新手机系统曝光:体验堪比苹果iOS!...

在最近的一场发布会上,华为正式宣布了自家的HMS和AppGallery服务,对标安卓Play商店和苹果Appstore商店,这一举措让华为再度登上风口浪尖。这种做法在业界人士眼里的目的只有一个,华为要脱离安卓系统自立门户,从建立第三…

区块链前世今生

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 比特币的起源 2008年,一位化名为中本聪的人,在一篇为《比特币:一个点对点的电子现金系统》的论文中首先提出了比…

前端知识之HTML内容

参考:http://www.cnblogs.com/liwenzhou/p/7988087.html HTML介绍 Web服务本质 import socketsk socket.socket()sk.bind(("127.0.0.1", 8080)) sk.listen(5)while True:conn, addr sk.accept()data conn.recv(8096)conn.send(b"HTTP/1.1 200 OK\r\n\r\n&qu…

征途linux mysql_MySql征途之mysql常用命令

mysql征程之mysql常用命令一、连接MySql语法: mysql -h 主机地址 -u 用户名 -p 用户密码例1:连接到本机上的MYSQL。键入命令mysql -u root -p(本地连接 主机地址可以不写),回车后提示你输入密码,输入正确之后&#xff…

区块链+物联网=?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链与物联网(IoT)的交叉应用已成为最有前途的区块链用例之一。在过去的几个月里,IoTeX一直与我们的战略合作伙伴合作,并…

mysql 中文截取_mysql 截取中文字符

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户…

2016年度工作总结

一想起来今天全办公室人都在写年终总结的场景,不由自主的笑开了颜,因为我把一名程序媛的年终总结硬生生的写成了一篇“散文”,而且还是很“冒牌”的总结,以下就是“散文版”的总结。 在紧锣密鼓的业务GO推广上线期间,x…

django-后台sms管理系统的css框架

django-后台sms管理系统的css框架 地址:https://adminlte.io/ 下载代码。使用index.html的页面及相关文件 通过下在线检查adminlte.io的后台的各种模块元素,仿写。posted on 2018-07-06 11:41 .Tang 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.c…

go语言学习-iota

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Go没有枚举类型,可以用常量模拟可以用iota生成从0 开始的自动增长的枚举值。按行递增,可以省略后续行的 iota 关键字. iota 在一个const()中每次累…

mysql中查询表格属性

(1)获取数据库表格列设置的长度,SQL SELECT CHARACTER_MAXIMUM_LENGTH FROM information_schema.COLUMNS WHERE TABLE_NAME表名 AND TABLE_SCHEMA数据库名 AND COLUMN_NAME字段名 (1)查出数据库表格所有的属性 SELECT …

BZOJ 2190: [SDOI2008]仪仗队

2190: [SDOI2008]仪仗队 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 2689 Solved: 1713[Submit][Status][Discuss]Description 作为体育委员,C君负责这次运动会仪仗队的训练。仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一&…

mysql下载解压安装_mysql zip 解压安装

系统:win10 专业版mysql 5.7.21 解压安装。对于Windows,mysql官网推荐使用可执行文件进行安装,这里我还是暂时用noinstall 解压zip文件来安装从zip压缩包安装mysql的过程如下:1. 解压文档到指定目录2. 创建选项文件如果您在运行服…

go 性能相关总结

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 性能测试基本概念 基本概念 Benchmark: 性能测试 ns/op: 纳秒/每个操作,前面数值越小越快 命令 go test -c go test -test.bench. -t…

64位 ubuntu android studio gradle 权限不够 缺少文件和权限导致

安装 32位 库文件 sudo apt-get install lib32z1 给文件夹加权限 chmod 777 -R SDK chmod 777 -R android-studio -R表示所有子文件和文件夹 模拟器需要下载 gcc3-libs.tar.bz2 把文件解压移动到 /lib 即可转载于:https://www.cnblogs.com/exayong/p/6216077.html

微信是个坑货4-网页授权

功能:认证服务号通过网页授权获取用户信息 --公众号后台配置 》此次设置的是网页授权域名,设置成你调试的域名或者正式备案的域名(不带http或https)。 --自定义菜单设置 设置参数: appid:微信公众号的appid uri&#x…

root 123 mysql_MySQL常用命令

1、查看数据库状态 及启动停止/etc/init.d/mysqld status/etc/init.d/mysqld start/etc/init.d/mysqld stop2、给用户配置初始密码123456:mysqladmin -u root -password 1234563、修改root用户密码为 abc123mysqladmin -u root -p123456 password abc1234、如果想去…

想挖矿?不如先学习一下以太坊

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 许多使用点对点协议且基于区块链的项目在性能和吞吐量上夸大其辞。在研发阶段,这些项目已经出现了一些创新,但是一旦这些协…

Kubernetes入门

简介  它是一个全新的基于容器技术的分布式解决方案,基于强大的自动化机制解决传统系统架构中负载均衡和实施部署的问题,从而节省了30%开发成本,其次具有完备的集群能力, 包括服务注册、服务发现、故障的发现和修复、服务滚动升…

ubuntu 14.04安装postgresql最新版本

官网: https://www.postgresql.org/download/linux/ubuntu/ -------------------------------------------------------------------------------------------------------------------- 另一篇文章,讲的差不多也是这个: http://tecadmin.net…

c++ mysql ctime_C++操作mysql数据库范例代码

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。#include #include void TestMySQL(){TRACE("MySQL client version: %s\n",mysql_get_client_info());MYSQL *conn mysql_init(NULL);if (conn NULL…

链客区块链技术问答社区

链客是中国领先的区块链垂直领域技术问答社区(www.liankexing.com),旨在为大家提供一个直接、高效的技术交流平台,区块链技术爱好者遇到的每一个问题,链客做到有问必答! 在这里: ①海量的真实…

oracle imp dmp

imp helpy导入自己的表:exp scott/tigerorcl tables(student, address) fileD:\scott_stu_add.dmp logD:\scott_stu_add.logimp scott/tigerorcl fileD:\scott_stu_add.dmp logD:log.logimp scott/tigerorcl fileD:\scott_stu_add.dmp tablesstudent 导入别人的表&a…

STM32普通定时器(TIM2-7)的时钟源

STM32普通定时器(TIM2-7)的时钟源 转载于:https://www.cnblogs.com/LittleTiger/p/6218048.html

operate函数_跟着 redux 学 compose组合函数

▲ 点击上方蓝字关注我 ▲把你的心 我的心串一串 串一株幸运草 串一个同心圆文 / 景朝霞来源公号 / 朝霞的光影笔记ID / zhaoxiajingjing目录0 / 热热身1 / redux 中的compose函数2 / 逐步分析(1)compose()函数调用① reduce第一轮遍历② reduce第一轮遍历③ reduce第三轮遍历(…

感恩有你,链客一周年!

感恩有你,链客一周年! 2018年6月16日,天气:晴,在这一天,诞生了一个崭新的技术社区:链客区块链技术问答社区(www.liankexing.com) 她的诞生让我们赋予了’利他‘的概念,…