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

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

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

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

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

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

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

2dbe9ebacf503cece0ed8af8ccd83b3e.png

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

3e942dfb6c1a69c59482301babb243c8.png

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

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

2e810ac2b00a195bdbea6c3fac724929.png

二、迁移问题汇总

导入到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

5d14b7090f4718656a43163426ace401.png

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打包了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500500.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android 名片识别 简书,iOS 自己实现 名片识别 三 图片处理

主题: 图片处理声明:下面这些图片仅供学习使用0.png1.剪切图片根据矩形特征剪切图片// property (nonatomic , strong) CIImage *img;//property (nonatomic , strong) CIRectangleFeature *feature;_img [_img imageByCroppingToRect:_feature.bounds];1.png2.图形矫正根据特…

用积分来衡量博客的成绩

I was told the “积分" in CNBLOGS site is a fair reflection of the popularity and activity of a blog. The score is a linear function of the following factors: (the page view of your blogs, the comments from others to your blogs, your comments to ot…

清华大学 现代软件工程 - 实战经验分享

在前两节课中, 老师给大家描绘了关于软件工程和创新的理论和美景。 那么在实践中, 我们的软件工程师是怎么创新的? 我们请两位清华的校友和大家聊聊他们自己做的项目, 也和大家探讨一下软件工程师的工作, 生活和职业发展。 分享题目1: Sora Project - turn cutting edge re…

html5图片碎片效果,html5 canvas实现图片玻璃碎片特效

今天要为大家带来一款html5 canvas实现的图片玻璃碎片特效。图片以玻璃碎片的形式出现到界面中,然后似玻璃被打碎的效果渐消息。效果图如下:实现代码:html代码:js代码:// canvas settingsvar imageWidth 768,imageHei…

软件工程 之 动物世界

在一个神奇的国度里生活着许多动物, 其中有猪, 鸡, 和鹦鹉。 它们每天搞头脑风暴, 琢磨如何创业, 最后鹦鹉提议它们合伙开一个早餐店: 具体分工如下: 猪: 提供猪肉, 做熏猪肉 (bacon) 鸡: 提供鸡蛋, 做煎蛋 鹦鹉: 提供咨询, 它会每天阅读大量博客, 给其他团队成员提供建议, …

现代软件工程 电梯调度的挑战

目录 2022 年对 《开源软件开发导论》项目的要求 以前的需求文档 电梯作业的挑战和参考 1. Background - pair programming exercise 2. Requirement to Student pairs 2.5 Explanation of BUS program: 3. Testing 参考文献 2022 年对 《开源软件开发导论》项目的要求…

我的原创,思考写作时间在1小时以上,希望读者有真正收获的博客

[今天注意到博客园信箱里有几封信, 其中一封是这个] 原来我的原创,思考写作时间在1小时以上,希望读者有真正收获的博客被认为是不符合要求, 从首页上移出了。 这让我在写这篇博客的时候看了表, 保证思考时间超过了一个小时, 然后才发表。 这是一些读者的…

软件工程 软件工程师的誓言

有人说 程序 算法 数据结构 有人说 软件 程序 软件工程, 软件企业 软件 商业模式。 程序本身没有伦理和职业道德, 但是程序员和软件企业要有。 我们听说过很多例子: 一个在银行工作的程序员曾说, 每次给客户计算利息的时候那些除不尽的小数, 如果程序自动转给我的账…

计算机专业性特有的道德要求,什么是通信科学技术人员职业道德的双重性?

做人素质/道德底线/正反例举计算机专业人员的职业道德和行为准则计算机职业作为一种不同于其它职业的特殊职业,它有着自己与众不同的职业道德和行为准则,这些职业道德和行为准则是每一个计算机职业人员都要共同遵守的。1、 职业道德概念所谓职业道德&…

软件工程 软件的估计为什么这么难

前两年在网上看到一个笑话集锦, 列举电视剧中的穿帮情节。 其中一个是在某缠绵冗长的言情剧中, 一个叫 “书桓” 的角色沉痛地说 - “长达八年的抗日战争就要开始了…” 书桓同学当时是怎么估计到抗日战争要打八年的? 这一技术让软件工程师和项目经理望尘莫及。 软件项目计…

