android studio 错误总结

minSdkVersion 15 cannot be smaller than version 16

Error:Execution failed for task':app:processDebugManifest'.

> Manifest merger failed :uses-sdk:minSdkVersion 15 cannot be smaller than version 16 declared in library[MyApplication:xutils_library:unspecified]

D:\androidDevelopWorkspace\MyApplication\app\build\intermediates\exploded-aar\MyApplication\xutils_library\unspecified\AndroidManifest.xml

         Suggestion:use tools:overrideLibrary="com.lidroid.xutils" to force usage

解决方法:上述错误的主要原因是因为引用库的项目的版本低于库项目的最低版本,例如app把xutils_library作为库来引用,

xutils_library作为库他的最低版本要比app的低,也就是说app的最低版本要比库xutils_library的最低版本高

由于库要支持我们的项目,所以引用库的最低版本要低于小于项目的最低版本,修改之后就没有问题了。

 

URI is not registered(settings|project settings||Schemasand DTDs)?

出现问题的主要原因是项目没有编译成功

解决方法:首先查看项目中是否有build.gradle文件,如果没有的话,先创建一个项目,把创建的项目中build.gradle复制到错误的项目中去,编译,如果还是报错,那就有可能是xml文件出现了错误,我们接下来就是查看xml有没有报错的,然后再 编译,修改其他报错的地方

注意复制的build.gradle不是工程中的,而是项目中的,复制的时候一定要注意,因为在项目和工程中都有build.gradle

文件夹,复制其中编译通过的一个项目中的build.gradle到错误的项目中去就行了,复制过去还有可能报其他的错误,

 

 

Error:Cannot   read            packageName       from D:\androidDevelopWorkspace\MyApplication2\SlidingMenumaster\src\main\AndroidManifest.xml

 

报出这样的错误的其中的一种原因是因为在项目中的build.gradle文件夹中的方法

 sourceSets {

       main {

           java.srcDirs = ['src']

           resources.srcDirs = ['src']

           aidl.srcDirs = ['src']

           renderscript.srcDirs = ['src']

           res.srcDirs = ['res']

           assets.srcDirs = ['assets']

                           

 

       }

    }中缺少一条语句manifest.srcFile'AndroidManifest.xml'

         修改之后为

sourceSets {

       main {

           java.srcDirs = ['src']

           resources.srcDirs = ['src']

           aidl.srcDirs = ['src']

           renderscript.srcDirs = ['src']

           res.srcDirs = ['res']

           assets.srcDirs = ['assets']

                            manifest.srcFile'AndroidManifest.xml'

 

       }

    }就有可能不会报错了

         注意该方法在android{  }的方法中,还有一种可能就是android{}方法中根本就没有sourceSets{

       main {

           java.srcDirs = ['src']

           resources.srcDirs = ['src']

           aidl.srcDirs = ['src']

           renderscript.srcDirs = ['src']

           res.srcDirs = ['res']

           assets.srcDirs = ['assets']

                            manifest.srcFile'AndroidManifest.xml'

 

       }

    }那么把他直接复制进去就行了,就有可能不会报错了

 注意:

清单文件(AndroidManifest.xml)的xmlns:android="http://schemas.android.com/apk/res/android"会报出URI is notregistered(settings|project settings||Schemas and DTDs)的错误,首先我们先确定是那个清单文件报错,如果是debug中的报错,直接把build包全部删除掉就行了再重新编译,这个报错的原因是项目没有编译通过,使用的清单文件还是修改之前的AndroidManifest.xml,说明项目中的src下main文件夹中的源码中还有错误,如果没有给出提示,错误的主要原因是有错误的xml文件,首先看主界面的布局文件(xml文件),然后再找其他的xml文件。

 

注意android studio导入项目的时候不能包括中文,否则有可能无法运行

Error:Failed to resolve: com.android.support:support-v4:25.0.0

Install Repository and syncproject

OpenFile

Show in ProjectStructure dialog

解决方法:出现这种情况的问题是我们的sdk编译版本过低,而我们的support-v4的版本过高造成的,查看我们的

android studio中最高的编译版本通过File--setting--Appearance&Behavier>System Setting>Android Sdk--SdkPlatforms

