解析apk包内容
解析 apk 包内容
#移动开发 #Android
1.说明
写应用程序,很多时候遇到问题想看看别人的应用是怎么实现的,又苦于没有源码,apk
是 zip 压缩格式,而解压后 xml
是加密格式,也看不到源码。下面介绍用 google 官方发布的 apktool
工具来解开 apk 包,从而得到正常显示的 xml
文件和文本格式的程序,虽然不是 java 程序,但能看出逻辑。
2.方法
下载工具
[http://code.google.com/p/android-apktool/downloads/
](http://code.google.com/p/android-apktool/downloads/)
或者
http://u.115.com/file/f12d8136c3
需要下载 apktool2.3.2.tar.bz2 和
apktool-install-linux-2.2_r01-1.tar.bz2,前面的是
jar 包,后面的是调用它的平台相关的脚本
将它们解压在同一目录下
当 java 切换成 1.6 版本
运行
apktool–d apk 名 目录名
即可将信息 ...
简单的android中C库调试方法
简单的 android 中 C
库调试方法
1.说明
android 系统中调试 Java 非常容易,一般遇到错误都在 logcat
中打印出错时函数的调用关系,而 C
库中出错时只看到一些二进制信息,使用 gdbserver
调试环境搭建又比较复杂。下在介绍一个简单的调试库的方法,当然需要有 so
库的源代码
2.举例
错误信息如下,它表示了出错时的函数调用关系(下面调上面的) I/DEBUG
(56): #03 pc 000008d8 /system/lib/libstdc++.so
I/DEBUG (56): #04 pc 00003090 /system/lib/libttssynthproxy.so
I/DEBUG (56): #05 pc 0001c174
/data/data/com.xytts/lib/libttsxyttsengine.so
I/DEBUG (56): #10 pc 0000285c /system/lib/libttssynthproxy.so
I/DEBUG (56): #11 pc 00016e34 /system/lib/libdvm.so ...
编译在N1(G5,Passion)上运行的姜饼(GingerBread,Android2
编译在
N1(G5, Passion) 上运行的姜饼(GingerBread,Android 2.3)代码
(转载请注明出处: [http://blog.csdn.net/xieyan0811
](http://blog.csdn.net/xieyan0811))
1. 修改效果
在 32 位系统上正常编译通过,N1 上能运行,带 root 权限
带 N1 原始的四色 X 开机动画,默认语言为简体中文
带 google
market,文件管理器,百度中文手写输入法,金山词霸等常用软件
打电话,收发短信,WIFI,移动网络,热点上网正常(APN
已设)
音频,视频,照像,摄像,Gps,Sensor 使用正常
目前未测到不正常的功能
2. 下载 android 2.2 或 2.3 的 sdk
刷机使用的 fastboot 和 adb 都需要从 sdk 中获得
3. 对 N1 的处理
Bootloader 解锁
关机后,按 Power+ 音量减开机,按音量键选 fastboot,然后按 Power
进入
在 PC 端运行解锁命令如下(fastboot 命令可从 SDK/tools
...
调试lib库的一些小技巧
调试 lib 库的一些小技巧
#编程语言/JNI #编程语言/C
1. lib 库中打印 log 信息
在文件头部加
1234567** #define LOG_TAG “testme” #undef LOG // ** ** 有的版本需要这句,有的版本不需要 ** ** #include <utils/Log.h> ** 在程序中用 ** LOGE(“log is xxxxx”); ** 在编 lib 库的 Android.mk 中加 ** LOCAL_SHARED_LIBRARIES:=libutils **
2. lib 库中 jni 用 c++
在每个函数前头加,以免提示找不到函数名
123** #ifdef __cplusplus extern “C” #endif **
androidfota升级
android fota 升级
1. 简介
fota(Firmware Over The Air),移动终端空中下载软件升级技术。
原理是根据算法把新旧版本之间的差别做成一个软件包,手机从服务器上下载到手机里,由手机完成软件版本的升级
2. 用户操作
设置-> 关于手机-> 检查更新,检查是否有更新版本。
可以使用默认设置自动更新:设置-> 关于手机->
自动系统检查
3. 升级过程
MT710 的 FOTA 由中国移动服务器发起,服务器发送 FOTA
信息到手机,手机收到信息并确认后,手机将自动上网下载升级包,下载后,手机将重启完成软件的更新。用户需要按照手机的提示,确认下载和
安装
即可,不需要其他操作,也不需要对手机进行特殊设置。下载中断时手机会自动续接,直到下载完毕。在手机
FOTA
过程中,需要保持手机在网络良好的连接状态,电池电量充足。
4. Fota 的相关源码
升级界面
package/app/Fota/*
系统层
system/core/fota/*
底层库支持
external/fotalib/*
fota 分区
因为像 boot.im ...
典型应用之——将库打进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. 获取当前 ...