Android
文章平均质量分 58
quaful
这个作者很懒,什么都没留下…
展开
-
用 Android NDK 开发 Native 应用程序(一)
编译 Native App1. 安装 Android NDK,不必赘述。假定我们安装到了 /Developer/android-ndk-r4b/.2. 在工作目录下建立一个 jni 目录。如果要使用 NDK 自带的 Android.mk,必须叫做这个名字,否则 make 的时候会找不到文件,错误提示可能类似下面:Android NDK: Could not find application project directory ! Android NDK: Please define the原创 2010-12-02 17:10:00 · 21783 阅读 · 0 评论 -
Android 4.0 对通知栏图标的尺寸有要求
某应用,之前在各版本的 Android 系统上运行良好,最近测试部门在 Android 4.0 兼容性测试中,发现该应用在通知栏显示图标时,图标显示不全。经检查发现,创建通知栏图标时:Notification nf = new Notification(R.drawable.notify_icon, "", System.currentTimeMillis());图片资源 noti原创 2011-11-24 11:33:32 · 12837 阅读 · 1 评论 -
用 managedQuery() 时需要注意的一个陷阱
Activity 里面提供了一个 managedQuery() 方法,按照 Android SDK 里面的说明,“the activity will manage its lifecycle for you.” 听起来很好,Activity 可以替你管理 Cursor 的生命周期了,就不用记着去 close() 了,代码可以更简洁。但是 Activity 是怎么去管理 Cursor 的生命周期原创 2011-11-16 14:13:08 · 9374 阅读 · 1 评论 -
Android 原生系统给电信发短信出现乱码或者收不到的原因
网上说的方法是修改/system/framework/framework.odex文件,找9a13040b,改为9a130408。方法是没错,不过原理没说清楚。其实问题是出在 framework/base/telephony/java/com/android/inte原创 2011-10-18 19:22:57 · 7879 阅读 · 4 评论 -
Android monkey test 脚本的编写
Android 的 monkey test 工具提供了 -f scriptfile 参数,可以指定 test 脚本,然而翻遍了 Android 的网站也没有找到这个脚本的文档,最终只在 monkey 的源码 MonkeySourceScript.java 中找到了一小段注释,里面原创 2011-10-11 20:15:54 · 20094 阅读 · 2 评论 -
Android 中用 tcpdump 调试网络程序
<br />Android 默认没有 tcpdump,从网上下一个其它人 port 的版本就可以了,这个很容易 google 到,我就不再赘述了。也可以自己从 http://www.tcpdump.org 下载源码编译。NDK r5 之后直接用 toolchain 编译就行。<br /> <br />如果我们用 tcpdump 来调试 http 程序,可以这么写:<br /> <br />tcpdump -p -nnn -vvv -s 0 -w /sdcard/1.pcap port 80 and tcp<原创 2011-03-25 20:03:00 · 2896 阅读 · 1 评论 -
NDK r5 Toolchain 简单测试
<br />NDK r5 带的 toolchain 终于可以支持 makefile 的编译系统了。不过为了让它支持 GNU libc++ 还颇费了一番功夫,文档实在太缺乏了。下面是一个简单的试成功了的 case:<br /> <br />首先我们写一个简单的 C++ 程序,这里命名为 test.cpp,里面用到了 iostream, vector, typeid,libc++ 的基本特性都包含在里面了:<br />#include <vector>#include <iostream>#includ原创 2010-12-28 17:11:00 · 3348 阅读 · 3 评论 -
NDK r5 支持 RTTI 了
<br />在 NDK r5 的 sources/cxx-stl/gnu-libstdc++/README 文件里,写着:<br />To use it, define APP_STL to 'gnustl_static' in your Application.mk.See docs/CPLUSPLUS-SUPPORT.html for more details.This implementation fully supports C++ exceptions and RTTI.<br />也原创 2010-12-28 16:57:00 · 6391 阅读 · 2 评论 -
Android App 如何动态加载类
<br />在 Java 里面,我们可以把一些类放到 .jar 文件里面,然后用 ClassLoader 动态加载。例如:<br />URLClassLoader ucl = URLClassLoader.newInstance(new URL[]{new URL("file:/sdcard/files/test.jar")});Class clazz = ucl.loadClass("com.test.TestClass"); <br />但是在 Android 上面,情况有所不同。<br />原创 2010-12-24 19:38:00 · 28645 阅读 · 16 评论 -
开发 Standalone Android Java 应用程序
<br />一般来说,我们开发的 Android 应用程序都是基于 Activity 的,由 Android 系统来管理程序的生命周期;但是,有的时候,我们也想自己来控制程序的流程。例如,如果只是开发一个类似 /system/bin/pm 那样的 console 应用程序,用 Activity 就不合适了。这里我称这种自行控制流程的程序为 Standalone 的 Android 程序。<br /> <br />开发的方法和开发普通的 Java 应用程序并没有太大区别。例如,我们以 Java 的 Hello原创 2010-12-23 18:37:00 · 6193 阅读 · 2 评论 -
Android Native 应用程序启动 Activity 的方法
<br />调用 /system/bin/am.<br /> <br />用法:<br />usage: am [subcommand] [options]<br /><br /> start an Activity: am start [-D] [-W] <INTENT><br /> -D: enable debugging<br /> -W: wait for launch to complete<br /><br /> start a Servi原创 2010-12-17 10:21:00 · 3135 阅读 · 0 评论 -
Android HotPatch
如果要 patch 掉系统的一些服务,例如 installd, ps 之类,可以直接把 /system/bin/ 目录下的文件直接重命名,然后把 patch 的新文件用原来的名字保存到这个目录下,重启手机后生效。但是直接写文件是不行的,会遇到 Read-only file system 的错误,所以要 remount,命令行是mount -o remount rw /system/注意在 Android Emulator 下面的话重启之后就还原了,只能在真机上这么做。原创 2010-12-09 13:42:00 · 3808 阅读 · 1 评论 -
Android APK 是怎么安装的?
<br />http://justanapplication.wordpress.com/2009/08/22/a-standalone-android-runtime-application-installation/<br /> <br />It turns out that an application can be installed, such that it can subsequently be run, simply by placing the package containing转载 2010-12-08 18:34:00 · 1637 阅读 · 0 评论 -
用 Android NDK 开发 Native 应用程序(二)
调试1. 首先把要调试的程序上传到模拟器中。假定我们用 adb push hello /data/hello 将程序传到了模拟器的 /data 目录。注意确认 hello 有可执行权限。2. 在模拟器上运行 gdbserver : hello,启动调试。其中 port 是 gdbserver 在手机上监听的端口号,注意和后面我们用 gdb 连接的端口可能不是同一个。运行结果可能是:# gdbserver :6789 helloProcess hello created; pid = 277Liste原创 2010-12-02 17:34:00 · 3753 阅读 · 0 评论 -
在 Android Emulator 中开发 LKM 程序
在 Android Emulator 里面用 insmod 安装 LKM 时,会报告错误,例如:# insmod hello.koinsmod: init_module 'hello.ko' failed (Function not implemented)这是因为 Android SDK 里面自带的 Emulator 所用的 kernel 关闭了加载 LKM 的功能。要在 Emulator 里面开发和调试 LKM,必须自己重新编译 kernel. 编译方法可以参考 http://linuxclue原创 2010-12-03 19:53:00 · 8988 阅读 · 0 评论 -
谈谈熟悉在GUI界面下编译代码的同学怎么快速入门Android Studio
本文面向原来熟悉在GUI界面(例如VisualStudio)下编译代码的同学。Visual Studio确实是一个傻瓜式的开发环境,像Visual C++,在Visual Studio里把C/C++代码写好,点一下“运行”按钮,就可以把程序运行起来了。对比Linux里传统的开发模式,不仅要写C/C++代码,还要写makefile。Android Studio其实也是继承了这种思想,开发Android应用(以下都简称App),不仅要写Java代码,还要写编译Java代码的代码,也就是说,编译过程本身也是执行一原创 2017-11-01 12:56:29 · 1794 阅读 · 0 评论