andorid studio 常见错误

转载:http://blog.csdn.net/u013325929/article/details/48436955

1、主项目跟他的依赖lib要放在同一个目录才能在eclipse中export

2、导入eclipse中导出的项目到studio后的配置:
(1)打开工作空间目录下的 gradle –> wrapper –> gradle-wrapper.properties 。修改一下内容: distributionUrl=http://services.gradle.org/distributions/gradle-a.b.c-all.zip –> distributionUrl=https://services.gradle.org/distributions/gradle-2.4-all.zip

(2)打开工作空间目录下的 build.gradle 文件。修改以下内容:
classpath ‘com.android.tools.build:gradle:0.x.+’ –> classpath ‘com.android.tools.build:gradle:1.2.3’

3、添加其他项目为module需要手动修改主目录里的settings.gradle,把**文件名或包名(远程的用包名)**include进去(加冒号,ex:include ‘:app’),然后sync同步一下

4、主项目和依赖的lib放在同一个目录时,输出后主目录也有build.gradle,各个lib(包括主项目)也都各自有build.gradle,导入的时候需要导入根目录(不是主项目)里的那个build.gradle

5、错误自动检测:在 AS 右下角有个小人头 点击 有个POWER SAVE MODE 取消对钩 代码就能自动检测了

6、主项目图标为小手机表示这是主应用程序,为咖啡杯表示还有未完成的配置等,变成三本竖着的书表示这是个module

7.添加了 compile fileTree(include: ‘*.jar’, dir: ‘libs’)就不用添加libs文件夹下的dependence了(写了也不会报错)

8、变lrmlibrary由应用为lib库(即eclipse中的is library):只需要修改lib项目lrmlibrary里build.gradle中的apply plugin: ‘com.android.application’为apply plugin: ‘com.android.library’。并且修改lib项目lrmlibrary的manifest中application标签,去掉

<intent-filter>-->
            <!--<action android:name="android.intent.action.MAIN" />-->
            <!--<category android:name="android.intent.category.LAUNCHER" />-->
        <!--</intent-filter>
1
2
3
4
-即可

9、更改studio内文件编码的方式:file-settings-file encordings-在整个文件树列表上更改编码方式

 这里写图片描述
并在乱码的module或application中的build.gradle写明compileOptions.encoding=”UTF-8” 
这里写图片描述

常见错误总结:

错误1:finished with non-zero exit value 2:多个lib有相同的引用包 删除多余的只剩一个就好了
……aapt “finished with non-zero exit value 1”:假如不是重复的jar包的问题的话此时要看log日志这句错误之上的信息了,比如在引用com.github.lzyzsd:circleprogress:1.1.0@aar(8种圆形的进度条)的时候,根据这句错误之上的内容发现错误原因是在app-build-intermediates-res内的资源文件中出现了drawable-^dpi-v4这种文件夹,而且这种文件夹内都包含ic_launcher文件,初步分析原因为相同种类的文件夹不能存在同名文件,如drawable-hdpi和drawable-hdpi-v4不能存在相同文件,解决方法为:把app项目内各drawable文件夹中的ic_launcher文件删除 sync即可。

错误2:ndk path cannot contain any spaces:解压之后千万不要保存在含有空格的目录里

错误3:AAA,cannot add task ‘…’ as a task with that name already exists:根目录的build.gradle里dependencies里compile的多个lib里有相同的引用(如V7),解决方案看错误9

错误4:Gradle DSL method not found: ‘android()’:删掉最外层(根目录里的build.gradle)的build.gradle中的android {
compileSdkVersion 19
buildToolsVersion ‘21.1.1’
}
然后重新刷新就ok了(AS里只在app层的gradle读取Android版本,放在最外层的gradle是没办法读的)

错误5:task not found in root project…:这是因为AS的早期版本错误配置了(passagename).iml文件,添加了一个

 "<component
 name="FacetManager">" XML 这个不存在的属性.
所以,我们只要把这个属性的内容全部删掉就ok了
    <component
     name="FacetManager"> ... </component>
1
2
3
4

错误6:找不到R文件

module找不到R文件-build-make module xxx 
检查是否编译了项目。Android studio有时候没有编译就会报出没有R文件的错误。(可以make project或者make module) 

检查代码中包名是否正确。有时候从其他地方复制代码过来时连带了包名,也会报出R文件找不到。
检查布局文件是否有语法错误。布局文件有语言错误时也会导致R文件错误。
软件抽风了,重建项目试试。
另外可能很多人不知道在哪儿找R文件,Android studio左上角有个选项,一般我们可能是选的Android模式,选择Packages模式找到你的项目,里面就可以看到R文件了

