典型应用之——将库打进apk
典型应用之——将库打进 apk
1. 介绍
应用程序时常需要调用 C 库,并通过 apk 包安装到系统当中。我们可以通过 NDK
来安装库,如果你有源代码开发环境,可以通过
Android.mk 脚本很简单地将 java 程序和 c
库放在一个项目中编译和安装。
2. 原理
利用在 Android.mk 中加 LOCAL_JNI_SHARED_LIBRARIES 指定安装库
3. 例程
功能
将加法用 c 语言实现,并编成 so 库,在 Java 层通过 JNI
方式调用它,并将界面和库打成一个 apk 包安装
可从此处下载可独立运行的代码
[http://download.csdn.net/source/2841528
](http://download.csdn.net/source/2841528)
核心代码及说明
java 程序
123456789101112131415161718192021222324package com.android.mylib; import android.app.Activity; import android.os.Bun ...
典型应用之——将数据打进apk
典型应用之——将数据打进 apk
1. 介绍
需要安装一些资源到系统中,比如多媒体文件,配置文件或者某种数据文件,可以把它打包放在资源
raw 目录中,然后在程序中读取解包,并安装在指定目录下
2. android 框架对多媒体的支持
apk 包中的数据一般都放在 res/raw 目录下,只有它的拥有者能通过
openRawResourceFd 的方式访问,如果不在 java
层访问,或者要将其安装在其它位置,就需要在 java
程序中对其进行处理
3. 例程
功能
把多媒体及数据文件打在 zip 包放在 res/raw 下,并将其打在安装包 apk
中,在程序中点击按钮时将其安装在指定目录下
可从此处下载可独立运行的代码
[http://download.csdn.net/source/2841538
](http://download.csdn.net/source/2841538)
核心代码及说明
** package com.android.mydata;
import android.app.Activity;
import android.os.Bundle;
im ...
android对文件的MD5验证
android 对文件的 MD5 验证
1. 说明
android 自带的 MD5 校验类
2. 例程
功能
对文件 /init.rc 做 MD5 计算,并以字串的方式显示
可从此处下载可独立运行的代码
[http://download.csdn.net/source/2660824
](http://download.csdn.net/source/2660824)
使用 linux 命令得到 MD5 值
** $ md5sum init.rc **
核心代码及说明
** import java.security.MessageDigest;
import java.io.FileInputStream;
import java.io.InputStream;
public class MD5 {
private static final char HEX_DIGITS[] = { '0', '1', '2', '3', '4', '5',
'6',
'7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
public static vo ...
android的KeyGuard
android 的 KeyGuard
#移动开发 #Android
1. 什么是 keyguard
keyguard 译为键盘守卫, 用于保护手机, 包含锁屏, 图案解锁等
2. 核心代码
frameworks/policies/base/phone/com/android/internal/policy/impl/*
android调试技术补充
android 调试技术补充
1. 看编译信息
显示编译打包命令的具体参数,以下命令看编译详情
** $ make showcommands **
2. 源码中重编应用软件
** $ cd packages/apps/xxx
$ touch find ** ** 更新全部代码 ** **
$ mm **
注意:mm clean 是 clean
所有源码,不止本目录之后的,千万注意不要误操作
3. 查看当前的 dump 信息
** $ adb shell dumpstate > xxx.msg **
4. SDK 与手机版本不一致问题的解决
注意要用与硬件对应的 eclipse 插件和 sdk,否则可能会报很多奇怪的错误。
如果在源码中编译,而被安装的手机与源码不在是同一版本,可能出现如下问题
adb install 时报错
Failure [INSTALL_FAILED_OLDER_SDK]
此时只需改动 AndroidManifest.xml,加入最低版本号
** **
3 对应 SDK1.5
注意:如果是不同版本 API 接口不一致引起的问题,此方法不能解决
5. 获取当前 ...
解决eclipse无法识别某些API的问题
解决 eclipse 无法识别某些
API 的问题
#移动开发 #Android
1. 问题分析
有些与系统关系紧密的应用程序,使用 eclipse 开发的时候,会出现”cannot be
resolved to a type”
之类的提示,以至于无法正常编译调试。其原因 eclipse 中所能识别的
android api 只是本地 Android SDK 目录中
android.jar 中打包的内容,如 android-
sdk_eng.root_linux-x86/platforms/android-1.6/android.jar,可使用增加
android.jar
中缺少的 api 的方法解决此问题。
2. 解决方法
首先要下载 SDK 相应的 android 源码,因为只有在源码中才有这些 api
的实现
然后按以下方法把你所需要的 api 打进 android.jar 之中
_ $ mkdir android-full
$ cd android-full
$ jar -xvf
$ANDROID_SRC_DIR/out/target/common/obj/JAVA_LIB ...
数据分析软件SPSS及数据挖掘软件WEKA使用
数据分析软件 SPSS
及数据挖掘软件 WEKA 使用
#数据分析
1. 说明
从数据表中读入数据,用 SPSS 进行数据处理,然后用 WEKA 进行数据分析。
2. EXCEL
目的
用 java 将其它数据写入 EXCEL
读写 excel 的 jar 包 jexcelapi 从此处下载
[http://www.andykhan.com/jexcelapi/download.html
](http://www.andykhan.com/jexcelapi/download.html)
java 读写 excel 例程示例
http://www.javaeye.com/topic/55844
[http://mengqingyu.javaeye.com/blog/440358
](http://mengqingyu.javaeye.com/blog/440358)
3. 数据分析软件 SPSS(占据 90% 市场分额)
目的
整理数据,分析数据,结果展示
读入数据
方法一:从 excel 中复制单元格,粘贴在 SPSS 中
直接打开 excel 文件 (*.xls),注 ...
Android使用XML-RPC实现blog客户端
Android 使用 XML-RPC 实现
blog 客户端
#移动开发 #Android
1. 原理介绍
XML-RPC 介绍
XML-RPC 的全称是 XML Remote Procedure Call,即 XML 远程方法调用。原理是
XML-RCP
工具把传入的参数组合成 XML, 然后用通过 http
协议发给服务器,服务器回复 XML 格式数据,再由工具解析给调用者。
Meta Weblog API
一些 Blog 提供 Meta Weblog API,用以支持通过 XML-RPC
的方法在软件中编辑及浏览 Blog。常用的 API
如下: 发布新文章 (metaWeblog.newPost)、获取分类
(metaWeblog.getCategories) 和最新文章
(metaWeblog.getRecentPosts)、新建文章分类
(wp.newCategory)、上传图片音频或视频
(metaWeblog. newMediaObject) 等。
2. Android 的 XML-RPC 支持
Android 本身并不支持 XML-RPC 协议, 需要下载相关 ...
android的intent使用方法
android 的 intent 使用方法
#移动开发 #Android
android 的 intent 使用方法
1. 说明
Android 中提供了 Intent 机制来协助应用间或者应用程序内部的交互与通讯。
Intent 的两种基本用法:一种是显式的 Intent,即在构造 Intent
对象时就指定接收者,这种方式与普通的函数调用类似;另一种是隐式的
Intent,即 Intent 的发送者在构造 Intent
对象时,并不知道接收者是谁,只是指出接收者的一些特性(比如说启动音乐播放软件)
2. 使用方法
启动服务
关键函数
context.startService() 或 context.bindService()
示例
** Intent i = new Intent(this, MyTestService.class);
this.startService(i); // ** ** 启动 ** ** service **
发送广播
关键函数
context.sendBroadcast()
发送方
** String msg = “test”;
Inten ...
AndroidPrelink实现的源码分析
Android Prelink
实现的源码分析
1. 原理简介
Prelink
Prelink
即预链接技术是利用事先链接以代替运行时链接的技术,以加快共享库的加载速度,它不仅能加快程序启动时间,还可以减少部分内存开销(它能使
KDE 的启动时间减少
50%)。每次程序执行时,进行的链接动作都是一样的,链接相对来说开销很大,尤其是嵌入式系统。
普通 Linux 系统的 Prelink
Redhat 系统中 prelink 工具 (/etc/cron.dialy/prelink)
会修改可执行程序,把它与所需库的链接信息加入可执行程序。在程序运行时,使用
glibc(glibc > 2.3.1-r2) 中的 ld-
linux.so
来进行链接。用此方式,每次更新动态库后,使用它的程序都需要重新
prelink,因为新库中的符号信息,地址等很可能与原来不同了。
Android 的 Prelink
Android 源码中有一组 map 文件,其中定义了需要预连接的动态库,其 Prelink
信息以及对应的逻辑地址(4G
地址空间中位置),在动态库编译时,预处理程序 apr ...