一直以来。公司开发都是用eclipse。可是随着我们应用不断成长。项目结构越来越庞大。项目间依赖关系变得非常复杂。用eclipse管理显得非常吃力,常常一个同事更改依赖项目之后,别人在更新。都会出现故障。由于这些事情浪费非常多时间。

终于决定迁移到Android Studio。

可是迁移的过程中还是遇到了非常多问题,通过这篇博客,把迁移过程中遇到的问题。以及每一个问题的解决方式,记录一下。也希望能帮助到有相同需求的同学。

这里就不具体介绍从eclipse导入到Android Studio的过程了。

1.乱码

用eclipse开发时编码用的是GBK,而android studio中使用的是UTF-8,所以在build的时候,项目中的温度符号,以及一些中文凝视就会出现乱码。

解决方式

统一编码,我们把编码都改成UTF-8. Android studio通过例如以下方式改项目和文件的编码:

File -> Other Settings -> Default Settings -> 搜索File Encodings ->改三个地方的编码(IDE Encoding,Project Encoding,Default encoding for properties files)

2. 反复图片

我们有一个Library是从主项目中抽取出来的。抽取的过程中非常多图片从主项目中copy出来之后。忘记删除了。导入到Android studio之后,build的过程就会出错。只是错误信息中有提示反复的文件。我们仅仅须要依据提示把不用的图片删掉。

3. Unable to execute dex: method ID not in [0, 0xffff]: 65536

对于这个问题,google官方给出了解释。http://developer.android.com/tools/building/multidex.html,大概意思就是:当你的应用以及应用依赖的library达到一定的Size之后,在build的时候就会提示这个错误。说明你的应用已经达到了Android app构建架构的大小限制。android虚拟机限制了每个DEX文件可以引用的method的个数为65536。 它包含Android Framework。Library。以及自己项目中的methods总和。

解决方式
给我们的应用生成多个DEX文件。须要在build.gradle,文件里配置:
android {
defaultConfig {
...
multiDexEnabled = true
}
}

另外,还要使用MultiDexApplication类,假设你的应用中已经有Application类,须要让它继承自MultiDexApplication。再实现attachBaseContext方法,代码例如以下:

protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}

4. OutOfMemoryError: GC overhead limit exceeded

在build.gradle文件里做例如以下配置:
android {
...
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
}

5. java.util.zip.ZipException: duplicate entry during packageAllDebugClassesForMultiDex

报错信息例如以下:
Error:Execution failed for task ':ezweather_original:packageAllDebugClassesForMultiDex'.
> java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class

解决方式。在build.gradle中加入例如以下配置:

configurations { all*.exclude group: 'com.android.support', module: 'support-v4' }

这时候app最终能执行起来了...

eclipse到Android Studio的项目迁移的更多相关文章

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

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

  2. Android Studio(七):项目从Eclipse到Android Studio迁移

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  3. 【Android Studio使用教程2】Android Studio创建项目

    创建项目 首先,先指出Android Studio中的两个概念. Project 和 Module .在Android Studio中, Project 的真实含义是工作空间, Module 为一个具 ...

  4. Android Studio创建项目

    创建项目 首先,先指出Android Studio中的两个概念. Project 和 Module .在Android Studio中, Project 的真实含义是工作空间, Module 为一个具 ...

  5. Android Studio导入项目

    原文:http://ask.android-studio.org/?/article/21 本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4.请尝试 ...

  6. 将应用代码由eclipse导入Android studio的方法NDK-Build和Cmake两种方法(以android_serialport_api为例)

    网上翻了几百篇博客,看了半天,要不就是写的乱七八糟看不懂,要不就是隐藏了一些细节,要不就是实现不了,最后还是在Android官网上看明白了,而且说得有条有理,以后遇到不懂的一定要先翻官网. 参考资料: ...

  7. 【Android Studio使用教程1】Android Studio导入项目的几种方法

    本篇教程中使用到的Android Studio版本为1.0, Eclipse ADT版本23.0.4.请尝试更新到该版本. Android Studio默认使用 Gradle 构建项目, Eclips ...

  8. Android Studio 设置项目Module编码,解决Android Studio项目执行时乱码问题

    Android Studio的项目设置逻辑与Eclipse有非常大的差别.运行的操作为File->Setting->File Encodings然后来进行设置,如图所看到的: waterm ...

  9. Android studio打开项目时出现 gradle download 无反应

    在使用android studio 新建 项目的时候,会发现一直无法下载 gradle程序一直卡住不动,原因是被墙了. 解决方法: 到gradle官网下载离线包,解压后将bin路径加入Path环境变量 ...

随机推荐

  1. ansible基础配置

    1.基础配置 1.1.环境 主机配置 ansible版本:2.7.4 控制端:centos7.4,IP:192.168.1.213,主机名:operation 被控制端: centos6.5,IP:1 ...

  2. 问题:执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动

    执行[root@node01 hadoop-2.6.0-cdh5.14.0]# sbin/start-dfs.sh 后,namenode未启动. 解决步骤: 查看/export/servers/had ...

  3. Spring Data Redis入门示例:数据序列化 (四)

    概述 RedisTemplate默认使用的是基于JDK的序列化器,所以存储在Redis的数据如果不经过相应的反序列化,看到的结果是这个样子的: 可以看到,出现了乱码,在程序层面上,不会影响程序的运行, ...

  4. python3+beautifulSoup4.6抓取某网站小说(二)基础功能设计

    本章学习内容:1.网页编码还原读取2.功能设计 stuep1:网页编码还原读取 本次抓取对象: http://www.cuiweijuxs.com/jingpinxiaoshuo/ 按照第一篇的代码来 ...

  5. C语言学习4

    C/C++语言五大内存分区:堆.栈.自由存储区.全局/静态存储区和常量存储区 栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的存储区,里面的变量通常是全局变量.函数参数等. 堆:就是那些 ...

  6. 绑定IP 绑定设备

    首先引别人的组播测试如下 1. 一个udp client可以同时往多个组播地址发送数据,多个udpclient可以同时往一个组播发数据. 2. 本地udp必须监听组播端口,否则收不到数据.3. 一个u ...

  7. 洛谷 3106 [USACO14OPEN]GPS的决斗Dueling GPS's 3720 [AHOI2017初中组]guide

    [题解] 这两道题是完全一样的. 思路其实很简单,对于两种边权分别建反向图跑dijkstra. 如果某条边在某一种边权的图中不是最短路上的边,就把它的cnt加上1.(这样每条边的cnt是0或1或2,代 ...

  8. echarts的简单应用之(二)饼图

    接上一篇文章: echarts的简单应用之(一)柱形图:https://www.cnblogs.com/jylee/p/9359363.html 本篇文章讲述饼图,撇过折线图不说,是因为折线图与柱形图 ...

  9. Discuz 论坛修改admin账户密码

    打开Navicat for MySQL 找到数据表 pre_ucenter_members 把密码修改为123456789 password:047099adb883dc19616dae0ef2adc ...

  10. 任务3.站会或DoD

    三选一 1.为开展敏捷团队:尝试一下引入站会 2.正在实践敏捷团队:定义DoD 3.从本次和上次学习中自己找出一个任务 <我们知道何时才算完成> <富有成效的每日站会> 目前所 ...