随着时间的推移,技术的推进,开发android的IDE,逐渐由 eclipse转移到android studio,但…  我们的拖延症是很严重的,只要eclipse能用一天就绝不迁移

,只到有一天,项目越来越大,引入的第三方库越来越多,超过了android的最大限制65535,

不得不使用拆包方式,不得不迁移到android studio

, 迁移项目过程中遇到很多坑,在此进行总结,并给大家提供参考。

一、大概介绍eclipse项目导入android studio过程

1.  点击Import project (Eclipse AD, Gradle,etc.) 这一项

2.  选择项目里的主工程,然后点击 Ok

3. 一路点击next,最后导入完成

导入完成后,会自动生成 import-summary.txt文件,里面写明了迁移后项目目录、文件位置等的一些变化,可以仔细看看

二、迁移问题汇总

导入到android studio后,并非一帆风顺,而是各种坑坑洼洼~

文中 android studio 简称AS

1. 图片命名问题

AS对图片命名要求比eclipse严格,图片名称只能有 小写字母、数字及下划线组成;

报错信息:

F:\kydd\yzone\yzone\src\main\res\drawable-hdpi\common_listview_headview_red_arrow.png.png

Error:Error: '.' is not a valid file-based resource name character: File-based resource names must contain only lowercase a-z, 0-9, or underscore

问题原因: 图片名称为:common_listview_headview_red_arrow.png.png,图片名包含了 '.',所以报错

解决方法:重命名图片,去掉一个 .png

2.  找不到 support.v4包

报错信息:

F:\kydd\yzone\iMKit\src\main\java\io\rong\imkit\CallEndMessageItemProvider.java

Error:(8, 30) 错误: 程序包android.support.v4.app不存在

Error:(193, 19) 错误: 找不到符号

符号:   类 FragmentActivity

位置: 类 CallEndMessageItemProvider

Error:(185, 137) 错误: 无法访问DialogFragment

找不到android.support.v4.app.DialogFragment的类文件

Error:(186, 13) 错误: 方法不会覆盖或实现超类型的方法

解决方法:引入新版support.v4

3. .9图错误

AS中,.9图必须是规范的.9图,否则就会报错;

(1)如果一张图不是.9图,则图片名称中不要包含.9;

(2).9图必须对四个边都进行了描点,AS才能进行识别;

报错信息:

Error:java.lang.RuntimeException: CrunchingCruncher chat_to_bg_normal.9.png failed, see logs

或者:

Error:java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:

Error:Execution failed for task ':yzone:mergeDebugResources'.

> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:

解决方法:

(1)如果不是.9图,则把名称中的.9去掉,如果是.9图,那么重新制作一下

(2)也可以把图片合法性检查关闭,在build.gradle增加如下(我测试了这个好像不起效)

android {

...

aaptOptions.cruncherEnabled = false

aaptOptions.useNewCruncher = false

...

}

4, 权限、activity在 manifest.xml文件中重复申明

报错信息:Error:Execution failed for task ':yzone:processDebugManifest'.

> Manifest merger failed with multiple errors, see logs

详细log:

F:\kydd\yzone\yzone\src\main\AndroidManifest.xml:93:5-69 Warning:

Element uses-permission#android.permission.FLASHLIGHT at AndroidManifest.xml:93:5-69 duplicated with element declared at AndroidManifest.xml:91:5-69

F:\kydd\yzone\yzone\src\main\AndroidManifest.xml:773:9-777:55 Error:

Element activity#io.rong.imkit.widget.provider.TakingPicturesActivity at AndroidManifest.xml:773:9-777:55 duplicated with element declared at AndroidManifest.xml:674:9-677:52

F:\kydd\yzone\yzone\src\main\AndroidManifest.xml Error:

Validation failed, exiting

解决方法:

在manifest.xml文件中,去掉重复的即可, AS的检查比eclipse严格

5. 同一项目,有多个子module时,在两个或以上module中声明同一个meta-data,且值不同时,报错

报错信息: Error:Execution failed for task ':yzone:processDebugManifest'.

> Manifest merger failed : Attribute meta-data#RONG_CLOUD_APP_KEY@value value=(xxxxxxxx) from AndroidManifest.xml:560:13-42

