刚来某公司的时候,发现Android开发仍然还在使用Eclipse,编码无规范,渠道打包竟然手动,svn版本主干分支管理混乱,总之各种low。。。

对于有强迫症的我来说,属实不可忍。但无奈,新人一个,没有话语权。

  经过几个月的磨练和见证,实战中终于可以雷厉风行的把自己最精锐的东西展示(说白了就像处女座的追求完美)。

  前面讲述到了Android 开发规范 ,当然这是转载别人的,涵盖的范围还是比较广的。

  另外还有Eclipse打包多渠道包,这个也是转载别人的,说明的很详细,当然这里面关系到我本地Eclipse版本和环境,因而gradle的版本以及语法都有不一致的地方,但关键是要看报错的信息,具体的问题具体分析,不懂的通过百度总能解决。再次有Eclipse打包多渠道包(库工程版),这个是在上一篇的基础上延伸的,全部都是自己爬坑,主要还是gradle的配置。

  svn版本主干分支管理有专门的人员负责,主要是思想是:保证基线代码不被改得(主干),每个版本代码各一份(分支);版本迭代完成,合入到主干中去(我司就是这样),其实我觉得应该是基线代码也要区分版本保存,这样可以追查历史版本代码(真的很关键),就是基线不合 并(上家公司就是这样做)。

  Android Studio(AS)出来的时候的确很多bug,不过相比Eclipse是恨人性化的IDE了。现在我使用的AS版本是2.3.2,因为gradle版本也是2.3.2,那么Eclipse项目转成AS项目,坑就比较多了。

1.我开始是Eclipse导出的方式生成gradle文件,再通过AS导入。这个方式有很多报错,主要是Eclipse导出的时候gradle版本是根据Eclipse版本生成,那么和AS环境就会冲突,报错在所难免,另外就是项目的文件结构和Eclipse差不多,看起来很不舒服,比较AS是有project、packages、Android这样的展示模式切换的。所以这个方式,拒绝。

2.我算是比较笨了,打开AS,创建一个AS项目,包名、项目名和Eclipse项目的包名、项目名一致;

3.将Eclipse项目相关的文件拷贝并替换AS项目下的文件,一般需要拷贝的是src、res、libs、AndroidManifest等;

4.这个时候项目肯定报错的。库工程换成compile的方式在build.gradle(app目录下的),如果找不到,那就把库工程的jar丢到libs中,res需要的全部拷贝到相应的位置。注意:需要的资源不能重复(jar、xml等)。

5.现在是配置文件的时候了:

1)settings.gradle的内容include ‘:app’   (意思是包含的module,如果还有其他的module,加上去) ;

2)local.properties :sdk.dir=E\:\\sdk(声明SDK的路径);

3)gradle.properties:    (默认是org.gradle.jvmargs=-Xmx2048m,下面是我参考网上写的,加快编译打包速度)

            org.gradle.daemon=true
            org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
            org.gradle.parallel=true
            org.gradle.configureondemand=true
4)build.gradle :默认生成,不需修改。
5)app/libs,放拷贝过来的jar包,注意:不要拷贝.so文件,下面说到.so文件的存放;
6)app/src/build.gradle:关键的文件,第一句apply plugin: 'com.android.application',包含相关的配置sdk版本、资源文件、签名信息、混淆信息、生成包修改
渠道信息、编译依赖等;我会在文章最后贴出整个文件内容;
7)app/src下的androidTest和test文件夹下的java文件删除,如果你需要做单元测试,必须留着(单元测试不做扩展);
8)app/main文件夹下包含assets文件夹(Eclipse拷贝过来),java文件夹(核心java代码),res文件夹(Eclipse拷贝过来)、AndroidManifest和jnilibs(自己创建,
  存放.so文件);
9)proguard-rules.pro:代码混淆文件,注意:里面如果有第三方jar包声明,必须删除,因为gradle添加依赖的时候已声明了。
 到此,选择Build,Clean Project,这时报错,问题应该就是出现在app/src/build.gradle中了,如果是其他的问题,从头检查一遍。而对于app/src/build.gradle中出现的问题,要
结合log、message输出去做修改,因为不同版本的gradle的语法有些变化,因为根据报错信息能够解决一切报错,相信我,因为第一个项目的整个过程我花了2天的时候,第二个项目,我只花了半小时。
     
app/src/build.gradle文件全部内容
apply plugin: 'com.android.application'

