03 Orangepi H3 Android adb调试及Android.mk用法

版权声明:本文为博主原创文章,未经博主允许转载。 https://blog.csdn.net/jklinux/article/details/79669444

当板子进入Android系统后,让板子上的otg接口作设备使用:

echo "2" > /sys/devices/platform/sunxi_usb_udc/otg_role

用usb线连接板子和pc后, 在pc的终端上用lsusb命令查看是否有设备接入, 正常情况下应用下面信息:

Bus 001 Device 012: ID 1f3a:1007 Onda (unverified)

adb命令工具在Android源码目录有提供,只需”source ./build/envsetup.sh”设置环境变量后就可以使用.

adb devices //查看可调试的Android设备,正常应有如下信息:

List of devices attached 
20080411    device

adb的常用功能:

adb shell  可登录调试设备的终端  "adb -s 设备名 shell"可指定登录设备
     exit命令可退出

adb install test.apk  -r 覆盖安装,保留数据和缓存文件  -d 解决低版本version问题  -s 安装apk到sd卡

adb uninstall -k <package_name> 可选参数-k的作用为卸载软件但是保留配置和缓存文件

adb shell am start -n <package_name>/.<activity_class_name> 启动activity

adb shell dumpsys window | grep Surface 查看分辨率

adb shell getprop | grep version  查看Android系统版本

adb shell getprop | grep product  查看Android系统型号

adb shell cat data/misc/wifi/*.conf 查看wifi密码

adb push <local>...<remote> 从pc把文件推送到设备

adb pull [-a] <remote>...<local> 从设备拉取pc上的文件

使用adb启动已安装好的应用
   adb shell dumpsys package > ~/list.txt     //先输出所有应用的信息到list.txt文件里
   然后在list.txt里搜应用名称,如camclient, 则找到带有".activity"项:
       41bd27d8 com.example.camclient/.MainActivity filter 41b87508
   则, "com.example.camclient/.MainActivity"就是所需要的内容
   启动:  adb shell am start com.example.camclient/.MainActivity


通过”adb push …”命令可以把应用程序和驱动模块传输到板子上。

注意: 应用程序可用静态编译的方式避免缺库的问题.
驱动模块与在Linux文件系统上的操作是完全一样的.



其实在Android系统里已带有应用程序所用的动态库,如需编译出使用系统动态库的应用程序,就需编写Android.mk并使用Android源码里的工具来编译:

如/disk3/myapp.c, 内容:


#include <stdio.h>

int main(void)
{
    printf("what\n");
    return 0;
}

Android.mk内容:


LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := myapp.c
LOCAL_MODULE := myapp
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_PATH :=$(TARGET_OUT)
include $(BUILD_EXECUTABLE)

其中每个Android.mk文件都是以LOCAL_PATH变量开头的, “call my-dir”用于获取当前Android.mk的路径
“include $(CLEAR_VARS)” 用于清除LOCAL_PATH以外的所有变量
LOCAL_SRC_FILES 用于指定源文件名
LOCAL_MODULE用于指定目标名,扩展名不用写。如目标是一个动态库,会自动加上.so后缀.
LOCAL_MODULE_TAGS表示编译的模式。otional是表示什么模式下都编译。

LOCAL_MODULE_PATH表示编译生成的目标所在路径.
TARGET_OUT表示目标生成在out/target/product/generic/system
TARGET_ROOT_OUT表示目标生成在out/target/product/generic/root
TARGET_OUT_DATA表示目标生成在out/target/product/generic/data

“include $(BUILD_EXECUTABLE)” 表示要编译出可执行文件
BUILD_STATIC_LIBRARY 表示编译出静态库。
BUILD_SHARED_LIBRARY 表示编译出动态库


编译前,需要到android源码目录下:

source ./build/envsetup.sh    //让编译环境变量生效
lunch dolphin_fvd_p1-eng      //指定编译平台目标

mmm   /disk3/
//编译完成后会自动生成在out/target/product/dolphin-fvd-p1/system/bin/myapp
//重新打包成镜像或者通过adb push到板上就可以直接执行了

猜你喜欢

转载自blog.csdn.net/jklinux/article/details/79669444