eclipse转Android studio遇到的那些坑

公司项目有导入10多个libray,还有涉及ndk,转Android studio时碰到不少问题。前后大概花费5个工作日,中间各种奇葩bug,各种编译出错,非常多还有没错误提示。一度想过放弃,如不是没有选择,可能真要放弃了。最后成功转型还是非常值得的。现记录下遇到的问题,给有须要的人。

1.

解决:

在manifest里面,某个activity下多写了一句intent-filter,里面没有内容,删了之后就没错误了。

2.

错误例如以下:

解决:

使用NDK时。NDK not configured

http://stackoverflow.com/questions/20674650/how-to-configure-ndk-with-android-gradle-plugin-0-7

在NDK libproject下的 build.gradle中加入


1

2

3

4

5

6

7

8

9

10

11

12

productFlavors
{

       arm
{

           ndk
{

           abiFilters"armeabi","armeabi-v7a"

           }

       }

       x86
{

           ndk
{

           abiFilter"x86"

           }

       }

       }

或者


1

2

3

4

5

6

7

buildTypes
{

     debug
{

     ndk
{

         abiFilters"armeabi","armeabi-v7a"

     }

     }

 }

3.

File > Settings > Build, Execution, Deployment > Compiler

and see "Command-line-options" and check if anything is give. (In your case -x). If so remove it and click Apply and Ok. Now restart your android studio and try building

解决:

配置错误把这里的配置删掉

4.

> com.android.build.api.transform.TransformException: java.lang.RuntimeException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process ‘command ‘C:\Program Files\Java\jdk1.7.0_51\bin\java.exe‘‘ finished with non-zero exit value 1

解决:

电脑配置可能不够用,所以開始不断尝试改动占用内存相关的东西。并最终取得了进展。关键代码是build.gradle中的:

dexOptions {

javaMaxHeapSize "xx"

}

xx为合理的内存大小(如4g)。假设你也遇到了这样的问题,最好还是试试~

5.

Error:(24, 1) A problem occurred evaluating root project ‘MyApplication2‘.

> Could not find method dexOptions() for arguments [[email protected]] on root project ‘MyApplication2‘.

解决:

不能写成一行

dexOptions { javaMaxHeapSize "xx" }

6.



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

7.

解决:

改成相相应的版本 compile‘com.android.support:appcompat-v7:19.+‘

8.

Error:Error: File path too long on Windows, keep below 240 characters : C:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\unspecified\res\drawable-xhdpi-v4\battle_navigation_button_signout_default.png

解决:

把文件甲路径缩短

9.

Error:Execution failed for task ‘:wonderDroid:processDebugAndroidTestManifest‘.

> java.lang.RuntimeException: Manifest merger failed : Attribute [email protected] value=(@style/Theme.Sherlock) from [debug] AndroidManifest.xml:22:9-46

is also present at [branch_20151216_1.5.0_01_copy:emuUtils:unspecified] AndroidManifest.xml:15:9-40 value=(@style/AppTheme).

Suggestion: add ‘tools:replace="android:theme"‘ to <application> element at manifestMerger3943799027194821591.xml:7:5-9:19 to override.

解决方式:

在Manifest.xml的application标签下加入tools:replace="android:icon, android:theme"(多个属性用,隔开,而且记住在manifest根标签上加入xmlns:tools="http://schemas.android.com/tools",否则会找不到namespace哦)

參考:http://blog.csdn.net/codezjx/article/details/38669939

Suggestion: add ‘tools:replace="android:theme"‘ to <activity> element at AndroidManifest.xml:1120:9-1128:20 to override.

这个错误就是<activity>合并时冲突了。和application一样,依据冲突提示加入就可以,如:

<activity

tools
:replace="android:configChanges"

android
:name="xxxxx"

android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|fontScale|uiMode|screenSize|smallestScreenSize"

android
:label="@string/N64_Name"

android
:process=":game"

android
:theme="@style/appTheme.Black">

</activity>

10.

AAPT err(Facade for 1813194376): libpng error: Not a PNG file

Error:Execution failed for task ‘:xxxx:mergeDebugResources‘.

