基本概念:
adb:android debug bridge,调试桥。
准备工作:
先写一段c语言代码,再把c语言的二进制文件下载到android设备中去,然后在ubuntu终端中直接运行设备中c程序。
使用vi写c代码(vi + test.c),顺便实现一个简单的功能:
#incude <srdio,h>
void main()
{
printf("Hello ADB!\r\n");
}
保存退出。
使用交叉编译工具编译这段代码:
# arm-none-linux-gnueabi-gcc test.c -o aaa -static
注:交叉编译工具要安装好并配置好环境变量,后面的static是必须的,android平台不支持动态编译c代码。
编译之后使用ls命令查看,发现当前目录下多了个aaa可执行性文件,试着用./aaa执行它,发现报错:bash: ./aaa:无法执行二进制文件
把aaa下载到android设备当中:
执行
adb devices命令(判断设备是否连接且被pc识别)
得到:
List of devices attached
0123456789ABCDEF device
说明设备连接正常,执行下一步操作,把aaa下载到android设备中:
adb push aaa /data/data
终端返回:
505 KB/s (650730 bytes in 1.256s)
说明下载成功。
进入shell:
adb shell
进入shell后,输入下ls命令,发现android设备的文件列表:
anr backup dontpanic misc secure
app dalvik-cache local ppp system
app-private data lost+found property tombstones
直接执行cd /data/data命令,用ls查看文件
# cd data
# ls
aaa com.android.phone
android.serialport.sample com.android.providers.applications
android.tts com.android.providers.calendar
com.android.bluetooth com.android.providers.contacts
com.android.browser com.android.providers.downloads
com.android.calculator2 com.android.providers.downloads.ui
com.android.calendar com.android.providers.drm
com.android.camera com.android.providers.media
com.android.certinstaller com.android.providers.settings
com.android.contacts com.android.providers.subscribedfeeds
com.android.defcontainer com.android.providers.telephony
com.android.deskclock com.android.providers.userdictionary
com.android.email com.android.provision
com.android.globaltime com.android.quicksearchbox
com.android.helloapk com.android.server.vpn
com.android.htmlviewer com.android.settings
com.android.inputmethod.latin com.android.systemui
com.android.launcher com.android.term
com.android.led com.android.wallpaper
com.android.magicsmoke com.android.wallpaper.livepicker
com.android.music com.cooliris.media
com.android.musicvis com.example.android.apis
com.android.packageinstaller com.svox.pico
发现aaa已经下载到android设备,执行它:
./aaa
熟悉hello ADB!再现。大功告成!
最后,收下尾,退出shell:
exit