查看下面安卓的最高级别的API,他就是编译版本

revision的意思是修订版,是修改后的版本,也是表示版本的意思

===================================================

一般的项目导入到软件中,只要v7,v4等支持库的版本和软件的sdk编译版本相对应的化,在编译的时候出现编译型错误都不是v7或着v4包的错误,而是代码本身有问题如果我们的v7或者v4包比我们的sdk编译版本高的化,就会出现错误,因为我们的编译版本sdk只支持与他对应或者版本比他低的v4、v7、v13等支持库,例如我们软件的sdk编译版本是API24级别的,而我们的v7或者v4支持库是com.android.support:support-v4:25.0.0的话就会报错。

===================================

 

Error:(1, 0) Plugin with id 'com.android_library' notfound.

OpenFile

解决方法:把项目中的apply plugin: 'com.android_library'内容改成apply plugin:'com.android.library'就行了,错误的原因就是“_”引起的

------------------------------------------

只有项目中的内容编译成功了, External Libraries下面的文件才会显示出来,如果项目没有编译成功下面只有两项内容

和<1.8>,其他的内容就不会显示出来

编译成功之后的内容

 

-----------------------------------------------------------------

 

 

:No cached version listing for com.android.tools.build:gradle:0.4.+available for offline mode.

出现这种错误的原因是因为版本不统一,修改的办法是找到项目中的build.gradle文件,把文件中的apply plugin: 'android-library'

放到文件的最前面(第一行),并修改成apply plugin: 'com.android.library',

然后修改项目中的 classpath 'com.android.tools.build:gradle:0.4.+'的内容,

要和工程中的build.gradle中的classpath 'com.android.tools.build:gradle:2.2.0'

一致,修改内项目中的classpath 'com.android.tools.build:gradle:2.2.0'就可以了

然后再修该项目中

dependencies {

   compile 'com.android.support:support-v4:13.0.0'

}

内容

 

导入一个项目需要修改的内容

大部分都是项目中的build.gradle文件中大的内容,要求里面的内容要和工程中build.gradle中的一些内容要相同

修改build.gradle中内容,步骤

1.apply plugin: 'com.android.library'放在最前面(第一行),有的项目的内容是apply plugin: 'android_library'

这时候就需要我们修改成apply plugin: 'com.android.library',没有的要添加,不一样的要修改,修改成相同的内容

2. buildscript {

   repositories {

       mavenCentral()

    }

   dependencies {

       classpath 'com.android.tools.build:gradle:2.2.0'

    }

}

修改classpath 'com.android.tools.build:gradle:2.2.0'的gradle版本为工程中gradle版本

3.dependencies {

   compile 'com.android.support:support-v4:24.2.1'

}

修改compile 'com.android.support:support-v4:24.2.1'的内容为android studio的编译版本所对应的支持包(即 support)