android {
  //编译sdk
compileSdkVersion 25
buildToolsVersion "25.0.2" defaultConfig {
multiDexEnabled true  //允许多个dex文件
applicationId "com.xxx" //包名作为id
minSdkVersion 14     //最低版本sdk
targetSdkVersion 23   //最高版本sdk
versionCode 1       //版本code
versionName "1.0.0"   //版本号
}
//执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
lintOptions {
abortOnError false    //有报错的时候,依然继续执行
disable "ResourceType" //忽略代码上的资源类型警告
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
signingConfigs {
debug { }
release {
//填写你的keystore路径和密码们(配置签名)
storeFile file("E:\\xxx.keystore")
storePassword "12345678"
keyAlias "android"
keyPassword "12345678"
}
}
buildTypes {
debug {
minifyEnabled false
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources false
}
release {
minifyEnabled true
//Zipalign优化
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources false
//前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//签名
signingConfig signingConfigs.release
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称
//def fileName = "app_v${defaultConfig.versionName}_${releaseTime()}.apk"
def fileName = "android_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
productFlavors {//渠道信息配置
server {
manifestPlaceholders = [UMENG_CHANNEL_ID: "1"]
}
     baidu{
manifestPlaceholders = [UMENG_CHANNEL_ID: "2"]
}
    }
}
//工程依赖
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:design:25.3.0'
compile 'com.youth.banner:banner:1.4.9'
}

Eclipse项目转Android Studio的更多相关文章

  1. Eclipse 项目导入 Android Studio 导致的乱码问题

    最近有一个 Eclipse 项目导入 Android Studio 1.4 时出现乱码,Build 提示 Error:(38, 5) 閿欒: 缂栫爜UTF-8鐨勪笉鍙槧灏勫瓧绗?. 源代码是 GB ...

  2. 将Eclipse项目导入Android Studio出现中文乱码的问题

    以前一直以Eclipse开发项目,最近正在研究Android Studio的使用,首先想到到的是将Eclispe项目导入AS. 可以方便查看以前写过的代码,然后出现了中文乱码的问题,通过搜索了一些资料 ...

  3. 手把手图文教你从Eclipse项目迁移Android Studio

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52937391 从Android的 ...

  4. android开发里遇到的坑——eclipse项目导入android studio以后Run按钮灰色

    android studio编译有错误但是没有提示给用户,关闭android studio重新启动项目后,会显示错误,修复以后即可!

  5. eclipse项目转android studio详解

    第一步:项目导入 向AS中导入项目的方法有两种(其实是一种). 方法一:是在eclipse中先导出为gradle(如图1),然后打开AS,找到项目中的gradle文件,直接导入. 方法二:直接在AS中 ...

  6. 从 Eclipse 导入项目到 Android Studio

    ADT已经有些过时了,现在比较流行的安卓开发工具是Android Studio,毕竟是谷歌一直在推广的. 最近装了as,从之前的adt迁移项目到as上,遇到了不少坎. 主要注意以下两点: (1)文件路 ...

  7. 从eclipse到Android studio/迁移eclipse的Android项目到Android studio平台的注意事项

    整体要注意的地方 先说明一下整体需要注意的地方 1在Android studio建立项目的时候,要注意包名和原来的完全一致,不然会有很多需要改动. 2依赖的jar一定一定要找齐,不然新建项目引用不到, ...

  8. 从Eclipse迁移到Android Studio碰到的问题记录

    背景: 1. 一直在做.NET的开发,工作之余,学习了一下Android开发,写了一些Demo,当时用的Eclipse开发工具:这两天,刚好项目不是很忙,就打算把之前写的Demo,迁移到Android ...

  9. Android studio:从Eclipse迁移到Android Studio【一】

    转载:http://www.apkbus.com/forum.php?mod=viewthread&tid=255061&extra=page%3D2%26filter%3Dautho ...

随机推荐

  1. LoadRunner使用动态链接库技术

    什么是动态库? 动态库一般又叫动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件.动态链接提供了 ...

  2. asp+jQuery解决中文乱码

    1. [代码][ASP/Basic]代码 '在客户端使用javascript的escape()方法对数据进行编码,在服务器端使用对等的VbsUnEscape()对数据进行解码,同样在服务器端使用Vbs ...

  3. hdu 超级楼梯 解题报告

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 哦--对了,这些题读者可以直接忽略,我只是想练习一下自己薄弱的地方...... 题目意思我就不说 ...

  4. Oracle的wm_concat函数(转)

    wm_concat函数简单说就是行转列显示. 转自:http://christy-fang.iteye.com/blog/1299850 首先让我们来看看这个神奇的函数wm_concat(列名),该函 ...

  5. hdu 4763 Theme Section(next数组找串中三段相等)

    题意:在一个串中找 EAEBE 的形式的最长的E,其中E为一个字符串,也就是说找到前缀与后缀相同,并且串中还存在相同的一段,它们不能重复. 思路:利用next数组,next[len]代表的即是最大的相 ...

  6. 「HNSDFZ暑期集训 测试1」「LuoguT36488」 连连看

    题目描述 给定一个n × m的矩形地图,每个各自上可能为空,可能有牌,牌上有一个数字. 对于两张同样数字的牌,如果我们可以在地图上用不超过三根水平或竖直,在地图界内,且不经过其他牌的线段将两张牌连起来 ...

  7. bzoj 1098 办公楼biu —— 链表+栈

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1098 首先,没有连边的人一定得在一个连通块里: 先把所有人连成一个链表,然后从第一个人开始, ...

  8. bzoj3302

    树形dp 很明显我们可以枚举一条边,然后求两边的重心,这样是暴力,我们用一些奇怪的方法来优化这个找重心的过程,我们先预处理出来每个点最大和第二的儿子,然后每次把断掉的子树的贡献减掉,每次找重心就是向最 ...

  9. 【旧文章搬运】如何从EPROCESS辨别一个进程是否已退出

    原文发表于百度空间,2008-7-31========================================================================== 前面已经通过 ...

  10. vs2008控制台程序运行一闪而过,不显示按任意键继续

    调试运行(F5)而且没插断点.且程序没有暂停的点,就会一闪而过 直接执行(Ctrl+F5),在程序结束前会有“按任意键继续” 当你不想进入调试状态,只想看一看程序执行结果时用ctrl+f5F5会进入调 ...