您的位置:首页 > 编程语言 > Java开发

eclipse转Android studio遇到的那些坑

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





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

2.



错误例如以下:



解决:


使用NDK时。NDKnotconfigured


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

在NDKlibproject下的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

andsee"Command-line-options"andcheckifanythingisgive.(Inyourcase-x).IfsoremoveitandclickApplyandOk.Nowrestartyourandroidstudioandtrybuilding

解决:
配置错误把这里的配置删掉





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:\ProgramFiles\Java\jdk1.7.0_51\bin\java.exe''finishedwithnon-zeroexitvalue1
解决:

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

dexOptions{

javaMaxHeapSize"xx"

}

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

5.
Error:(24,1)Aproblemoccurredevaluatingrootproject'MyApplication2'.

>CouldnotfindmethoddexOptions()forarguments[build_6h7x2ds382w4ozyuts7q05l4x$_run_closure3@2e96270a]onrootproject'MyApplication2'.
解决:
不能写成一行
dexOptions{javaMaxHeapSize"xx"}


6.


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



7.





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

8.
Error:Error:FilepathtoolongonWindows,keepbelow240characters:C:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\unspecified\res\drawable-xhdpi-v4\battle_navigation_button_signout_default.png
解决:
把文件甲路径缩短

9.
Error:Executionfailedfortask':wonderDroid:processDebugAndroidTestManifest'.

>java.lang.RuntimeException:Manifestmergerfailed:Attributeapplication@themevalue=(@style/Theme.Sherlock)from[debug]AndroidManifest.xml:22:9-46

isalsopresentat[branch_20151216_1.5.0_01_copy:emuUtils:unspecified]AndroidManifest.xml:15:9-40value=(@style/AppTheme).
Suggestion:add'tools:replace="android:theme"'to<application>elementatmanifestMerger3943799027194821591.xml:7:5-9:19tooverride.

解决方式:
在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>elementatAndroidManifest.xml:1120:9-1128:20tooverride.
这个错误就是<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.
AAPTerr(Facadefor1813194376):libpngerror:NotaPNGfile
Error:Executionfailedfortask':xxxx:mergeDebugResources'.
>Somefilecrunchingfailed,seelogsfordetails
原因是jpg格式的图片后缀为png,AS校验严格,eclipse不校验
使用美图工具将图片转为png图片

11.
Error:Executionfailedfortask':xxx:processDebugManifest'.
>F:\xxx\src\main\AndroidManifest.xml:329:9-335:20:Error:Invalidinstruction'targetApi',validinstructionsare: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:Executionfailedfortask':xxxx:transformResourcesWithMergeJavaResForDebug'.
>com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:DuplicatefilescopiedinAPKMETA-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'
//willnotincludeNOTICEfile

exclude
'META-INF/LICENSE'
//willnotincludeLICENSEfile
}
2)更新友盟新的sdk

Error:Executionfailedfortask':xxx:transformResourcesWithMergeJavaResForDebug'.
>com.android.build.api.transform.TransformException:com.android.builder.packaging.DuplicateFileException:DuplicatefilescopiedinAPKMETA-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
解决:配置
[align=left]packagingOptions{[/align]
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:Executionfailedfortask':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:\ProgramFiles\Java\jdk1.8.0_73\bin\java.exe''finishedwithnon-zeroexitvalue2
解决:
主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:InGradleprojects,alwaysusehttp://schemas.android.com/apk/res-autoforcustomattributes[ResAuto]
解决:
[align=left]<ScrollViewxmlns:app="http://schemas.android.com/apk/res/xx.xxx.xxx"[/align]
xmlns:android="http://schemas.android.com/apk/res/android"
改为:
[align=left]<ScrollViewxmlns:app="http://schemas.android.com/apk/res-auto"[/align]
xmlns:android="http://schemas.android.com/apk/res/android"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
章节导航