> Some file crunching failed, see logs for details

原因是jpg格式的图片后缀为png,AS校验严格,eclipse不校验

使用美图工具将图片转为png图片

11.

Error:Execution failed for task ‘:xxx:processDebugManifest‘.

> F:\xxx\src\main\AndroidManifest.xml:329:9-335:20: Error: Invalid instruction ‘targetApi‘, valid instructions are : REMOVE,REPLACE,STRICT

解决:

<activity

android
:name="xxxx"

android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|fontScale|uiMode|screenSize|smallestScreenSize"

android
:label="@string/app_name"

android
:theme="@android:style/Theme.Holo.Light.Dialog"

tools
:targetApi="11">

</activity>

把Manifest中tools:targetApi="11"去掉

12.

把定义的接口类单独提出来,不要写在类里面,不然会以为循环继承

13.

Error:Execution failed for task ‘:xxxx:transformResourcesWithMergeJavaResForDebug‘.

> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okio/okio/pom.xml

File1: xxx\libs\com.umeng.message.lib_v2.3.0.jar

File2: xxx\build\intermediates\exploded-aar\xxx\unspecified\jars\classes.jar

友盟的sdk和其它jar冲突

解决:

1)添加配置(好像没用)

packagingOptions {

exclude
‘META-INF/NOTICE‘
// will not include NOTICE file

exclude
‘META-INF/LICENSE‘
// will not include LICENSE file

}

2)更新友盟新的sdk

Error:Execution failed for task ‘:xxx:transformResourcesWithMergeJavaResForDebug‘.

> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/maven/com.squareup.okio/okio/pom.xml

File1: C:\Users\Administrator\.gradle\caches\modules-2\files-2.1\com.squareup.okio\okio\1.2.0\c0b52915a48fa91b1b94a28d4a2997bac5f524df\okio-1.2.0.jar

File2: xxx\build\intermediates\exploded-aar\branch_20151216_1.5.0_01_copy\emuUtils\unspecified\jars\classes.jar

解决:配置

packagingOptions {

exclude‘META-INF/maven/com.squareup.okio/okio/pom.xml‘

exclude‘META-INF/maven/com.squareup.okio/okio/pom.properties‘

}

友盟推送sdk使用了okio包,我的项目libray中也调用了。合并时冲突。

我友盟pushsdk中的okio包去掉。引用libray就可以。

14.

Error:Execution failed for task ‘:xxx:transformClassesWithDexForDebug‘.

> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command
‘C:\Program Files\Java\jdk1.8.0_73\bin\java.exe‘‘ finished with non-zero exit value 2

解决:

主project和libray引用的包反复了,这个问题比較麻烦,因为项目中有10多个libray,要细致排插反复的jar。

15.

最终成功后,桌面出现多个图标

解决:把每一个libray的配置MAIN删掉

<intent-filter>

<action
android
:name="android.intent.action.MAIN"/>

<category
android
:name="android.intent.category.LAUNCHER"/>

</intent-filter>

16.

打包时出现的错误

Error:(2) Error: In Gradle projects, always use http://schemas.android.com/apk/res-auto for custom attributes [ResAuto]

解决:

<ScrollViewxmlns:app="http://schemas.android.com/apk/res/xx.xxx.xxx"

xmlns:android="http://schemas.android.com/apk/res/android"

改为:

<ScrollViewxmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:android="http://schemas.android.com/apk/res/android"

时间: 2024-10-29 19:09:01

eclipse转Android studio遇到的那些坑的相关文章

从Eclipse到Android Studio——改变了什么

你永远都不知道未来要做什么?只能先把手头上的事情做好. ps.我是老人家,刚接触Android Studio.已经会的就略过此文吧. 好吧,我承认我是一个比较怀旧的人,Eclipse已经伴随着我走过了不知道多少年风雨岁月.突然叫我换掉,还是真有点舍不得.主要是AndroidStudio卡. 刚出Android Studio的那些天,小伙伴们问我,为什么我不用as?我的第一反应就是as?Action Script?其实,我们从上面的Logo看得出来,两者都叫Android Studio,只是前者基

