暂时主要讨论以下几点:

  • Android引用外部包,报NoClassDefFoundError异常崩溃
  • 同名包引用关系问题
  • 程序图标
  • 9patch图片素材

Android引用外部包,程序报java.lang.NoClassDefFoundError异常崩溃

在Android工程中,引用第三方jar包(尤其是经过本地编译的),在Java代码开发环境中正常编译输出,但到手机等设备上运行时一旦运行到引用该包的代码,立即异常崩溃,系统显示进程意外停止提示窗口,LogCat报出异常信息

dalvikvm Could not find class '引用包.类', referenced from method...

AndroidRuntime java.lang.NoClassDefFoundError: 引用包.类

打开Console控制台窗口,Android监控页中显示异常信息

[2014-06-20 14:58:23 - DriverAssistant_Web] Dx
trouble processing:
[2014-06-20 14:58:23 - DriverAssistant_Web] Dx bad class file magic (cafebabe) or version (0033.0000)
...while parsing 引用包/类.class
...while processing 引用包/类.class
[2014-06-20 14:58:23 - DriverAssistant_Web] Dx 1 warning

出现这种错误的原因是,当前Android工程(API17 android4.2.2 ADT v21.1)默认使用的是jdk 1.6(JDK 6.0)编译器,而引用的包编译环境大于1.6(如1.7等),由于编译出的字节码版本不一致,导致无法转换成android虚拟机dalvikvm可读的字节码,因此引用的这个类包实际上并没有被编译到这次输出的apk中,自然程序运行的时候就找不到对应的类文件了。

解决方法:

获取引入包的源代码工程,右击工程菜单: Properties(属性)->Java Compiler 窗口中可以选择工程编译使用的jdk版本,选择1.6或1.5,点击确定,重新编译输出jar包,导入Android工程即可:

PS. Android工程本身是不支持更改jdk编译版本的,如果尝试更改至1.7的话,Console控制台将得到错误输出信息 Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.


同名包引用关系问题

同时引入两个同名jar包到工程,例如:

a.jar

|---wavky.wand.A

ab.jar

|---wavky.wand.A

|---wavky.wand.B extends wavky.wand.A

在javaSE中测试,使用 wavky.wand.B 类时,不会导致冲突,但只会引用第一个加载的jar包的类

在下面的Order and Export界面中,可以调整相应类包的加载顺序,调整 a.jar 到 ab.jar 上面,则类B继承自 a.jar 中的类A(ab.jar中的类A不再被类加载器加载)。

但是,无法通过这种调整加载顺序的方式替换JDK中的包类!

但在Android中,这种调整类加载顺序的方式似乎已经不再起作用,所有外部引用的包自动被整合为一个单独的Android Dependencies,而且跟javaSE的情况一样,无法通过将Android Dependencies调整至顶层的方式替换Android SDK中的原生同名包类,如果外部引用与Android SDK内同名的包,则自动优先使用SDK内的jar包的类,而忽略外部引用。


程序图标

  • 根目录\ic_launcher-web.png——512×512分辨率图标,用于google Play市场展示
  • 根目录\res\drawable-xdpi\ic_launcher.png——各像素密度下程序图标

9patch图片素材使用

  • 除了左、上的扩充像素标记外,右、下的内容范围像素标记也必需涂上(且连续、不断点),否则实际布局显示效果将产生混乱、无法对齐等不可预测现象。
  • 在eclipse(ADT)的XML布局设计界面上使用9patch的图片,在API16/17以下的版本保存编译XML会导致IndexOutOfBoundsException异常,但不影响相应版本系统的运行显示效果,安装使用API16/17 SDK编译即可。相关信息可参考:http://stackoverflow.com/questions/10757997/9-patch-not-working

转载于:https://www.cnblogs.com/wavky/p/3799009.html

