tools

-> adb控制多个设备
$ adb devices
$ adb -s 33304728528D00EC shell

-> sqlite3
$ sqlite3 LIHGHT.db
sqlite> select * from light_table;
34 | PID: 56
40 | PID: 61
sqlite> insert into lights_table values(42, "PID: 90");

-> 使用dmtracedump和traceview
程序里添加 Debug.startMethodTracing("test");  Debug.stopMethodTracing();
编译通过生成 /sdcard/test.trace
$ adb pull /sdcard/test.trace .
$ sudo apt-get install graphviz
$ dmtracedump test.trace
$ traceview test.trace

-> 使用Monkey 压力测试
$ adb shell 
# monkey -p com.android.camera -v 500

-> 数字证书签名apk
1. 使用keytool生成自签名证书
2. 使用jarsigner工具签名.apk文件
3. 使用zipalign对其应用程序

-> 安装Busybox
下载 http://www.busybox.net/downloads/binaries/1.18.4/
# adb push busybox /system/xbin
# cd /system/xbin
# chmod 755 busybox
# busybox --install
# mount -o remount,rw system system
-> 使用Android Toolbox
# service list
# getprop ro.secure

-> 交叉编译环境
$ cd kernel/
$ vim Makefile
ARCH?=arm
CROSS_COMPILE?=.../toolchain/arm-eabi-4.41/bin/arm-eabi-
$ ls arch/arm/configs
$ make ***_defconfig
$ make menuconfig

-> 安装minicom
$ sudo apt-get install minicom
$ mknod /dev/ttyUSB0 c 188 0
$ minicom
ctrl+A O Serial port setup
  
-> 安装Samba
$ sudo apt-get install samba
$ sudo vim /etc/samba/smb.conf
[Work]
path=/home/...
guest_ok=yes
create_mask=0777
writeable=yes
$ /etc/init.d/samba restart
$ ifconfig 192,168.233.136
Windows映射磁盘驱动 z: \\192.168.233.136\Work

->添加环境变量
$ cp .../out/host/linux-x86/bin/ usr/bin/mydir
$ vim ~/bash.rc 
$ sudo vim /etc/profile
export PATH=$PATH:/usr/bin/mydir/bin

-> 用Dex2jar和JD-GUI反编译apk
1) camera.apk改名为camera.zip
2) 解压camera.zip提取class.dex
3) 用Dex2jar将class.dex转换为classes_dex2jar.jar
4) 把jar包拖入JD-GUI

->  Java 混淆
根目录下project.properties里加一行
proguard.config=proguard.cfg

-> 独立JAR包
生成方法:eclipse右键项目,选择Export,JAR file,不勾选res文件夹和AndroidManifest.xml
加载方法:先把JAR包拷贝到/libs下,再右键项目,选择Build Path -> Add External Archives

理论篇
-> 公钥私钥
通过算法生成一对非对称的公钥和私钥,私钥编码,公钥解密。
公钥可以让每个人都知道,它是apk的数字签名。
可以使用PKI(Public Key Infrastructure)签名程序包。

-> 安装apk原理
src=>.jar=>.class=>class.dex=>.apk
/system/app/下存放系统应用程序,系统启动时会自行安装。
安装时.apk暂存于/data/app/,安装生成.dex于/data/dalvik-cache/,生成程序包于/data/data/下

-> init进程
1) 解析init.rc (一般都在这里修改设备权限)
2) 创建Zygote
3) 初始化property (系统提供/default.prop, /system/build.prop, /system/default.prop, /data/local,prop)
4) 进入循环,监听事件

-> Zygote
1) App_main.cpp
2) AndroidRuntime.cpp (创建虚拟机, 注册JNI函数, 由JNI调用JAVA, 进入JAVA世界)
3) ZygoteInit.java (建立IPC通信, 预加载类和资源, 启动system_server, 循环等待)

-> SystemServer
1) init1 (system_init.cpp)
2) init2 (SystemServer.java)

-> Camera系统
Application=>Camera API=>JNI=>native client<==binder==>native camera service=>camera HAL=>kernel(V4L2=>camera sensor driver)
Camera.apk=>core.jar=>libandroid_runtime.so=>libcamera_client.so<==binder==>libcamera_service.so=>libcamera.so

->  关于handler
1) 应用程序主线程里新建一个默认handler,实质上将handler绑定在主线程上。
private Handler mHandler = new MainHandler(); 括号里无值代表默认looper为主线程,
MainHandler继承Handler,handleMesasage()处理消息。
2) 如果想把handler绑定在另外的线程上而不在主线程上,须设置Looper.
HandlerThread handlerThread = new HandlerThread("another_thread");
MyHandler myHandler = new MyHandler(handlerThread.getLooper());
MyHandler继承Handler,handleMesasage()处理消息。
3) 将线程r加入工作队列MessageQueue,MessageQueue对应Looper和Handler,该线程r与Handler在同一线程
handler.post(r);
Thread r = new Thread(){ ... }

-> root原理

->  Android 框架


实践篇
-> NDK开发
目的:相比JAVA 
1)不容易被反编译 
2)运行速度快,效率高
示例:
1) /src/com/android/test/MainActivity.java: 
public native String idFromJNI();
2) /jni/native.c: 
jstring Java_com_android_test_MainActivity_idFromJNI( JNIEnv* env, jobject thiz )
3) 运行脚本编译生成 /libs/armembi/libnative.so

-> USB转串口通信
App: fd = open("'/dev/ttyACM0', O_RDWR"); read(); write();
Kernel: fd=>VFS=>Char FS=>USB driver(USBD)=>USB core=>USB Host(HCD)
Hardware: HCD=>hardware serial device

-> 智能家居系统
第一周:启动多个Activity,移植扫描头程序 (Zxing精简版)
 UI布局 (xml, res, layout, toast, listView, imageButton, gridView, slideDrawing...)
第二周:  数据库 管理Sqlite,使用intent传递数据,HandleMessage, AsynTask, SharedPreference, 静态变量...
第三周: socket网络通信 (UDP, JSON),添加UI场景控制

-> 网络安防接警系统
handler研究,UI更新滚动条和toast,九宫格解锁与登录逻辑,
封装utils功能类(网络传输,开关,九宫格),
协议设计,解析复杂的JSONArray,多线程同步与并发,
滑动开关布局与显示,轮训更新,布撤防控制
中英文版本设置,Action Bar,优化界面与修改策略,解决Bug

-> NFC刷门禁
-> 蓝牙BLE
-> 移动支付
-> 音频转红外

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值