让Android adb运行在ARM平台上

本文介绍了如何在Android系统的核心组件ADB中应用补丁,使其支持ARM作为主机,并允许adbd与主机ADB共存。通过复制Makefile并添加配置参数,避免了TCP端口冲突问题,使ADB能够在ARMLinux平台上作为主机使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对android/system/core中的adb打上如下补丁:

From e8853dc01a99fddd57b375c29489cd817ddebc2d Mon Sep 17 00:00:00 2001
From: Barry Song <21cnbao@gmail.com>
Date: Wed, 2 May 2012 09:57:02 +0800
Subject: [PATCH] adb: make adb support arm as the host and adbd/host co-exist

The Makefile is copied from https://gist.github.com/958335
with added DEFAULT_ADB_PORT=8888 to avoid the tcp port confliction
between adbd in client and cloned usb thread in host adb

adbd uses 5037 port, thread in host adb uses 8888

Signed-off-by: Barry Song <21cnbao@gmail.com>

Change-Id: I70f178230a78f84ad464479abc2bba1fe6d2c372
---
 adb/Makefile |   71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 adb/adb.h    |    2 +
 2 files changed, 73 insertions(+), 0 deletions(-)
 create mode 100644 adb/Makefile

diff --git a/adb/Makefile b/adb/Makefile
new file mode 100644
index 0000000..d5317ee
--- /dev/null
+++ b/adb/Makefile
@@ -0,0 +1,71 @@
+SRCS+= adb.c
+SRCS+= adb_client.c
+SRCS+= commandline.c
+SRCS+= console.c
+SRCS+= file_sync_client.c
+SRCS+= fdevent.c
+SRCS+= get_my_path_linux.c
+SRCS+= services.c
+SRCS+= sockets.c
+SRCS+= transport.c
+SRCS+= transport_local.c
+SRCS+= transport_usb.c
+SRCS+= usb_linux.c
+SRCS+= usb_vendors.c
+SRCS+= utils.c
+
+VPATH+= ../libcutils
+SRCS+= abort_socket.c
+SRCS+= socket_inaddr_any_server.c
+SRCS+= socket_local_client.c
+SRCS+= socket_local_server.c
+SRCS+= socket_loopback_client.c
+SRCS+= socket_loopback_server.c
+SRCS+= socket_network_client.c
+
+VPATH+= ../libzipfile
+SRCS+= centraldir.c
+SRCS+= zipfile.c
+
+VPATH+= ../../../external/zlib
+SRCS+= adler32.c
+SRCS+= compress.c
+SRCS+= crc32.c
+SRCS+= deflate.c
+SRCS+= infback.c
+SRCS+= inffast.c
+SRCS+= inflate.c
+SRCS+= inftrees.c
+SRCS+= trees.c
+SRCS+= uncompr.c
+SRCS+= zutil.c
+
+CPPFLAGS+= -DADB_HOST=1
+CPPFLAGS+= -DHAVE_FORKEXEC=1
+CPPFLAGS+= -DHAVE_SYMLINKS
+CPPFLAGS+= -DHAVE_TERMIO_H
+CPPFLAGS+= -D_GNU_SOURCE
+CPPFLAGS+= -D_XOPEN_SOURCE
+CPPFLAGS+= -DPATH_MAX=256
+CPPFLAGS+= -DDEFAULT_ADB_PORT=8888
+CPPFLAGS+= -I.
+CPPFLAGS+= -I../include
+CPPFLAGS+= -I../../../external/zlib
+
+CFLAGS+= -O2 -g -Wall -Wno-unused-parameter -DDEFAULT_ADB_PORT=8888
+LDFLAGS= -static
+LIBS= -lrt -lpthread
+
+TOOLCHAIN= arm-none-linux-gnueabi-
+CC= $(TOOLCHAIN)gcc
+LD= $(TOOLCHAIN)gcc
+
+OBJS= $(SRCS:.c=.o)
+
+all: adb
+
+adb: $(OBJS)
+	$(LD) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)
+
+clean:
+	rm -rf $(OBJS)
diff --git a/adb/adb.h b/adb/adb.h
index f52c8b7..51b4c2f 100644
--- a/adb/adb.h
+++ b/adb/adb.h
@@ -365,7 +365,9 @@ typedef enum {
 #define print_packet(tag,p) do {} while (0)
 #endif
 
+#ifndef DEFAULT_ADB_PORT
 #define DEFAULT_ADB_PORT 5037
+#endif
 #define DEFAULT_ADB_LOCAL_TRANSPORT_PORT 5555
 
 #define ADB_CLASS              0xff
-- 
1.7.0.4

在adb所在目录运行make,使用arm linux toolchain得到了adb。即可以在运行ARM Linux平台的电路板或Android手机上作为adb的host了。




评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋宝华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值