旅游项目_Android开发编译环境设置总结
来源:互联网 发布:vb 调用zpl指令 编辑:程序博客网 时间:2024/04/27 15:42
A1.android一个项目应用另外一个项目和jar包引用
1.被引用的项目在“Android”选项里设置“Is Library”打钩
2.引用项在“Android”选项里设置“add"被引用项
3.android Dependencies会显示引用项目,依赖项目Android Private Libraries:表示放在libs里面的jar包引用,视为私有引用
Referenced Libraries:表示引用的外部jar包。
4.注意:
如果引用项目和被引用项目用到同一个jar包,版本需要保持一致。
Android Private Libraries和Referenced Libraries不能重复引用同一个jar包,两个都有时去掉一个。
在Android工程中,引用第三方jar包(尤其是经过本地编译的),在Java代码开发环境中正常编译输出,但到手机等设备上运行时一旦运行到引用该包的代码,立即异常崩溃,系统显示进程意外停止提示窗口, LogCat 报出异常信息
dalvikvm Could not find class '引用包.类', referenced from method...
AndroidRuntime java.lang.NoClassDefFoundError: 引用包.类
打开 Console 控制台窗口,Android监控页中显示异常信息
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
[2014-06-20 14:58:23 - DriverAssistant_Web] Dx
出现这种错误的原因是,当前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. 1.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.
2. 此时可以将android build tools升级为,编译提示的1.7或以上版本就可以解决该问题!
3. 同时,如果Android项目的jdk compliance设置为jdk1.6,而引入的jar包如果是1.7的,可以将该Andorid项目的complier compliance levels设置为1.7 ,将generated .class files compatibility设置为1.7(因为引入的jar包为1.7) ,将source compatiblity设置为1.6(因为源码的语言规范为1.6不能变)即可!
B1.android编译过程
android编译过程:
先来看张图吧,了解一下android project的编译过程
图里没什么重点,最重要的就是java class file 会通过dx 转换为android 自己设计的dex文件. 这个是快速编译和调试的基础.
编译过程总是先得到class文件,然后转换成dex,最后再做签名对齐等操作.可以看到class才是实质,其它的都是点缀而已,如果我们修改了*.java代码,最先变动的是class文件.
打个比方,我改动了PackageManagerService.java.那么首先是根据我修改的java代码生成新的PackageManagerService.class,然后才是转换为dex格式的services.jar包.
如果我们要修改service.jar里的PackageManagerService,只要得到PackageManagerService.java修改后对应的class文件即可.是不是很简单.有了这个class文件,
之后的转dex格式,签名什么的就易如反掌了.搞过java的都知道,class是java代码的目标文件,里面存放的是java byte code.直接在虚拟机里的可执行代码.
B2.Android基础之用Eclipse搭建Android开发环境
C1.private Libraries与android Dependency区别
1.android Dependency里面存放的是直接支持的类库,比如导入的第三方支持的源码生成的jar包,而private Libraries里面存放的是android私有的库(libs目录下的)还有第三方支持库中的lib(如meitaio\libs中的jar包,而且这些包有的要打包到APK中)
2.刚刚做了实验,这个是跟引用lib项目有关的.一般Private libs是本项目用的,不用导出到引用项目中去(但是当本项目被作为is libry所引用的时候,本项目的private lib也会被引用,但是不被导出?),具体设置是在order and export中设置.但是private libs应该是跟libs dependency一样
3.添加jar包到libs里面,系统自动把jar加载到android private libraries中;
4.为什么我在eclipse中放入libs之后,是在Android Private Libraries中,而非 dependencies?
大神,怎么才可以jar 包添加到Dependencies 里去呢?
上面是别人的例子,添加到dependencies里。
我也需要添加到
不需要添加啊。那是第三方的library,不是jar包吧
library 添加到别的项目里去,不需要添加吗?
我说的是android library,是在右键项目--properties--android---add中添加的那种
5.Private Libraries 就是libs里面的jar包的映射!你把libs中的jar包移除 Private Libraries中也就没有了
6.java项目使用eclipse导出jar放入android项目的libs里为何不编译?
首先java项目是没有问题的,导出的jar在其它的java项目中也可以正常使用。
编写java和android项目的过程中eclipse也没有给出警告,编译和打包都通过。唯独在(虚拟机和真机)运行调试的时候出现错误:
回答:
所以这个问题解决起来也非常容易:
1.使用较早期版本的jdk,可以尝试java6甚至java5。然后使用这个老版的jdk编译打包java项目为jar。然后这个jar就可以被用作android项目的第三方jar引用了。
2.如果换早期版本的jdk没有解决问题,或者不想安装老版的jdk,那么你可以尝试从android项目导出jar而非从java项目导出jar。具体实施步骤是:建立一个新的android项目,将java项目的代码文件导入,然后使用android项目菜单导出为jar,然后这样的jar就可以被放在别的android项目里正确引用了。
D2.Android开发搭环境步骤, ADT, JDK, SDK, NDK, Eclipse, CDT
http://blog.csdn.net/smking/article/details/7594019
- 旅游项目_Android开发编译环境设置总结
- 旅游网站项目开发过程总结
- 银滩旅游度假区宫家岛旅游开发项目
- 步步为营_Android开发课[2]_开发环境及项目的目录结构介绍
- 01_Android应用开发环境搭建【图解】
- Android开发环境搭建_Android开发环境搭建
- Ogrekit源码Windows平台编译_Android环境搭建
- SublimeText编译C开发环境设置
- Android-开发笔记-001_Android开发环境搭建
- 新昊旅游网站项目总结
- android ubuntu编译开发环境搭建总结
- 安卓开发_Android编译完成后的代码结构
- 开发环境中biztalk项目设置注意事项
- 01_Android应用开发环境_01_android发展史及系统架构
- 01_Android应用开发环境_02_Android应用的基本组件
- 01_Android应用开发环境_05_签名android应用程序
- 设置java命令行开发环境和编译环境
- 设置GoLang命令行开发环境和编译环境
- CSS3学习手册
- CGRect常见用法和几个 CGRect 函数
- EditText属性大全
- css知多少(6)——选择器的优先级
- Unity3D游戏开发之动画脚本 Animation Scripting
- 旅游项目_Android开发编译环境设置总结
- Android 获取SIM卡手机号
- 超级组合:用户中心+云平台
- JNI中C调用Java方法
- android application学习
- 实现多方位网络营销的一些技巧
- 记录一个Hadoop Configuration易产生的误用
- poj1573Robot Motion
- 年前最后一篇----关于DOC,PDF,PPT怎么逃过网络各类文库相同文件的审核 重金悬赏高效处理大量文档的方法