显示下一条  |  关闭

要有目标!

 
 
 
 
 
 

Android下编译自己的库文件jar并在应用中调用

2011-10-31 21:19:13 阅读251 评论0 312011/10 Oct31

主要为了解决如下问题:

项目中使用了Android未公开的API,在Eclipse下会有红叉显示。

不同的项目抽出相同部分的代码共用。

必需的前提条件:

需要有Android源代码,编译的库文件主要是封装未公开API或者共用代码。

工程1:Java库文件工程

该工程最终会生成以jar结尾的Java库文件,并会被安装到设备的以下目录:

/system/framework/

另外还会安装相关库文件的说明文件,使系统能够找到库文件:

/system/etc/permissions/

1、建立工程

在Eclipse下新建一个空的Java工程。

在工程的

Java Build Path -> Libraries

下,导入Android的SDK中的 android.jar 库。

为工程创建相应的包和java文件。

下面假设包路径为 com.mytest.lib,最终生成的库为 mylib.jar。

2、为工程添加注册文件

在库文件工程的根目录下创建以下文件:

<permission xml file name>.xml

该文件是用来向系统注册库用的,名称可以自己定,在下面假设该文件为 mylibxml.xml。

在文件中加入以下内容:

作者  | 2011-10-31 21:19:13 | 阅读(251) |评论(0) | 阅读全文>>

使用internal(com.android.internal)和hidden(@hide)APIs – Part 2

2011-10-31 21:09:47 阅读82 评论0 312011/10 Oct31

原文路径:http://devmaze.wordpress.com/2011/01/18/using-com-android-internal-part-2-hacking-around/

在上一篇中,我解释了为什么我们不通过反射就会很难使用internal和hidden API。这是因为android.jar中就没包含这些API,因此,没人能够在编译时引用这些类。

这篇文章将描述如何还原最初的android.jar。这将允许我们像使用公开的API那样使用internal和hidden API。

如何得到原版android.jar?

我们需要修改android.jar,这样它才能包含所有的*.class文件(包括internal和hidden API类)。有两种办法:

1) Android是一个开源工程。我们可以下载源码并搭建编译环境,这样它就不能移除那些internal和hidden的类了。这个办法比较困难;

2) 每个模拟器或真机在运行时都会有一个等同android.jar的东西。我们可以从这里拿到jar文件,提取出原始的.class文件,并拷贝到Android SDK的android.jar中。

我将采用方案2。它易于开始,还不需要搭建Linux环境及编译环境等。

作者  | 2011-10-31 21:09:47 | 阅读(82) |评论(0) | 阅读全文>>

glLoadIdentity()与glTranslatef()和glRotatef()--坐标变换

2011-10-26 0:49:30 阅读102 评论0 262011/10 Oct26

glLoadIdentity()

将当前的用户坐标系的原点移到了屏幕中心:类似于一个复位操作

1.X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从里至外。

2.OpenGL屏幕中心的坐标值是X和Y轴上的0.0f点。

3.中心左面的坐标值是负值,右面是正值。

   移向屏幕顶端是正值,移向屏幕底端是负值。

   移入屏幕深处是负值,移出屏幕则是正值。

glTranslatef(x, y, z)

沿着 X, Y 和 Z 轴移动。

注意在glTranslatef(x, y, z)中,当您移动的时候,您并不是相对屏幕中心移动,而是相对与当前所在的屏幕位置。其作用就是将你绘点坐标的原点在当前原点的基础上平移一个(x,y,z)向量。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////

glLoadIdentity();

glTranslatef(-1.5f,0.0f,-6.0f);

glBegin(GL_TRIANGLES);

glVertex3f(0.0f,0.0f, 0.0f);

glVertex3f(1.0f,0.0f, 0.0f);

glVertex3f(0.0f,1.0f, 0.0f);

作者  | 2011-10-26 0:49:30 | 阅读(102) |评论(0) | 阅读全文>>

JAVA NIO 简介

2011-10-26 0:43:23 阅读109 评论0 262011/10 Oct26

(转自:http://www.iteye.com/topic/834447)

1.   基本 概念

IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。

所有语言运行时系统提供执行 I/O 较高级别的工具。 (c 的 printf scanf,java 的面向对象封装 )

2.    Java 标准 io 回顾

Java 标准 IO 类库是 io 面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。 InputStream\OutputStream( 字节流 ) :一次传送一个字节。 Reader\Writer( 字符流 ) :一次一个字符。

3.    nio 简介

nio 是 java New IO 的简称,在 jdk1.4 里提供的新 api 。 Sun 官方标榜的特性如下:

–     为所有的原始类型提供 (Buffer) 缓存支持。

–     字符集编码解码解决方案。

–     Channel :一个新的原始 I/O 抽象。

–     支持锁和内存映射文件的文件访问接口。

作者  | 2011-10-26 0:43:23 | 阅读(109) |评论(0) | 阅读全文>>

android中c/c++程序的调试(转)

2011-10-6 21:13:27 阅读83 评论0 62011/10 Oct6

1.          使用gdbserver调试

使用JDWP只能调试java层面的程序,如果想调试C层面的代码,需要使用gdbserver方式,gdbserver的服务端和客户端都包含在android的源码中。

server端是out/target/product/xxxxxx/system/bin/gdbserver。

client端是prebuild/linux-x86/toolchain/xxxxxx/bin/arm-eabi-gdb),不需另外安装。

(请看完本文再开始调试,尤其是“注意”部分)

本文依据张博的调试文档, 加以扩充说明,感谢原创者。

2.          调试前的准备:编译DEBUG版本的程序和库

1)         新建(或修改)ANDROID源码根目录的buildspec.mk,加入以下内容

DEBUG_MODULE_lidvm:=true  # 虚拟机模块设为debug

TARGET_CUSTOM_DEBUG_CFLAGS:=-O0 -mlong-calls

(请修改具体模块名,我调试的是虚拟机的libdvm.so库)

作者  | 2011-10-6 21:13:27 | 阅读(83) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 

广东省 深圳市 天蝎座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 
 
 
心情随笔列表加载中...
 
 
 
 
 

发现好博客

 
 
列表加载中...
 
 
 
 
 
 
 
圈子列表加载中...
 
 
 
 
 
 
 
日志评论
评论列表加载中...
 
 
 
 
 
 
 
博友列表加载中...
 
 
 
 
 
 我要留言
 
 
 
留言列表加载中...
 
 
 
 
 
 
 
列表加载中...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012

   
创建博客 登录  
 关注