码迷,mamicode.com
首页 > 移动开发 > 详细

Android错误总结

时间:2016-05-27 12:24:38      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:


<span style="font-size:14px;"><code class="hljs http has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-attribute" style="box-sizing: border-box;">com.android.dex.DexException</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">Multiple dex files define Landroid/support/annotation/AnimRes;</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul></span>

每次都要clean一下,然后才能编译过,光这个过程就浪费了4/5分钟。出现这个问题是因为最新的v4包(compile ‘com.Android.support:support-v4:22.2.1’)已经包含了annotation.jar这个包,但其他jar包里也包含这个包造成的。而非同时包含了v4/V7造成的,所以一堆人说在v7包里进行如下设置:

<span style="font-size:14px;"><code class="hljs cs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">compile (<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.support:appcompat-v7:22.2.1'</span>){
        exclude <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">group</span>: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"com.android.support"</span>, module: <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"support-v4"</span>
    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul></span>

即设置v7包不包含v4,这个设了也是没用的。只要确保用v4和v7 的地方版本一致即可。正确的解决方法有如下几种: 
1,找到项目其他的依赖包,一定在libs里的某个jar包里,隐藏着annotation.jar包,将其删掉就ok了,此为最正统的解决方法; 
2,降级v4包,因为高版本的v4才包含annotation.jar,可以在最外面的build.grable里强制设置:

<span style="font-size:14px;"><code class="hljs matlab has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">allprojects <span class="hljs-cell" style="box-sizing: border-box;">{
    repositories {
        jcenter()
    }</span>
    <span class="hljs-transposed_variable" style="box-sizing: border-box;">configurations.</span>all <span class="hljs-cell" style="box-sizing: border-box;">{
        resolutionStrategy.force <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.support:support-annotations:22.1.0'</span>
    }</span>
}</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul></span>

3,在需要v4包的地方exclude掉annotation包,注意compile要多加个括号:

<span style="font-size:14px;"><code class="hljs ruby has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> compile (<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">'com.android.support:support-v4:22.2.1'</span>){
        exclude <span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">module</span>: '<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">support</span>-<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">annotations</span>'</span>
    }</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul></span>

缺点是每个用v4包的地方都要这么设置下。 
4,在application的build.gradle里的dexOptions设置里增加一句:preDexLibraries = false就ok了: 
技术分享

PS:以上四种方法都可以解决问题,推荐正统的方法1和偷懒的方法4。

<span style="font-size:14px;"><pre name="code" class="javascript"></span>



1.使用LruCache来缓存图片的例子:(内存缓存) 
http://www.cnblogs.com/lichenwei/p/4437773.html 
http://my.oschina.net/ryanhoo/blog/93406

3.java.lang.Runtime类中的freeMeory(),totalMemory(),MaxMemory() 
MaxMemory():返回这个进程从操作系统那里挖到的最大的内存,以字节为单位。 
totalMemory():返回这个进程当时所占用的所有内存。 
freeMemory():当java程序运行的过程中,内存总是慢慢的从操作系统那里挖的,基本上是用多少挖多少,但是,java虚拟机总是会多挖一些,这些多挖出来又没有用上的内存,就是FreeMemory()返回的值,一般都比较小。

4.AsyncTask轻量级异步类

5.MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(Cotroller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

6.ToggleButton、Switch、CheckBox和RadioButton都是继承自Android.widget.CompoundButton,意思是可选择的,因此它们的用法都很类似。CompoundButton有两个状态,分别是checked和not checked。

7.native关键字表示可以调用操作系统的底层函数,那么这样的技术成为JNI技术(java Native Interface)

8.jre(java runtime environment,java运行环境),运行java程序所必须的环境集合,包括java虚拟机(jvm)、java核心类库和支持文件。你所写的java程序在经过javac编译后会形成字符行文件,这个java的中间文件,计算机是看不懂得,而这个文件是给jvm(java虚拟机)用的。由jvm进行解释后形成机器语言给计算机。而这个jvm就在jre中。 
jdk(java Development kit)是java语言的软件开发工具包。 
JDK包含的基本组件包括: 
javac-编译器,将源程序转成字节码。 
jar-打包工具,将相关的类文件打包成一个文件 
javadoc-文档生成器,从源码注释中提取文档 
jdb-debugger,查错工具 
java-运行编译后的java程序(.class)


10.启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变。

11.在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run方法就可以实现多线程操作了,但是一个类只能继承一个父类这是此方法的局限。 
Thread 
http://www.jb51.net/article/37465.htm 
用run()调用的话,是先执行第一个,再执行第二个,没有相互运行。也就是说,是同步的。 
用start()方法的话,程序是交互式运行的。也就是说是异步的。

在实际开发中一个多线程的操作很少使用Thread类,而是通过Runnable接口完成。

Thread认识Runnable 并且知道Runnable 里面有一个run方法. 一旦调用Thread的start方法,Runnable 方法里的run就会被Thread自动运行。 所以,当我们把我们的类继承(这里应该叫实现接口)自Runnable 的时候,我们的程序就是属于Runnable 一个类型的了。 虽然是Runnable 的子类,但人家认识你爸爸,当然也知道了你。

Runnable是一个接口,不是一个线程,一般线程会实现Runnable。所以如果我们使用匿名内部类是运行在UI主线程的,如果我们使用实现这个Runnable接口的线程类,则是运行在对应线程的。

首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。 
而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。

12.async异步 
sync同步


13.关于微信微信 onresp 收不到返回的结果

在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。 Android:exported="true"  android:exported
       这个属性用于指示该服务是否能够被其他应用程序组件调用或跟它交互。如果设置为true,则能够被调用或交互,否则不能。设置为false时,只有同一个应用程序的组件或带有相同用户ID的应用程序才能启动或绑定该服务。

  
实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。 
  
在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。  
  


Android错误总结

标签:

原文地址:http://blog.csdn.net/sinat_25903067/article/details/51490110

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!