android驱动代码,GitHub - rumengsuifeng/AndroidDrivers: Android驱动的代码
1. 創(chuàng)建hardware目錄,在該目錄下創(chuàng)建HardCor.java文件(參考HelloWorldActivity.java文件)
2. 在build.gradle(app路徑)文件中添加指定so文件的目錄,so文件的源文件是C語言編寫的,可以放在任意一個目錄,它就是JNI文件
3. 如果工程里app目錄下沒有l(wèi)ibs目錄,那就自己在app目錄下創(chuàng)建一個libs目錄,然后創(chuàng)建armeabi目錄,把編譯出的so文件放入這個目錄里,這樣的做法是把庫編譯進(jìn)apk文件里。
4. 編譯.so文件的命令:arm-linux-gnueabi-gcc -I/usr/lib/jvm/java-7-openjdk-amd64/include/ -fPIC -shared -o libhardcor.so hardcor.c
以上的命令編譯出的.so文件在下載到開發(fā)板上,點擊屏幕上的按鍵以后會報錯:缺少libc.so.6文件,所以替換成如下命令:
arm-linux-gnueabi-gcc -fPIC -shared hardcor.c -o libhardcor.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/ -nostdlib /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so
該命令的-nostdlib選項意思是取消默認(rèn)的鏈接庫文件,后邊的路徑是指定自己要用的庫文件。在用以上命令編譯so文件的時候有個錯誤卡了好久:
“root@qihua-virtual-machine:/home/root/cqa64_android_v5.1/HAL# arm-linux-gnueabihf-gcc -I/usr/lib/jvm/java-7-openjdk-amd64/include/ -fPIC -shared -o libhardcor.so hardcor.c -nostdlib /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so
/home/root/cqa64_android_v5.1/HAL/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.1/../../../../arm-linux-gnueabihf/bin/ld: error: libhardcor.so uses VFP register arguments, /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so does not
/home/root/cqa64_android_v5.1/HAL/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.1/../../../../arm-linux-gnueabihf/bin/ld: failed to merge target specific data of file /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so
collect2: error: ld returned 1 exit status
root@qihua-virtual-machine:/home/root/cqa64_android_v5.1/HAL# ”
以上問題的解決辦法是換了個交叉編譯器好了,但是現(xiàn)在我也沒搞明白編譯so文件的編譯器和編譯Android源碼的編譯器有啥聯(lián)系,以上問題的帖子鏈接在:http://bbs.100ask.org/forum.php?mod=viewthread&tid=22161&page=1#pid79973
5. 編譯命令再次進(jìn)化:
arm-linux-gnueabi-gcc -fPIC -shared hardcor.c -o libhardcor.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/ -nostdlib /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so -I /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/include/ /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/liblog.so
因為代碼中使用了__android_log_print打印函數(shù)(該函數(shù)可以把調(diào)試信息打印在studio的logcat欄里)所以指定了頭文件,-I 參數(shù)指定log.h頭文件的路徑;后邊的目錄指定了liblog.so的路徑
總結(jié)
以上是生活随笔為你收集整理的android驱动代码,GitHub - rumengsuifeng/AndroidDrivers: Android驱动的代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 字符型转变为数值,php怎么把字
- 下一篇: Golang编程语言简介 go语言特点