java php html,java和html的区别是什么

区别:1、HTML主前端,呈现数据,Java主处理加工数据。2、JAVA主要用于桌面应用程序和分布式网络应用程序的开发;HTML用于前端页面的开发。3、JAVA的运行环境是JDK和WEB服务器,HTML的运行环境是浏览器。本教程操作环境&am…

软件工程 估计方法

上回书说到 - 一个小组的同学 (6-8 人) 决定要徒步遍历中国陆地边界, 假设供给装备齐全, 估计需要多长时间? 用什么样的办法能让同学们方便地交流各自的估计, 最后到达大致理性和统一的共识? 一般这个时候教室里一定非常热闹, 大家各抒己见, 争执得不亦乐乎。 但是最后往往…

现代软件工程 10 绩效管理

[现代软件工程 讲义 ] 我们前文讲了怎样衡量软件工程师的能力, 工程师如何成长, 如何证明自己的成长, 等等. 这些都是在一个独立的, 不受外界干扰的空间中做出来的判断。 我们假设一个有能力的工程师, 到了另一个团队, 仍然是一个有能力的工程师。 如何衡量个人在团队中的绩…

电子计算机和多媒体教材分析,电子计算机多媒体教学设计模板

电子计算机多媒体教学设计模板教学目的:1、知识与技能(1)会写5个生字,理解词语意思。(2)理解课文内容,了解什么是计算机,什么是多媒体设备。(3)了解.电脑与多媒体之间的关系并能口述。2、过程与方法(1)通过查找资料感悟计算机飞速…

软件工程 - 团队博客第二阶段成绩

正如我在学期开始的时候跟大家介绍的那样, 如果所有团队都做同样的事情, 那么分数就采用 1/n 的体系。 第一名得满分, 第二名得 1/2 的分数, 第三名得 1/3 的分数… 大家都在一个地方写博客, 项目都是同样有趣, 所以我们采用 1/n 体系, 满分 20 分. 第一组: Seven …

计算机java培训总结,java培训总结范文

java培训总结范文在现在这个科技飞速发展的时代,计算机已经悄然走进我们的生活,并且占据了不可动摇与替代的地位,无论是在工作还是生活,学习还是娱乐中,当我们意识到的时候,却突然发现我们已经离不开这个叫…

戴尔r720服务器增加内存,dell r720服务器加了一根内存后,开机显示configuring memory,卡在这里进不了系统,请问这是什么情况?...

新添加硬盘,需要进BIOS进行检测之后保存新的硬件配置再进入。BIOS检测方法:1、开机按F2进行BIOS设置 。2、进入BIOS,将启动模式选择成UEFI。3、开机按F11进行UEFI启动。4、进入Boot Manager,选择UEFI Boot Menu。5、选光驱(插入系…

现代软件工程讲义 0 课程概述

这门课的教学方案在这里. 根据学生和学校的具体情况, 可以进行调整。 师生关系 首先要明确的是, 在这门课中的师生关系是什么样的. 大学目前的师生关系是怎样, 什么样才是理想的师生关系? 我们先看一些例子: Retailer / customer (餐馆/食客)? 一些学生说, 我既然交了…

现代软件工程讲义 1 软件工程概论

几乎所有程序员都知道“数据结构+算法 程序 ” 这句名言。但是在实际的学习和工作中,也有不少人产生了疑问。例如: 1. 我写了二叉树的周游算法实现,在这里,二叉树是数据结构,周游的实现细节是算法。…

qq修改群名服务器失败,如何解决qq群名片改不了的问题

我们在进入一个qq群的时候,一般都会修改自己的群名片,但是有时我们会发现改不了的问题,这时我们应该怎么办呢?下面就让学习啦小编告诉你如何解决qq群名片改不了的问题的方法,希望对大家有所帮助。解决qq群名片改不了的方法电脑登…