分类目录归档:Android

Android: 下载、编译android-n-preview-1

没想到google这么早就将android-n-preview-1的代码释放出来了,就乘机下载下来编译看看。 环境: 在ubuntu-14.04 x86_64系统。 下载代码: $ mkdir -pv /local/n-preview-1 && cd /local/n-preview-1 $ repo init -u https://android.googlesource.com/platform/manifest -b android-n-preview-1 $ repo sync 编译: $ . build/envsetup.sh $ lunch aosp_x86-eng … 继续阅读Android: 下载、编译android-n-preview-1

Android: VpnService与badvpn – tun2socks & udpgw

Android SDK提供了android.net.VpnService类,使得我们可以很方便地实现自定义的VPN客户端解决方案。一般来说,VpnService用来创建一个虚拟网络接口,配置接口的IP地址,路由规则。在建立VPN客户端之后,应用程序会取得一个文件描述符,从这个文件描述符中可以 读取由这个虚拟网络接口转发过来的数据包(retrieves an outging packet), 同时也可以往这个文件描述符中写入数据包(injects an incoming packet) 。由于接口(tun0)运行在Internet Protocol(IP)层,所以每个数据包都是以IP头开始的。 … 继续阅读Android: VpnService与badvpn – tun2socks & udpgw

Android: 使用oatdump反编译oat文件

网上经常看到有通过apktool将apk中的dex反编译成smali格式的文件,以便分析功能实现与破—解,确没怎么看到oat文件反通过oatdump反编译的,所以就写了一篇这样的文档。声明一下oat文件也是可以反编译的。本来想着通过oatdump处理之后,既可以看到dex代码又可以看到相应的汇编实现。反编译之后发现其实不然,难道是因为系统是eng版本的原因,有机会再验证看看。 先看一下这两个代码片段 1. JNI代码: jni/com_android_hello_HelloActivity.cpp #include <jni.h> #include <JNIHelp.h&gt … 继续阅读Android: 使用oatdump反编译oat文件

Android: 使用gdb debug native进程

之前写过关于如何用gdb debug brillo系统中native进程的方法->@<-。Brillo系统的版本号如果按照android官网的说法,属于M之上的系统,使用的是python脚本,而android-5.1.1_15使用的是shell脚本。进行debug时所使用的命令也稍有些不同。 设置debug环境 在设置好编译环境之后,我们就可以通过gdbclient命令进行调试了。需要注意的是调试设备所运行的系统必须是当然编译环境编译出来的系统image,因为调试native进程时需要用到symbol文件,而symbol文件在${OUT}/symbols目录下。如果我们调试的是m_ … 继续阅读Android: 使用gdb debug native进程

Android: 编译与emulator相同版本号的kernel – zImage

Android emulator所使用的kernel都是预先编译好的,存放在prebuilts/qemu-kernel/arm/kernel-qemu-armv7。如果需要做kernel方面的开发,如添加新的驱动,使用upstream的kernel等。必竟在emulator中开发要比在开发板上要方便很多。 重新编译kernel时,我们需要有kernel的代码,版本号以及配置文件: 代码可以从这里下载: git clone https://android.googlesource.com/kernel/goldfish 版本号怎么获取到呢?我们可以看到在android.googlesource. … 继续阅读Android: 编译与emulator相同版本号的kernel – zImage