错误7:V7包内build-intermediates-explodedaar-com.android.support-appcompatv7-22.1.1-res.value 什么什么错误 :检查build.gradle的compileSdkVersion和buildtoolsversion和主项目的这两个是不是写的一样

错误8:有个很严重的问题,比如我有个主工程为MainProject,另外有个库工程为library,如果主工程与 library**都需要引用Jar support-v4.jar**,不能直接添加Jar引用,必须要为此公共Jar建立一个Library,然后两个工程都引用此library,否则在编译Android过程中提示 此Jar already added Exception 

–新建一个module(file-new module-android library)然后为这个module从dependencies处add- library,选V4和V7。然后其他各个需要V4或V7包的module都从dependencies处add-module来引用这个module(不直接引用v4和v7)

错误9:V4、V7等包冲突(java.exe finished with non-zero exit value 2 、has already exists等): 

1、新建module library_support ,引用V4 V7
2、引用的开源lib全添加依赖为这个module,间接引用V4 V7(即错误8里的解决方法),并把添加library_support的这一项的scope改为provided(不是改support的,是改依赖support的),让他只给自己的lib用,不给别人用。
3、在./build/intermediates/dex-cache/cache.xml 中找到所有关于v4 v7的包定义全部删掉(假如有的话)
4、假如主项目也依赖V4 V7的话就要也给主项目依赖library_support了(因为引用的lib里的V4和V7都是私有的,不能间接给主项目用),但主项目的library_support依赖必须为compile
5、clean project
6、假如有报错如在某个开源lib的build-intermediates-manifest-androidTest-debug-androidmanifest.xml文件有报错则删除那个报错的没见过的标签(instrumentation),此时不要clear project!否则还会再生成。直接run project。

错误10.主项目假如添加maven里的远程项目时,假如提示远程项目的minversion大于主项目的minversion,则需要在主项目的manifest中的 uses-sdk元素中添加 tools:overrideLibrary = “com.soundcloud.android.crop,com.ikimuhendis.ldrawer”

错误11.假如提示错误找不到drawable-iclauncher(因为新版studio中图片放在mipmap而不是drawable中)则需要在新项目的manifest的application标签下添加tools:replace=”android:icon”

错误12、打包时报a problem was found with the configuration of task。。。错误: 

1。clear项目
2.打包时的key store path要写全路径!

错误13、libs里的jar包不能展开并且在项目中无法引用:
如图
解决方法:sync一下就行了

错误14、 1 .Duplicate files copied in APK META-INF/LICENSE.txt

android {

packagingOptions {
exclude ‘META-INF/LICENSE.txt’
}
}
My logcat: log Execution failed for task ‘:Prog:packageDebug’.
Duplicate files copied in APK META-INF/LICENSE.txt File 1: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar File 2: /home/scijoker/AndroidStudioProjects/ProgProject/Prog/libs/httpclient-4.1.1.jar

解决方法:
在主项目app的build.gradle添加

android {
packagingOptions {
exclude ‘META-INF/DEPENDENCIES.txt’
exclude ‘META-INF/LICENSE.txt’
exclude ‘META-INF/NOTICE.txt’
exclude ‘META-INF/NOTICE’
exclude ‘META-INF/LICENSE’
exclude ‘META-INF/DEPENDENCIES’
exclude ‘META-INF/notice.txt’
exclude ‘META-INF/license.txt’
exclude ‘META-INF/dependencies.txt’
exclude ‘META-INF/LGPL2.1’
}
}

错误15、
异常提示:
应用在Android Studio Build的时候,抛出了如下异常:
Error:Execution failed for task ‘:app:processDebugManifest’.

Manifest merger failed : uses-sdk:minSdkVersion 8 cannot be smaller than version 9 declared in library [jp.wasabeef:blurry:1.0.0]
/Users/xxx/xxx/app/build/intermediates/exploded-aar/jp.wasabeef/blurry/1.0.0/AndroidManifest.xml
Suggestion: use tools:overrideLibrary=”jp.wasabeef.blurry” to force usage
错误原因:
出现这个错误的原因是我引入的第三方库最低支持版本高于我的项目的最低支持版本,异常中的信息显示:我的项目的最低支持版本为8(Android 2.2),而第三方库的最低支持版本为9(Android 2.3),所以抛出了这个异常。
解决办法:
在AndroidManifest.xml文件中 标签中添加


1
,其中的xxx.xxx.xxx为第三方库包名,如果存在多个库有此异常,则用逗号分割它们,例如:


1
,这样做是为了项目中的AndroidManifest.xml和第三方库的AndroidManifest.xml合并时可以忽略最低版本限制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值