中国国际贸易单一窗口登录,南京专业网站优化公司,杭州百度人工优化,西安网站搭建的公司随着时间的推移#xff0c;技术的推进#xff0c;开发android的IDE#xff0c;逐渐由 eclipse转移到android studio#xff0c;但… 我们的拖延症是很严重的#xff0c;只要eclipse能用一天就绝不迁移#xff0c;只到有一天#xff0c;项目越来越大#xff0c;引入的第…随着时间的推移技术的推进开发android的IDE逐渐由 eclipse转移到android studio但… 我们的拖延症是很严重的只要eclipse能用一天就绝不迁移只到有一天项目越来越大引入的第三方库越来越多超过了android的最大限制65535不得不使用拆包方式不得不迁移到android studio 迁移项目过程中遇到很多坑在此进行总结并给大家提供参考。一、大概介绍eclipse项目导入android studio过程1. 点击Import project (Eclipse AD, Gradle,etc.) 这一项2. 选择项目里的主工程然后点击 Ok3. 一路点击next最后导入完成导入完成后会自动生成 import-summary.txt文件里面写明了迁移后项目目录、文件位置等的一些变化可以仔细看看二、迁移问题汇总导入到android studio后并非一帆风顺而是各种坑坑洼洼~文中 android studio 简称AS1. 图片命名问题AS对图片命名要求比eclipse严格图片名称只能有 小写字母、数字及下划线组成报错信息F:\kydd\yzone\yzone\src\main\res\drawable-hdpi\common_listview_headview_red_arrow.png.pngError: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图片名包含了 .所以报错解决方法重命名图片去掉一个 .png2. 找不到 support.v4包报错信息F:\kydd\yzone\iMKit\src\main\java\io\rong\imkit\CallEndMessageItemProvider.javaError:(8, 30) 错误: 程序包android.support.v4.app不存在Error:(193, 19) 错误: 找不到符号符号: 类 FragmentActivity位置: 类 CallEndMessageItemProviderError:(185, 137) 错误: 无法访问DialogFragment找不到android.support.v4.app.DialogFragment的类文件Error:(186, 13) 错误: 方法不会覆盖或实现超类型的方法解决方法引入新版support.v43. .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 falseaaptOptions.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-69F:\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:52F:\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_KEYvalue value(xxxxxxxx) from AndroidManifest.xml:560:13-42is also present at [yzone:iMKit:unspecified] AndroidManifest.xml:163:13-42 value(yyyyyyyyyyy).Suggestion: add tools:replaceandroid:value to element at AndroidManifest.xml:558:9-560:45 to override.解决方法(1)在其中一个module钟删除保留正确的那个(2)或者在主module中的meta-data中加上 tools:replaceandroid: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.xmlSuggestion: use tools:overrideLibrarycom.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.xmlError:(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 设置为24android {......compileSdkVersion 24......}8. android6.0及以上没有httpclient报错报错信息Error:(9, 30) 错误: 程序包org.apache.http.client不存在Error:(218, 14) 错误: 找不到符号符号: 类 ClientProtocolExceptionError:(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打包了