Android开发注意点小记相关推荐

  1. 手Q支付Android开发面试前小记

    过年之前朋友帮忙做了内推: 千里马姓名 岗位全称 工作地 岗位要求 岗位职责 18428-手Q支付Android开发工程师(北京) 北京 2年及以上手机应用或相关开发经验,1年以上Android平台开 ...

  2. 高级Android开发面试汇总

    高级 Android 开发面试题汇总 一. Android 基础 1. Service 的两种启动方式 简单的来说就是 直接启动 和 绑定启动 两种方式. // 直接启动 Context.startS ...

  3. dSploit—Android网络***套件测试小记(含视频)

    http://www.freebuf.com/articles/wireless/6279.html dSploit-Android网络***套件测试小记(含视频) dSploit是什么? dSplo ...

  4. Android环境搭建和Android HelloWorld—Android开发环境搭建

    Android_Android开发环境搭建-搭建Android的开发环境 1.我考虑先下载JDK7.0,在JDK的安装中,考虑一般SDK都是向上兼容的,于是选择了最高的版本7.0 这里是我总结的详细的 ...

  5. java安卓开发工具_推荐几个非常实用的Android开发工具

    工欲善其事,必先利其器.我们进行Android开发也要有好的开发工具辅助才能更好更高效的完成各种开发,为用户提供更实用的应用程序.本文就为大家推荐几个非常实用的Android开发工具,及几个常用的编辑 ...

  6. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  7. linux 浏览器源码下载,Android开发:图片浏览器源码

    Android 图片浏览器源码,是你学习Android很好的例子,希望对你的学习有帮助. main.xml android:layout_width="fill_parent" a ...

  8. 2017-2018-2 20165236 实验四《Android开发基础》实验报告

    2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛     ...

  9. Android开发权威指南(第2版)新书发布

    <Android 开发权威指南(第二版)>是畅销书<Android开发权威指南>的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供 ...

  10. indows上的android开发环境软件架构5

    (二)实验要求: ? 修改按下button 显示的内容中添加上自己的学号姓名: ? 添加一个按钮,按钮名称为"退出",并且为这个按钮添加事件代码,使得点击这个按钮后退 出程序.事件 ...

最新文章

  1. spark 写tidb_优秀的数据工程师,怎么用Spark在TiDB上做OLAP分析
  2. 1 计算机主机里面都有些什么东西,电脑主机箱里头的东西都有什么用?
  3. spring 注入bean的两种方式
  4. 使用Androidkiller编译APK文件时出现libpng error: Not a PNG file的错误
  5. Normalization 归一化方法 BN LN IN GN
  6. Handler处理器 和 自定义Opener
  7. RocketMQ(六)—IndexFile详解
  8. JAVA反射-面试题
  9. 生活在继续,梦,也要继续
  10. wc 统计文件字节数、字符数、单词数
  11. 代码审计工具学习之Seay(安装以及初步认识)
  12. 怎么把安装包挂在HTML,怎么把安装包拷贝到u盘
  13. 什么是身份证ocr识别?身份证ocr识别接口API能干什么?
  14. C#集成FastReport.Net并将模板保存到数据库
  15. Kernel 日志缓存大小修改
  16. 我辞去了年收入50万的工作,去做在线教育的老师
  17. RadioGroup 全部取消选中 和选中某个按钮
  18. 数据结构第四篇——(一般)线性表(基于C语言)
  19. trinity运行原理及常见报错(二)
  20. 鸿蒙系统电池省电吗,鸿蒙系统+5850超大电池华为mate40,华为mate30前辈彻底感人价...

热门文章

  1. linux 中select()函数的使用
  2. fckeditor代码总结
  3. GitHub命令使用步骤
  4. 095 issubclass和isinstance
  5. 解决Mac系统finder卡顿转菊花的问题
  6. K3CLOUD表关联
  7. Thread.Join 和 Task.Wait 方法
  8. 3. Node.js REPL(交互式解释器)
  9. .Net remoting, Webservice,WCF,Socket区别
  10. ASP.NET数据分页技术(4)