4.android {

   compileSdkVersion 24

   buildToolsVersion "24.0.2"

 

   defaultConfig {

       minSdkVersion 15

       targetSdkVersion 24

    }

编译版本修改成我们运行的android studio中所用的compileSdkVersion版本

这里面的内容都需要修改,修改成和软件的一些版本相同就行了

 

 

错误:

return (float) FloatMath.sin(f);符号:方法 sin(float)

位置: 类 FloatMath

注: 某些输入文件使用或覆盖了已过时的 API。

注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

1 个错误

 

Error:(305, 27) 错误: 找不到符号

符号:   方法 sin(float)

位置: 类 FloatMath

错误原因是因为API已经过时了,或者说是因为某些API已经被新的API所代替,API就是类,说API已经过时了,说明这个类已经过时了

也是说这个方法被封装到了新的类(也是API)中,所以我们只需修改其中的API就行了,通过提示我们知道是类 FloatMath过时了,我们先把他去掉,然后再导包或者通过提示快捷键导入相应的包或者把光标放到方法的后面,当方法的下面出现一条横线的时候,会给出提示

例如上面的错误给出的提示java.lang.Math.sin? (multiple choices...) Alt+Enter,这时候我们可以根据方法前面的类把类导入或者在方法的前面把类名写上

Error:Failed to load project configuration: cannot readfile D:\xUtils-master\.idea\misc.xml: D:\xUtils-master\.idea\misc.xml

主要原因是没有找到项目的正确路径,要找到项目的正确路径,例如:eclipse项目,要找到.setting外面的那个目录路劲,例如从github上面下载的项目,

要导入librariy库的时候,直接找到目录D:\adt_workspace\XXXX\XXX....\library就行了,如果是android studio项目导入的时候就简单了,直接导入就行了,

不会出现太大的问题,导入之后要进行build.gradle的内容修改

问题:Error:specify location of the gradle or android eclipse project

导入项目的时候会报上面的错误,首先查看项目中是否有.gradle和.settings配置文件夹,如果有说明是eclipse或者android studio的项目,在导入android studio的时候就不会报下面的错误(注意导入项目的路径是.settings所在的目录,例如项目的路径是C:\Users\jia\Desktop\SlidingMenu-master\library,那么.settings就在library目录下面),如果项目中没有.settings和.gradle文件的话是不能导入到androidstudio中的,要想用的话有两种方式,第一种就是先导入eclipse中进行编译,然后再导入android studio中去,第二中方法就是把代码直接复制到android studio中去,然后进行编译,编译的时候有可能会报错,错误是Cannot read packageName from XXXX\XXX.....\AndroidManifest.xml

 

在引用xutils的时候有可能报下面的错误Error:(20, 32) 错误: 程序包org.apache.http.protocol不存在,主要原因是没有这个包

解决方法有两种:

第一种:android studio在引用xutils的时候还有个注意事项:as使用xUtils的话,需要在app的build.gradle引入:useLibrary 'org.apache.http.legacy'(放在android{}内),如果还报错的话,就需要联网下载useLibrary 'org.apache.http.legacy'的架包了,因为你的软件中就没有这个架包,有些架包android studio会自动为我们下载,如果不自动下载,就需要我们手动下载。

在导入但三方包的时候有可能会报出错误,原因是我们导入的第三方的包还引用了其他第三方的架包,出现这种情况的原因是我们导入的是第三方的library的源码如果我们的导入的是jar格式的第三方的架包,是不会报出这样的错误的,例如我们导入xutils的library报出错误,我们可以先试用xUtils-2.6.14.jar进行项目的开发,等到有时间的时候再查找错误原因

 

第二种:出现上面的原因还有一个可能就是编译版本的问题例如导入第三方包xutils的时候如果编译版本是

 compileSdkVersion 19,就不会报“程序包org.apache.http.protocol不存在”的错误,如果编译版本设置为compileSdkVersion 24就会报“程序包org.apache.http.protocol不存在”的错误,主要原因是从android6.0开始就不在支持org.apache.http的包了  compileSdkVersion 19对应的是android4.4所以支持该包  ,compileSdkVersion24对应的是android 7.0,所以不支持该包,导入第三方包的时候如果报错,先把他的编译版本降低(前提是sdk中安装了该版本的sdk platform),如果是低的编译版本,修改成高的编译版本试试,如果还是报导入包的错误,那就在网上先搜使用该第三方包的注意事项,然后把报错的包在网上搜索所在的架包,如果找到的话下载该包所在的架包,然后复制到第三方的项目中lib文件夹的下面,然后把复制到lib中的架包依赖到项目中(右键lib中的架包--add as library--ok),最后把错误粘贴到网上,搜索解决方案。

   

 

 

 

 

 

 

 

 

 

 

 

        

as导入的项目不是包的结构,而是文件夹的层级目录,怎么修改,如果是项目或者作为类库的话出现文件夹的目录格式,主要原因是工程中的settings.gradle中没有包含该项目,修改里面的内容就行了

,如果添加一个library项目,把include ':app', ':mylibrary', ':SlidingMenu-master'内容修改成include':app', ':mylibrary', ':SlidingMenu-master','library'

如果项目在工程中再添加其他的项目的话,就在后面把谁的项目名称加载到后面,就行了。

 

 

 

The APK fileD:\androidDevelopWorkspace\MyApplication2\sample\build\outputs\apk\sample-debug.apkdoes not exist on disk.

Error while Installing APK

原因是,该应用的图标没有办法在手机上显示,主要原因是显示应用的图标不存在了,换一张图片就行了,修改的步骤就是修改清单文件(AndroidManifest.xml)里面标签中的  android:icon="@mipmap/ic_launcher"中的内容就行了

#############################################################################

 

如果项目中xmlns:android="http://schemas.android.com/apk/res/android"没有报错,而中的属性报错了

错误提示No resourse found that match the given name 等等,这样的错误的原因是没有找到引用的资源,直接修改里面的内容就行了,

如果xmlns:android="http://schemas.android.com/apk/res/android"有错误提示的话说明我们的项目没有编译成功,里面的错误先不用修改,因为项目没有编译通过,xmlns:android="http://schemas.android.com/apk/res/android"都没有引用成功,再修改也是错误,所以先把xmlns:android="http://schemas.android.com/apk/res/android"的引用问题解决了,下面的问题也就有可能不会报错了,如果还有错的话,再修改中的错误项就行了

 

 

 

 

error:java.io.IOException: stack size 1036KB

解决方法:是xUtils正在android5.0上有bug ,替换最新的jar包就能够了。]

 

 

 

 

 

