var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2013年06月26日

    Android获取FPS

    分类:

    1.文件"plaform/frameworks/base/core/Java/android/view/ViewRootImpl.java"中编辑行

    “private static final boolean DEBUG_FPS = false;”该变量值为true

    2. ninepatchlab

    3. dumpsys SurfaceFlinger  调用见SurfaceFlinger.cpp

    4.Android 测量每秒帧数 Frames Per Second (FPS)

    此外,文章Android Performance Case Study举例说明如何利用Android官方自带工具调优。

  • 2013年06月22日

    给Android framework.jar打补丁

    分类:

    文章HowTo Decompile / Reverse Engineer Android APK列举了几乎所有Android反编译方法,这里举几个常用的:

    1.借助smali实现.smali->.dex,借助dex2jar实现.dex->.classjar文件),再借助jd-gui.class->java,此过程可参考.dex format to .jar format

    2.借助javac.exe实现java->.class,再借助Android里的dx.jar实现.class->.dex,再借助baksmali实现.dex->.smali(还可以实现.odex->.dex)/再借助Android里的aapt.exe实现.dex->.apk,借助dexopt-wrapper下载)实现.jar/.apk->.odex,最后给.odex文件加签名:busybox dd if=/system/framework/framework.odex of=framework.odex bs=1 count=20 skip=52 seek=52 conv=notrunc,具体参考文章Manually Deodex and Odex back

    【备注】文章Enabling HierarchyViewer on Rooted Android Devices使用了方法12和给生成的.odex文件添加系统签名(见Step 11 – Copy in the signature)给services.jar打补丁

    3.Apktool是最有效的apk反编译/编回工具,借助它实现.apk.smali+资源文件)

    文章AndroidID for gapps (patched framework.jar) 介绍了用*nix里的工具patchframework.jar打补丁的过程。

  • 2012年10月05日

    Android工具tcpdump和Nmap

    分类:

    Android上仍可用TCPDUMP抓包,但官网只提供源码下载,需要自行编译适合Android平台的版本。这里提供了如何编译能运行于Android ARM平台的tcpdump及其二进制文件,我在Ubuntu 12.04.1上测试成功。Tcpdump二进制文件安装及使用见文Debugging with tcpdump and other tools,其最终生成的数据包推荐使用Wireshark分析。

     

    Nmap是一款免费并且开源的网络发现和安全审查工具,同样它也有Android。使用时可使Android设备连接到一Wifi网络,然后在PC上用Nmap扫描该设备所有开放端口,检查是否有影响安全的开放端口。

    同样的商用产品有Nessus

  • 2012年07月25日

    更改Android 系统区域

    分类:

    CustomLocale(位于platform/development/apps/CustomLocale)里提供了设置Android区域的方法(不需重启系统):

    1.adb shell am broadcast -a com.android.intent.action.SET_LOCALE --es com.android.intent.extra.LOCALE en_US

    []黄色部分是你想设置的区域码

    2. 编程调用系统函数

    获取系统当前所支持的区域:getAssets().getLocales();

    IActivityManager am = ActivityManagerNative.getDefault();

    Configuration config = am.getConfiguration();

    Locale loc = null;

    ... //略去loc赋值

    config.locale = loc;

    config.userSetLocale = true;

    am.updateConfiguration(config);

    当然,这个生效需要两个权限:

     

    APK自适应系统区域改变,可参考文如何在程序中获取系统语言及修改Value-的语言Force Locale on Android

  • 2012年07月22日

    Ubuntu 12.04 配置 Android 开发环境

    分类:

    安装Java 6(可用OpenJDK替代):

    wget https://raw.github.com/flexiondotorg/oab-java6/master/oab-java6.sh -O oab-java.sh

    chmod +x oab-java.sh

    sudo ./oab-java.sh

    完成后,sudo aptitude search jdk显示“sun-java6-jdk

    sudo apt-get install sun-java6-jdk

     

    配置Java 6

    安装完成后,首先设置默认的java程序

    sudo update-alternatives --config java

    指定为java-6-sun

     

    为了编译Android Build,要求64位版本的UbuntuUbuntu 12.04上安装需要的包

    sudo apt-get install git-core gnupg flex bison gperf build-essential \

    zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \

    libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \

    libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \

    python-markdown libxml2-utils xsltproc zlib1g-dev:i386

    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

     

    设置Android系统可访问USB,先下载51-android.rules,然后操作即可。

     

    下载Linux版的Android SDK之后解压到一个路径,参照AndroidSDKUbuntu 下设置adb环境变量设置Android SDK环境变量:

    sudo gedit ~/.bashrc 编辑.bashrc文件,在里面加入

    #AndroidDev PATH

    export PATH=${PATH}:~/android-sdk-linux/tools

    export PATH=${PATH}:~/android-sdk-linux/platform-tools

    这样在终端输入android就可以使用Android SDKAVD Manager了。

     

    下载NDK,然后解压到一个路径,设置环境变量以便使用ndk-build程序:

    sudo gedit ~/.bashrc 编辑.bashrc文件,在里面加入

    export PATH=${PATH}:~/android-ndk-r8b

     

    下载Linux版的Eclipse,解压之后,安装插件CDTADT

    启动Eclipse,在菜单Preferences -> Android 里设置SDKNDK路径。