Eclipse 和 Android Studio 并存

当项目转到 AS后,发现AS虽然有很多优势,比如语言编辑,自动补全提示,等等, 但是还感觉没有Eclipse好用,想要在Eclipse下编辑项目,怎么办? 可以使用 Ubuntu的 文件引用功能,  ln -s新建一个空白的Eclipse工程,分别引用以下文件:AndroidManifest.xml libs res 下面是我的引用路径: lrwxrwxrwx 1 zhanglin zhanglin 83 2月 3 15:38 AndroidManifest.xml -> /home/zhang

Android 开发IDE之(Eclipse 和 Android Studio )

前面的文章写了离线下载必要的开发资源,现在小记一下Eclipse和Android Studio的安装 (一)Eclipse 1.下载 下载传送 2.一般下载Eclipse IDE for Java Developers这个就可以了,现在Eclipse比较吃内存,还是比较卡的.下载完直接解压就行了. 3.运行,配置ADT(Android Development Tools)插件. 1)在线安装:打开Eclipse, 在菜单栏上选择 help->Install New SoftWare 出现Inst

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

网上翻了几百篇博客,看了半天,要不就是写的乱七八糟看不懂,要不就是隐藏了一些细节,要不就是实现不了,最后还是在Android官网上看明白了,而且说得有条有理,以后遇到不懂的一定要先翻官网. 参考资料:https://developer.android.com/studio/projects/add-native-code.html?utm_source=android-studio#link-gradle 1. 导入eclipse到Android studio 1. 导入工程: 点击如下所示:

移动开发必须要弄明白的问题】详解Eclipse转Android Studio

2015-12-09 13:01:244264浏览3评论 AS出来一年多了,最近才从Eclipse转到AS,但我并不觉得使用Eclipse有多落后,它们都只是一个工具而已,哪个顺手就用哪个,用得好都能提高生产力,不会合理利用,再好的工具也是惘然.很多使用Eclipse的Android程序员不知道代码重构的快捷键.如何在运行时调试.一个Workspace一大堆工程......,我想即使转到Android Studio也并不见得比Eclipse顺手. 下面将自己在Eclipse转AS过程中遇到的一些

Android开发由eclipse转Android Studio中一些常见出错问题解决方法

1.给一个Activity添加了一个Dialog主题,结果出现了下面的问题,在eclipse却没有出错 <activity android:name=".DialogActivity" android:label="@string/title_activity_dialog" android:theme="@android:style/Theme.Dialog" > </activity> 出错信息: java.lang.

Ubuntu中给eclipse和android studio添加桌面快捷图标

Ubuntu 12.04 创建应用程序启动项(可在Unity LaucherPad显示) http://www.cnblogs.com/bluestorm/archive/2012/10/12/2721025.html Android Studio.desktop: [Desktop Entry]Name=Android StudioName[zh_CN]=Android StudioComment=Android StudioExec=/home/cmm/android-studio/bin/

eclipse 和 android studio 编译时报 Unsupported major.minor version 52.0错解决办法

version 52.0 是java8的环境.当gradle tools 升级到2.2.1时候,可能编译时候会报该错误. 很多网友说更改java version,但是很多时候无效.下面是我遇到时候的解决办法: 解决思路如下: 1.Android studio 中: 出现该问题的情况,大多数是在升级完 gradle tools 2.2.1,把android studio升级到最新2.2版本时候遇到的. 原因是,没有同步更新Android SDK Build-tools.把SDK的build-too

用 天天模拟器 + Eclipse或Android Studio调试app

Android开发人员都知道,原生的模拟器启动比较慢,操作起来也不流畅,当然很多人都会选择直接使用android手机来开发,但是有时候需要在投影仪上演示程序的时候手机不太好实现.所以很多人选择使用genymotion,但是genymotion配置又过于繁琐, 所以给大家推荐一款基于genymotion的模拟器-天天模拟器. 旧版本的天天模拟器可以直接用于调试,但是由于新版本的天大模拟器端口号被修改为6555,要想用天天连接IDE开发,需要使用ADB命令进行连接. 如没配置SDK环境变量, 进入c