activity中没有触摸监听事件,有触摸事件(onToucherEvent)

 

Error:Execution failed for task':whJd:mergeDebugResources'.//说明是资源文件中的内容出现了错误

> Error: java.lang.RuntimeException:Some file crunching failed, see logs for details   这是对上个错误的具体原因

 

 

 

 

 

 

Caused by:java.lang.IllegalArgumentException: Service Intent must be explicit: Intent {act=com.ldw.music.service.MediaService } 非法参数异常

 

--------------------------------------------------------------------------

哎  错误是千奇百怪,解决办法也是千奇百怪,解决问题的过程是需要尝试的,不同的解决方法可能会把问题解决了也有可能解决不了,各种解决方法就尝试吧。

org.apache.http.legacyandroid studio怎么联网下载,android studio怎样联网下载我们需要的第三的架包。

 

 

 

 

 

Error:Cannot   read          packageName          from D:\androidDevelopWorkspace\MyApplication2\SlidingMenumaster\src\main\AndroidManifest.xml

报出这样的错误的其中的一种原因是因为在项目中的build.gradle文件夹中de方法

 sourceSets {

       main {

           java.srcDirs = ['src']

           resources.srcDirs = ['src']

           aidl.srcDirs = ['src']

           renderscript.srcDirs = ['src']

           res.srcDirs = ['res']

           assets.srcDirs = ['assets']

                           

 

       }

    }中缺少一条语句manifest.srcFile'AndroidManifest.xml'

         然后改成

sourceSets {

       main {

            java.srcDirs = ['src']

           resources.srcDirs = ['src']

           aidl.srcDirs = ['src']

           renderscript.srcDirs = ['src']

           res.srcDirs = ['res']

           assets.srcDirs = ['assets']

                            manifest.srcFile'AndroidManifest.xml'

 

       }

    }就有可能不会报错了

         注意该方法在android{  }的方法中,还有一种可能就是android{}方法中根本就没有sourceSets{

       main {

           java.srcDirs = ['src']

           resources.srcDirs = ['src']

           aidl.srcDirs = ['src']

           renderscript.srcDirs = ['src']

           res.srcDirs = ['res']

           assets.srcDirs = ['assets']

                            manifest.srcFile'AndroidManifest.xml'

 

       }

    }那么把他直接复制进去就行了,对于有些项目报出这样的错误有可能项目中有这些多余的内容,如果有这些内容报错的话,把它删除试试,如果没有加上试试,如果项目中或者导入的library中src文件夹下面不存在main文件夹就需要在build.gradle文件中加上上面的内容,如果存在的话再加上就是错误的

 

 

 

 

The       APK      fileD:\androidDevelopWorkspace\MyApplication2\sample\build\outputs\apk\sample-debug.apkdoes not exist on disk.

Error while Installing APK

原因是,该应用的图标没有办法在手机上显示,主要原因是显示应用的图标不存在了,换一张图片就行了,修改的步骤就是修改清单文件(AndroidManifest.xml)里面标签中的  android:icon="@mipmap/ic_launcher"中的内容就行了

 

 

 

 

Error:Failed to find target with hash string 'android-23'in: D:\androidstudio\sdk

