Java有很多第三方库。Android的Dalvik虚拟器不完全是Java,也就是Android SDK和传统的SDK不完全一样,如果Java库兼容Android,则可被利用。Java库使用受限于下面因素:

  • 目标平台:Java代码适配版本是否比Android基于的Java版本更高。是否用了Android不支持的Java SE的API,例如Swing、AWT图形。
  • Size:为桌面或者服务器设计的Java代码不需要考虑存储和内存空间,Android需要,使用第三方Java代码,可能会是应用Size无法容忍。
  • 性能:Java代码是否要消耗Android设备所能提供的CPU。
  • 界面:Java代码是否需要console界面,或者可以包装我们自己界面中的单纯API。

解决方式之一是使用开源java代码,使他们变得更适合Android。例如只需使用10%的第三方库,可以重新编译,去除不必要的类。

不是所有的Java代码可以在Android或者 Dalvik上运行,Android没有提供某些在Java SE/ME/EE上的API,例如图形相关的Swing和AWT。此外Java代码可以依赖其他Java代码,例如Jar中依赖不同于Android集成的Apache HttpComponents,可能会引发兼容问题。在这些情况下,当我们引入第三方jar包进行编译的时候没有问题,但是在运行应用是出错。因此使用开源代码是最好的解决方案。

Android使用Java的第三方jar注意事项_第1张图片

有两种方法集成第三方代码,使用源代码或者使用预先封装好的jar。如果使用源代码,将其放入我们代码树中一起编译。下面介绍使用jar的方式。

加入第三方jar

如果使用现成的jar,将jar放在Android项目的libs/目录下,在命令行ant的编译方式中,会自动将查找libs/的jar文档。如果使用IDE开发,例如Eclipse,需要将JAR加入到 bulid path中。在左边树状列表中,点击所需加载jar的项目,按右键->Build Path –>Add External Archives…,加入jar包即可。

在例子中,使用BeanShell的bsh-core-2.0b4.jar,BeanShell是提供脚本方式,可以按java的语句格式来编写脚本。下载,并安装后,在Eclipse成功加入jar文档,如右图所示。BeanShell使用很简单,将在例子中建设。

源代码

加入jar后,其他和常规的做法没有什么区别,代码如下:

Android使用Java的第三方jar注意事项_第2张图片Android使用Java的第三方jar注意事项_第3张图片... ...
import bsh.Interpreter;//可通过 Ctrl + Shif + O自动加上

public class Chapter24Test1 extends Activity{
//BeanShell使用步骤1:创建一个BeanShell Interpreter的实例
private Interpreter i = new Interpreter();

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.chapter_24_test1);
Button button = (Button)findViewById(R.id.c24_eval);
final EditText script = (EditText)findViewById(R.id.c24_script);

button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String src= script.getText().toString();
try{
//BeanShell第2步:设置脚本的全局
i.set("context",Chapter24Test1.this);
//BeanShell第3步:设置脚本,可选的获取脚本的最后状态。
i.eval(src);

}catch(bsh.EvalError e){
Log.e("WEI","Error : " + e.toString());
}
}
});
}

}

在Android上使用能够BeanShell是有限制的,不是所有的脚本语言都能正常工作,例如那些对JIT有独特格式的脚本,此外不是所有的Java API都在Dalvik中有效。没有JIT的脚步将比编译为Dalvik应用慢,慢回事用户体验呆滞,并消耗更多的电池能量,因此除非很简单,一般般在 BeanShell中建立整个Android应用。BeanShell脚本可以处理Android底层安全模式运行的所有事情,例如如果应用设置了 READ_CONTACTS权限,那么应用中任何的BeanShell脚本就有相同的权限。另外,BeanShell最小的Core包也有140K,和应用处理的事情来讲,体积太大,消耗存储太多,下载时间更长。

更多相关文章

  1. Android API之Typeface代码演示
  2. Unity3D调用android方法(非插件方式)
  3. Android原生方式获取经纬度和城市信息
  4. Unity3d Android SDK接入解析(二)Unity3d Android SDK的设计与两种
  5. Android开发利器之pidcat安装方式
  6. 【android】布局之盒模型、对齐方式、填充(类比web理解)
  7. Android 定时任务的多种实现方式

随机推荐

  1. xUtils框架的使用详解
  2. Android(安卓)Widget开发案例(伦敦奥运会
  3. Android(安卓)assets 目录介绍和应用
  4. android自更新时下载出现的问题
  5. 【Android】17.0 第17章 服务绑定—本章
  6. Github-Client(ANDROID)开源之旅(三) ------
  7. android学习笔记(八)
  8. 【Android】21.4 图片动画缩放示例
  9. Android控件(View)之TextView, Button, I
  10. Android:Activity(六):Fragment详解