• Android开发错误总结


    Android开发错误总结


    1)错误信息:

    [2011-01-19 16:39:10 - ApiDemos] WARNING: Application does not specify an API level requirement!
    [2011-01-19 16:39:10 - ApiDemos] Device API version is 8 (Android 2.2)

    原因:

    不影响正常运行。在AndroidManifest.xml文件中没有加API的版本号,在<manifest> </manifest> 之间加<uses-sdk android:minSdkVersion="3"></uses-sdk>

    [2011-01-19 16:55:04 - ApiDemos] Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE
    [2011-01-19 16:55:04 - ApiDemos] Please check logcat output for more details.
    [2011-01-19 16:55:05 - ApiDemos] Launch canceled!

    该设备没有足够的存储空间来安装应用程序,

    2)错误信息:

    [2011-02-18 11:46:53] Failed to push selection: Is a directory

    原因:

    原先目录已经有pkg_3.apk的文件夹,再copy一个pkg_3.apk安装文件时出现问题,解决办法,先删除掉pkg_3.apk的文件夹

    [2011-03-04 09:25:12 - ActivityMain]: Dx
    UNEXPECTED TOP-LEVEL EXCEPTION:
    java.lang.IllegalArgumentException: already added: Lorg1/apache/commons/codec/net/RFC1522Codec;
    [2011-03-04 09:25:12 - ActivityMain]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
    [2011-03-04 09:25:12 - ActivityMain]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143)
    .....

    [2011-03-04 09:25:12 - ActivityMain]: Dx1 error; aborting
    [2011-03-04 09:25:12 - ActivityMain] Conversion to Dalvik format failed with error 1

    原因:

    4)错误信息:

    启动Eclipse时出现:

     this android sdk requires android developer toolkit version 10.0.0 or above.

    current version is 8.0.1.v201012062107-82219.

    please update adt to the latest version

     

    原因:

    Eclipse的android开发插件版本过低,应该下载ADT-10.0.0,并且

      1. 启动 Eclipse, 然后进入 Help > Install New Software.

      2. 在 Available Software 对话框里,点击 Add....

    5)错误信息:

    [2011-03-09 15:21:34 - Info] Failed to install Info.apk on device '?': Unable to open sync connection!
    [2011-03-09 15:21:34 - Info] java.io.IOException: Unable to open sync connection!
    [2011-03-09 15:21:34 - Info] Launch canceled!

    原因:

    关闭模拟器和eclipse,执行adb kill-server命令,然后重试一下

    6)

    调用Webservice时出现

    错误信息:

    java.net.SocketException: Permission denied (maybe missing INTERNET permission)

    原因:

     需要访问到网络,所以,在AndroidManifest.xml中,需要进行如下配置: 
    <uses-permission android:name="android.permission.INTERNET" />

    7)错误信息:

    org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <{http://schemas.xmlsoap.org/wsdl/}wsdl:definitions targetNamespace='http://bo.webservice.nqbx.nq.com'>@2:603 in java.io.InputStreamReader@44a3a7b0)

    原因有可能是以下2个之一:

    1)Webservice服务器的Soap版本为1.0,所以客户端指定

    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);

    VER11改为VER10

    2)String serviceUrl = "http://200.200.200.11:10000/nqbx/service/InqBxWebService?wsdl";

    Url指的是你的webservice的地址.一般都是以***.wsdl或者***.?wsdl结束的...但是.需要注意的是..要去掉后面的.wsdl或者.?wsdl

    8)错误信息:

     在新的线程中 public class HttpThread extends Thread {...}

    增加一个弹出窗体:

    view plaincopy to clipboardprint?
    new AlertDialog.Builder(this).setTitle("数据加载失败").setMessage("请检查网络连接情况")   
               .setPositiveButton("OK", new DialogInterface.OnClickListener(){   
                public void onClick(DialogInterface dialoginterface, int i)   
                {   
                }   
                }).show();  
    new AlertDialog.Builder(this).setTitle("数据加载失败").setMessage("请检查网络连接情况")
               .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialoginterface, int i)
                {
                }
                }).show();

        

     

    出现编译性错误信息1:


    //不能在线程中操作UI界面

    java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

    修改后:

    view plaincopy to clipboardprint?
    new AlertDialog.Builder(com.nantsing.infoquery.chuanbo_detail.this).setTitle("数据加载失败").setMessage("请检查网络连接情况")   
               .setPositiveButton("OK", new DialogInterface.OnClickListener(){   
                public void onClick(DialogInterface dialoginterface, int i)   
                {   
                }  
    new AlertDialog.Builder(com.nantsing.infoquery.chuanbo_detail.this).setTitle("数据加载失败").setMessage("请检查网络连接情况")
               .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialoginterface, int i)
                {
                }


    出现运行性错误信息2:

    The constructor AlertDialog.Builder(chuanbo_detail.HttpThread) is undefined

    原因及解决办法:

    在UI主线程之外是无法对UI组件进行控制的。因为你必须在新线程任务完成之后利用各种方法先UI主线程发送消息通知任务完成从而来显示各种提示消息。
    线程间通信方法有多种,常用的是用handler来传递消息。

    如下:

    线程中构造消息:

     view plaincopy to clipboardprint?
    //构造消息                 
    Message message = handle.obtainMessage();   
    Bundle b = new Bundle();   
    b.putString("tag", "1");   
    message.setData(b);   
    handle.sendMessage(message);  
    //构造消息    
    Message message = handle.obtainMessage();
    Bundle b = new Bundle();
    b.putString("tag", "1");
    message.setData(b);
    handle.sendMessage(message);

    另外自定义消息:

    view plaincopy to clipboardprint?
    /**  
     * 捕获消息队列 fubin.pan 2011-04-02  
     */  
    Handler handler = new Handler() {   
      
        public void handleMessage(Message m) {   
            if (!m.getData().getString("tag").equals("1"))   
            {   
                               ...   
            }   
            else  
            {   
                new AlertDialog.Builder(chuanbo_detail.this).setTitle("数据加载失败").setMessage("请检查网络连接情况!")   
                .setPositiveButton("OK", new DialogInterface.OnClickListener(){   
                    public void onClick(DialogInterface dialoginterface, int i)   
                    {   
                    }   
              }).show();       
            }   
               
        }   
    };  
     /**
      * 捕获消息队列 fubin.pan 2011-04-02
      */
     Handler handler = new Handler() {

      public void handleMessage(Message m) {
       if (!m.getData().getString("tag").equals("1"))
       {
                                ...
       }
       else
       {
        new AlertDialog.Builder(chuanbo_detail.this).setTitle("数据加载失败").setMessage("请检查网络连接情况!")
              .setPositiveButton("OK", new DialogInterface.OnClickListener(){
               public void onClick(DialogInterface dialoginterface, int i)
               {
               }
               }).show(); 
       }
       
      }
     };

    9)android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:
    1。 如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。
           (该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级)
    2。 如果修改android sdk版本,则需要以下几个步骤:
           1)修改SDK
                 选择工程,build path --> configure build path ---> library 删除引用的低版本SDK,
                 然后add External JARs,选择高版本SDK,OK,保存
            2)修改classpath文件 
                 该文件可能存在该项: <classpathentry kind="lib"   path ="你所指定的高版本的地址"
                 把她修改成<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK" />
            3) 修改AndroidManifest.xml
                 在AndroidManifest.xml文件中,application标签后添加<uses-sdk android:minSdkVersion="3"></uses-sdk>
            4) 修改default.properties(很重要)
                  该文件最后一行(前面没用#的)target=android-3 该成target=android-8,保存。
            再看看你的工程和新建的android 2.2的工程结构就一样了。


     10) 错误信息:

    在线程debug(运行没有问题)时调用Webservice时出现:

    'JDI thread evaluations' has encountered a problem

    Exception processing async thread queue

     

    Exception processing async thread queue

    JDI thread evaluations

     


    原因及解决办法:

    与运行无关的错误,关掉'expressions'视图就可以了

    版权声明:本文为博主原创文章,未经博主允许不得转载。(转载请注明出自 AllenCoder)

  • 相关阅读:
    ES6
    ES6
    ES6
    ES6
    ES6
    ES6
    ES6
    IOS 最新开发上架流程 以及发布打包注意事项
    JavaScript Arguments
    函数防抖和函数节流
  • 原文地址:https://www.cnblogs.com/allencoder/p/4830761.html
Copyright © 2020-2023  润新知