is also present at [yzone:iMKit:unspecified] AndroidManifest.xml:163:13-42 value=(yyyyyyyyyyy).

Suggestion: add 'tools:replace="android:value"' to element at AndroidManifest.xml:558:9-560:45 to override.

解决方法:

(1)在其中一个module钟删除,保留正确的那个;

(2)或者在主module中的meta-data中,加上 'tools:replace="android:value",如下:

6. 最低版本号设置过低,报错

我们的项目中使用了个视频播放的第三方库,最低版本号支持14,而我们的build.gradle文件中,最低版本号设置了13,固报错

报错信息:Error:Execution failed for task ':yzone:processDebugManifest'.

> Manifest merger failed : uses-sdk:minSdkVersion 13 cannot be smaller than version 14 declared in library [com.github.danylovolokh:video-player-manager:0.2.0] F:\kydd\yzone\yzone\build\intermediates\exploded-aar\com.github.danylovolokh\video-player-manager\0.2.0\AndroidManifest.xml

Suggestion: use tools:overrideLibrary="com.volokh.danylo.video_player_manager" to force usage

解决方法:将最低版本号改为要求的即可

defaultConfig {......minSdkVersion14targetSdkVersion23//只能用23,否则融云SDK在android7上无法连接;如果要使用大于23,则需要加入sqlite.so等包......}

7. compileSdkVersion 设置过低

报错信息:

F:\kydd\yzone\yzone\build\intermediates\res\merged\debug\values-v23\values-v23.xml

Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.

Error:(18) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.

Error:(18) Error retrieving parent for item: No resource found that matches the given name 'android:Widget.Material.Button.Colored'.

Error:Execution failed for task ':yzone:processDebugResources'.

> com.android.ide.common.process.ProcessException: Failed to execute aapt

解决方法:compileSdkVersion 设置为24

android {

......

compileSdkVersion 24

......

}

8. android6.0及以上没有httpclient,报错

报错信息:

Error:(9, 30) 错误: 程序包org.apache.http.client不存在

Error:(218, 14) 错误: 找不到符号

符号: 类 ClientProtocolException

Error:(219, 29) 错误: 无法访问HttpRequestBase

找不到org.apache.http.client.methods.HttpRequestBase的类文件

Error:(252, 29) 错误: 无法访问HttpEntityEnclosingRequest

找不到org.apache.http.HttpEntityEnclosingRequest的类文件

Error:Execution failed for task ':yzone:compileDebugJavaWithJavac'.

> Compilation failed; see the compiler error output for details.

解决方法:

在build.gradle中添加如下配置

android {

......

//android6.0 没有httpclient了,如用android23编译,需要加上该行,android23以下的不需要加这行

useLibrary 'org.apache.http.legacy'

......

}

9. 项目函数数超过65535

报错信息:

Error:Error converting bytecode to dex:

Cause:com.android.dex.DexIndexOverflowException: Cannot merge new index 65569 into anon-jumbo instruction!

Error:Execution failed for task':yzone:transformClassesWithDexForDebug'.

>com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:java.lang.UnsupportedOperationException

解决方法:build.gradle增加如下配置

android {

defaultConfig {

...

//支持多个dex文件的编译

multiDexEnabled true

...

}

}

dependencies {

...

compile 'com.android.support:multidex:1.0.1'

...

}

查看每个包函数数的工具:https://github.com/mihaip/dex-method-counts

查看每个包的函数数,从而着手优化,哪些是废弃代码可以删掉,解决超过65535限制的问题,但如果代码无法再优化了,就只能采用上面的 multiDex打包了

android studio导入eclipse项目各种问题,eclipse项目导入android studio 各类问题及解决方法...相关推荐

  1. eclipse的plugins导入hadoop-eclipse-plugin-2.6.0.jar后Preference下没有hadoop Map/Reduce的解决方法

    参考文章:eclipse下的plugins导入hadoop-eclipse-plugin-2.7.1.jar,Preference下没有hadoop Map/Reduce的解决方法 这种现象一般是由于 ...

  2. eclipse中同步代码PULL报错checkout conflict with files的解决方法

    eclipse中同步代码PULL报错checkout conflict with files的解决方法 参考文章: (1)eclipse中同步代码PULL报错checkout conflict wit ...

  3. Eclipse里编辑代码,进度条出现“Remote System Explorer Operation”解决方法

    Eclipse里编辑代码,进度条出现"Remote System Explorer Operation"解决方法 参考文章: (1)Eclipse里编辑代码,进度条出现" ...

  4. eclipse中svn插件的工程不能与svn资源库同步的解决方法

    eclipse中svn插件的工程不能与svn资源库同步的解决方法 参考文章: (1)eclipse中svn插件的工程不能与svn资源库同步的解决方法 (2)https://www.cnblogs.co ...

  5. android 百度地图闪退,Android使用百度地图出现闪退及定位时显示蓝屏问题的解决方法...

    使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.xml文件中未在application标签中配置 android:name="com.baidu.lbsapi.A ...

  6. Android调用系统群发短信,vivo部分手机弹出“无效的地址”解决方法

    Android调用系统群发短信,vivo部分手机弹出"无效的地址"解决方法 第一次写文章,来试试水 之前项目中有一个需求是获取通讯录联系人信息,并展示出来,然后可以选择一个或者多个 ...

  7. java发布后功能不能用,急项目发布后java写的打印功能失效了-求解解决方法

    当前位置:我的异常网» J2EE » 急项目发布后java写的打印功能失效了-求解解决方法 急项目发布后java写的打印功能失效了-求解解决方法 www.myexceptions.net  网友分享于 ...

  8. 使用ANT编译项目报错 com.sun.image.codec.jpeg does not exist 解决方法

    使用ANT编译项目报错 com.sun.image.codec.jpeg does not exist 解决方法 参考文章: (1)使用ANT编译项目报错 com.sun.image.codec.jp ...

  9. eclipse启动报错 Java was started but returned exit code=13 解决方法

    目录 报错如下: 问题原因及解决: 1.eclipse安装版本与jdk不一致 2.eclipse配置参数有问题 报错如下: 问题原因及解决: 1.eclipse安装版本与jdk不一致 如果jdk安装版 ...

最新文章

  1. 机器学习常见的分类算法的优缺点
  2. java读取src路径下的txt文件_Java程序使用Maven后无法运行?
  3. Vue开发规范1.0
  4. CMD 控制台CMD程序怎么执行完不关闭界面?@pause
  5. 上传文件返回数据提示下载
  6. UVA - 12569 Planning mobile robot on Tree (EASY Version) BFS
  7. 光模块常见故障与使用注意事项详解
  8. java窗体实现射击_java_Java基于Swing实现的打猎射击游戏代码,本文实例讲述了Java基于Swing实 - phpStudy...
  9. idea搭建maven工程
  10. Win11如何更新BIOS?
  11. 微信小程序中使用emoji表情相关说明
  12. 什么是MVC开发模式?
  13. 静态库(lib)和动态库(dll)的使用
  14. 2020短视频电商直播运营方案实战干货
  15. 智能优化算法及其MATLAB实例(第二版)——遗传算法2.1
  16. Linux 下搭建NFS网络服务器 Win7 下访问挂载
  17. 【LEDE】x86软路由之路-09-AirPlay音乐推流(安卓+IOS)
  18. kof97调隐藏人物
  19. 网络层—— 转发(IP、ARP、DCHP、ICMP、网络层编址、网络地址转换)
  20. extern “C” 陷阱

热门文章

  1. python 几种常用测试框架
  2. K-Means ++ 算法
  3. 『重构--改善既有代码的设计』读书笔记----Split Temporary Variable
  4. Kneser猜想与相关推广
  5. 2010年 Web的五项技术和五个趋势
  6. 操作系统欢乐笔记-01-带你推开操作系统的大门(雾)
  7. LeetCode 670 最大交换 (暴力+贪心、Python)
  8. 《动手学深度学习》第一天 (2.1+2.2)
  9. 【剑指 offer】面试题13:机器人的运动范围(Java)
  10. java 遗传算法_[原]遗传算法Java实现源代码