Install missing platform(s) andsync project

这个原因主要是你的sdk中没有android-23这个版本的镜像,就是adk中没有android-23的内容

 

 

 

Error:(4,37) 错误: 程序包android.support.design.widget不存在,说明项目缺少一个支持包,修改方法选中项目  file ---projectstructure---dependencies  点击“+”号,选择  library dependency----com.android.support:design---ok

(有点错误的解释:(有些时候也是一种解决方法)

cannot resolve symbol 'AppCompatActivity

导入第三方报的时候,也有可能报错,主要原因是导入的时候软件会自动为我们创建一个MainActivity.java,如果我们不确定有没有这个文件我们可以在清单文件中看看有没有注册这个activity,如果没有的话,直接把这个activity删除掉就行了,还有就是我们查查清单文件的主界面是谁,不过有些时候这也是一种解决方法,这种解决方法在时间紧张,没有时间去研究的情况下才用,如果有时间我们应该找出错误的原因)

 

Warning:Ignoring InnerClasses attribute for an anonymousinner class associated EnclosingMethod at

 

错误的详情Warning:Ignoring InnerClasses attribute for ananonymous inner class
associated EnclosingMethod attribute. This classwas probably produced by a
compiler that did not target the modern .classfile format. The recommended
(com.alibaba.sdk.android.executor.a.c) thatdoesn't come with an
solution is to recompile the class from source,using an up-to-date compiler
and without specifying any "-target"type options. The consequence of ignoring
this warning is that reflective operations onthis class will incorrectly
indicate that it is *not* an inner class.

解决方法:

Android studio

1、在项目build.gradle这里添加这句。

defaultConfig{

 multiDexEnabled true

} 这个方法问题解决成功

实验的结论:找到项目下对应的proguard-rules.pro文件。如下图所示。

 

       在proguard-rules.pro文件中添加如下代码(解释:忽略内部类的一些属性)。

-keepattributes EnclosingMethod

资料显示每个项目的Dex都有方法数的限制(上限65536,超过上限号称应用爆棚),由此猜想会不会是Dex的方法数超过上限呢?同样报着试试的态度,在项目的build.gradle文件中添加multiDexEnabled true代码(解释:设置多Dex可用)。其具体情况如下图所示。

再次重构项目,运行,出现如下结果。

 

      由此项目可以在Windows上无错误运行,再次将项目导入Mac上,完美运行。Ignoring InnerClasses attribute for ananonymous inner class问题解决就介绍到此。下面做下简单的总结。

       (1) 第一考虑是不是可以直接忽略第三方的属性的错误警告,由此层层递进发现问题。

      (2) 出现IgnoringInnerClasses attribute for an anonymous inner class问题一般是第三方jar的问题引起的可能性很小,首先考虑是不是Dex越界问题。

      (3) keepattributesEnclosingMethod去除,再次重构发现也不会出现IgnoringInnerClasses attribute for an anonymous inner class问题,由此进一步推断主要是Dex越界问题引起IgnoringInnerClasses attribute for an anonymous inner class问题。如果导入项目遇到类似问题首先判断是否是Dex越界引起。

其他的解决方法:下面的方法不一定成功,上面的方法可以成功

有可能项目中有重复应用的架包,例如:android.support.v4.app有重复,删除掉一个就行了

 

最下策的解决办法:1、网上所给出的答案很多,有说什么SDK版本过低的,到C:\Users\XXX\.android下面删除ddms.cfg和debug.keystore文件的之后clean一下重新运行的,说原因是什么keystore文件日期过期,还有说两个.class文件冲突的,

2、下面来说说我的解决办法:

 

通常出现这种情况都是因为导入的第三方的工具(可能是功能模块,可能是开源项目...),导入第三方包的方式两种:

 

一种把想要引入的第三方项目作为jar包引入,jar包存放在bin文件夹下,直接复制出来copy到你的项目的libs文件夹下即可。另一种是右键,在菜单中点击属性,在Android选项中勾选is library,作为library引入...

 

那么问题来了,有的人既引用了jar包,又引入了library,就会出现上述的问题,也就是说,同一个第三方项目用jar和library分别引用了两次,只需要删除其中的一个,要么通过jar引入,要么通过library引入(在排查是否重复引入的时候,以libs文件夹下面有没有jar包为准),问题即可解决...

