android studio导入eclipse项目各种问题,eclipse项目导入android studio 各类问题及解决方法...
随着时间的推移,技术的推进,开发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 各类问题及解决方法...相关推荐
- 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的解决方法 这种现象一般是由于 ...
- eclipse中同步代码PULL报错checkout conflict with files的解决方法
eclipse中同步代码PULL报错checkout conflict with files的解决方法 参考文章: (1)eclipse中同步代码PULL报错checkout conflict wit ...
- Eclipse里编辑代码,进度条出现“Remote System Explorer Operation”解决方法
Eclipse里编辑代码,进度条出现"Remote System Explorer Operation"解决方法 参考文章: (1)Eclipse里编辑代码,进度条出现" ...
- eclipse中svn插件的工程不能与svn资源库同步的解决方法
eclipse中svn插件的工程不能与svn资源库同步的解决方法 参考文章: (1)eclipse中svn插件的工程不能与svn资源库同步的解决方法 (2)https://www.cnblogs.co ...
- android 百度地图闪退,Android使用百度地图出现闪退及定位时显示蓝屏问题的解决方法...
使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.xml文件中未在application标签中配置 android:name="com.baidu.lbsapi.A ...
- Android调用系统群发短信,vivo部分手机弹出“无效的地址”解决方法
Android调用系统群发短信,vivo部分手机弹出"无效的地址"解决方法 第一次写文章,来试试水 之前项目中有一个需求是获取通讯录联系人信息,并展示出来,然后可以选择一个或者多个 ...
- java发布后功能不能用,急项目发布后java写的打印功能失效了-求解解决方法
当前位置:我的异常网» J2EE » 急项目发布后java写的打印功能失效了-求解解决方法 急项目发布后java写的打印功能失效了-求解解决方法 www.myexceptions.net 网友分享于 ...
- 使用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 ...
- eclipse启动报错 Java was started but returned exit code=13 解决方法
目录 报错如下: 问题原因及解决: 1.eclipse安装版本与jdk不一致 2.eclipse配置参数有问题 报错如下: 问题原因及解决: 1.eclipse安装版本与jdk不一致 如果jdk安装版 ...
最新文章
- 机器学习常见的分类算法的优缺点
- java读取src路径下的txt文件_Java程序使用Maven后无法运行?
- Vue开发规范1.0
- CMD 控制台CMD程序怎么执行完不关闭界面?@pause
- 上传文件返回数据提示下载
- UVA - 12569 Planning mobile robot on Tree (EASY Version) BFS
- 光模块常见故障与使用注意事项详解
- java窗体实现射击_java_Java基于Swing实现的打猎射击游戏代码,本文实例讲述了Java基于Swing实 - phpStudy...
- idea搭建maven工程
- Win11如何更新BIOS?
- 微信小程序中使用emoji表情相关说明
- 什么是MVC开发模式?
- 静态库(lib)和动态库(dll)的使用
- 2020短视频电商直播运营方案实战干货
- 智能优化算法及其MATLAB实例(第二版)——遗传算法2.1
- Linux 下搭建NFS网络服务器 Win7 下访问挂载
- 【LEDE】x86软路由之路-09-AirPlay音乐推流(安卓+IOS)
- kof97调隐藏人物
- 网络层—— 转发(IP、ARP、DCHP、ICMP、网络层编址、网络地址转换)
- extern “C” 陷阱
热门文章
- python 几种常用测试框架
- K-Means ++ 算法
- 『重构--改善既有代码的设计』读书笔记----Split Temporary Variable
- Kneser猜想与相关推广
- 2010年 Web的五项技术和五个趋势
- 操作系统欢乐笔记-01-带你推开操作系统的大门(雾)
- LeetCode 670 最大交换 (暴力+贪心、Python)
- 《动手学深度学习》第一天 (2.1+2.2)
- 【剑指 offer】面试题13:机器人的运动范围(Java)
- java 遗传算法_[原]遗传算法Java实现源代码