手把手图文教你从Eclipse项目迁移Android Studio
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52937391
从Android的诞生,大家所熟知的开发工具就是IDE就是Eclipse,随着Google大力推荐Android Studio,Eclipse将慢慢推出历史舞台,但是从前很多老项目都是由Eclipse开发,我很信还有绝大部分人在用Eclipse开发,为了适应新形势,迁移已成必不可少的环节。今天以我的开源代码红包精灵(之前用Eclipse开发)为例,github:https://github.com/hejunlin2013/RedPackage,实现在Studio也能开发。
首先搞清楚从哪入手,studio引入了module(模块化)概念,一个工程下面,可以有不同的moudle,这样解耦代码,提供了非常便利的思路。google就是告诉大家,要朝着这个方向走。提高开发效率,用任正非一句话说:中国13亿人民,我们这几个把豆腐磨好,磨成好豆腐,你们好好去发豆芽,把豆芽做好,我们13亿人每个人做好一件事,拼起来就是伟大祖国。对于模块化,这个道理也是相通的。
Androd Studio的默认工程结构和Eclipse工程本质区别在哪?
对于Studio来说,app module下包含一个src,src下就有java,res,AndroidManifest.xml,
对于Eclipse来说,一个工程下,包含src,res,AndroidManifest.xml文件。
能不能通过一些脚本把这些位置移动下,就能把Eclipse工程构建成一个Studio工程了呢?
Gradle提供了自定义目录的功能,因为它是基于Groovy脚本的,脚本总是能帮我们省下许多繁琐的事,像python,lua
话不多说直接上代码:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
这里解释下上面的意思, manifest.srcFile ‘AndroidManifest.xml’表示把AndroidManifest.xml这个文件放到manifest目录下作为源文件,java.srcDirs = [‘src’],这个表示把src目录放到java目录下的src目录,后面也是依此类推
完整build.gradle脚本如下:
apply plugin: 'com.android.application'
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
}
}
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
defaultConfig {
applicationId "com.hejunlin.camerasample2"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile "com.android.support:support-v4:23.4.0"
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
这里要主意一个问题,当把Eclipse这个项目向Studio中构建时,会有一个settting.gradle,如图:
用于配置module的,内容如下:include ‘:app’,由于是从eclipse迁移过来的,没有module这一说,需要把这个文件删除掉。不然就会出现如下所示:
删除之后,就一切正常 ,看下迁移后Eclipse和Studio代码的结构(对用Eclipse开发人员一点也不影响):
Eclipse:
Studio:
整个过程就是这样,如果还在用Eclipse开发的,赶紧迁移到Studio上吧,如果实在有人想用,原来工程一点也不影响,这样双向开发虽然怪,但是用惯了studio的人来说,小小的脚本改变是开发效率。
第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。
如果你觉得好,随手点赞,也是对笔者的肯定,也可以分享此公众号给你更多的人,原创不易
手把手图文教你从Eclipse项目迁移Android Studio的更多相关文章
- Eclipse 项目导入 Android Studio 导致的乱码问题
最近有一个 Eclipse 项目导入 Android Studio 1.4 时出现乱码,Build 提示 Error:(38, 5) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?. 源代码是 GB ...
- 将Eclipse项目导入Android Studio出现中文乱码的问题
以前一直以Eclipse开发项目,最近正在研究Android Studio的使用,首先想到到的是将Eclispe项目导入AS. 可以方便查看以前写过的代码,然后出现了中文乱码的问题,通过搜索了一些资料 ...
- Eclipse项目转Android Studio
刚来某公司的时候,发现Android开发仍然还在使用Eclipse,编码无规范,渠道打包竟然手动,svn版本主干分支管理混乱,总之各种low... 对于有强迫症的我来说,属实不可忍.但无奈,新人一个, ...
- android开发里遇到的坑——eclipse项目导入android studio以后Run按钮灰色
android studio编译有错误但是没有提示给用户,关闭android studio重新启动项目后,会显示错误,修复以后即可!
- eclipse项目转android studio详解
第一步:项目导入 向AS中导入项目的方法有两种(其实是一种). 方法一:是在eclipse中先导出为gradle(如图1),然后打开AS,找到项目中的gradle文件,直接导入. 方法二:直接在AS中 ...
- eclipse项目迁移到android studio(图文最新版)
前言 最近Android studio(下文简称AS)官方发布了正式版,目前火得不行.个人认为主要是因为android是google自家的产品,AS也是他自己搞的IDE,以后的趋势android开发肯 ...
- 从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项
整体要注意的地方 先说明一下整体需要注意的地方 1在Android studio建立项目的时候,要注意包名和原来的完全一致,不然会有很多需要改动. 2依赖的jar一定一定要找齐,不然新建项目引用不到, ...
- 如何把Eclipse项目迁移到AndroidStudio(如何把项目导入安卓)--这我很困惑
学习android对我来说,就是兴趣,所以我以自己的兴趣写出的文章,希望各位多多支持!多多点赞,评论讨论加关注. 大佬必备功能. 把Eclipse项目迁移到AndroidStudio 现在就叫你如何把 ...
- 从 Eclipse 导入项目到 Android Studio
ADT已经有些过时了,现在比较流行的安卓开发工具是Android Studio,毕竟是谷歌一直在推广的. 最近装了as,从之前的adt迁移项目到as上,遇到了不少坎. 主要注意以下两点: (1)文件路 ...
随机推荐
- laydate 日期格式为yyyy 或yyyy-MM时,出现错误Uncaught TypeError: Cannot read property 'length' of undefined
这个改起比较麻烦,没有深究,简单兼容了yyyy 和yyyy-MM,其他格式可能还是会有错误.替换Dates.check方法. //检测日期是否合法 Dates.check = function(){ ...
- jQuery.noConflict() 函数详解
jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权. 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQue ...
- No mapping found for HTTP request with URI [/user/login.do] in DispatcherServlet with name 'dispatcher'错误
1.警告的相关信息 七月 24, 2017 3:53:04 下午 org.springframework.web.servlet.DispatcherServlet noHandlerFound警告: ...
- OpenShift实战(五):OpenShift容器监控Metrics
1.创建持久化metric pv卷 [root@master1 pv]# cat metrics.json apiVersion: v1 kind: PersistentVolume metadata ...
- [LeetCode] Base 7 基数七
Given an integer, return its base 7 string representation. Example 1: Input: 100 Output: "202&q ...
- postgresql 定时任务备份及恢复
编写 脚本文件 如bak.sh,内容如下: ls_date=`date "+%Y%m%d%H%M%S"` pg_dump -U postgres -Ft yourdbname &g ...
- mysql5.5以上 用户的操作
mysql5.5以上 用户的操作(转) 1.创建用户 create user 'username'@'host' identified by 'password'; 参数说明: username: ...
- servlet之session设置
商品对象,购物车对象,servlet的实现 商品: package app02d;public class Product { private int id; private String ...
- bzoj 3745: [Coci2015]Norma
Description Solution 考虑分治: 我们要统计跨越 \(mid\) 的区间的贡献 分最大值和最小值所在位置进行讨论: 设左边枚举到了 \(i\),左边 \([i,mid]\) 的最大 ...
- ●BZOJ 4289 PA2012 Tax
●赘述题目 算了,题目没有重复的必要. 注意理解:对答案造成贡献的是每个点,就是了. 举个栗子: 对于如下数据: 2 1 1 2 1 答案是 2: ●题解 方法:建图(难点)+最短路. 先来几个链接: ...