3、在progaurd文件里面加这个试试
-keep class com.unionpay.mobile.android.**{*;}

4、项目中引用的jar包冲突

 

Eclipse:

解决办法

1、右击项目,点击【Properties】菜单

2、点击【Java Build Path】菜单,进入JavaBuild Path界面

3、点击【Order and Export】菜单,将androidprivate Libraries 勾选去掉

4、重新编译。OK

 

 

java.lang.IllegalArgumentException: Service Intentmust be explicit

把之前的一个android测试项目安装至android 5.0上进行测试后,程序崩溃,控制台报如下错误:

解决方法:

java.lang.IllegalArgumentException: ServiceIntent must be explicit

如错误提示所示,在android 5.0版本以后,service intent必须为显式指出。

Intent intent = newIntent("android.intent.action.AIDLService");

                //for android 5.0 and later,service intent must be explicit

               intent.setPackage("com.example.android.aidlserver");

                bindService(intent, conn,Context.BIND_AUTO_CREATE);

即如以上代码所示,在bindService之前,调用intent.setPackage(packagename)方法,packagename为定义service所在的包名。重新部署后程序测试通过。

原因是Android 5.0对Service Intent的调用策略发生改变了,必须通过显示Intent来启动Service,详细介绍可以看stackoverflow上的介绍。

 

 

 

 

解决办法如下:

 

1、通过显示意图启动Service(直接用类名);

Intent intent = newIntent(com.yulore.test.AppService.class);

context.startService(intent);

2、如果想继续使用隐式意图的话,加上包名信息即可;

Intent intent = new Intent();

intent.setAction("com.yulore.recognize.android");

intent.setPackage(context.getPackageName());   //兼容Android 5.0

context.startService(intent);

 

 

one or more constraintshave not been satisfied

Eclipse启动web总是报错:

严重: Error configuring application listener of classorg.springframework.web.util.Log4jConfigListener

java.lang.ClassNotFoundException:org.springframework.web.util.Log4jConfigListener...

 

?检查以为是缺少jar包,后来查看jar包没有缺少(commons-logging,log4j),排查了许久,找不到问题,最后去eclipse-problem中发现?One or more constraints have not been satisfied 这个错误,网上搜索是什么版本过高,一步一步排查发现pom.xml中设定了编译jdk为1.6,而项目中设定了编译的jdk版本确是1.7

         maven-compiler-plugin

         2.5.1

        

                   1.6

                   1.6

                   128m

                   512m

                   true

                   ${project.build.sourceEncoding}

        

 

?

 

改过来就好了,唉,搞了老半天,根本不知道是这个问题引起的...

 

 

一个开发过程中比较少遇到的错误:java.lang.NoSuchFieldError:***R$id***

 

造成此问题的原因在于库文件的xml与主文件的xml同名了,作修改即可

 

 

Error:Could not create the Java Virtual Machine. Invalidmaximum heap size:4g

就是项目的build.gradle被配置了

dexOptions {

    incremental true

    javaMaxHeapSize "4g"

}

4g 改为1024m问题解决

 

 

Error:(23, 0) Couldnot find method compile() for arguments [file collection]            on object of typeorg.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.OpenFile

错误的原因是在工程中的build.gradle文件中不能有

dependencies {
   
compile 'com.android.support:appcompat-v7:24.2.1'
}

方法,如果在工程中build.gradle文件中有dependencies {}方法就会报错,直接删除就行了,不过在项目中该方法是必须的

Eclipse导入项目的时候会报出错误

解决的方法,首先要做的就是:选择项目右键---》properties--àandroid--àproject Build  Target  中选择一个版本---》apply---》ok如下:

 

然后再编译,这样的话再出错的话,直接修改错误就行了,还有就是在清单文件中修改手机版本 

 

ERROR: In xxx, unable to find attribute xxx

出现上面的主要原因是没有对属性格式化,修改为

就可以正常的运行。

总结:其主要原因是代码中取值方法getXXX  和 格式化类型xxx,对应的类型不同造成的。

你可能感兴趣的:(android)