2015年8月22日土曜日

[Raspberry Pi][android]adb(Android Debug Bridge)を作る

SDK Tools Onlyからダウンロードしたadbはそのままでは使えませんでした。
ARM用のコンパイルしたadbが必要なようです。

いろいろ調べると結局Adb for Raspberry piにいきつくようです。
Thanks a lot!

ちょっと古いソース(2014年/9月ころ)を使うことになりますが、adbがビルドできましたのでメモを残しておきます。
http://forum.xda-developers.com/showthread.php?t=1924492&page=7の#70そのままです。

Rasbian(LXTerminal)上で作業を行います。

$ sudo apt-get update
$ sudo apt-get install git build-essential libncurses5-dev libssl-dev
$ mkdir aosp
$ cd aosp
$ git clone https://android.googlesource.com/platform/system/core.git system/core
$ git clone https://android.googlesource.com/platform/external/zlib.git external/zlib

あとで作成するMakefileが使えるようにあるコミットIDをチェックアウトします。
$ cd system/core
$ git checkout -b topic 32e2f1be039482762303378113c817ba99466953
$ cd ../../
$ cd external/zlib
$ git checkout -b topic 8d977782c1cfe9d75cc9a464439c2ff1e27e1665

system/core/adb/Makefile を作ります。

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+= adb_auth_host.c

VPATH+= ../libcutils
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
SRCS+= load_file.c

VPATH+= ../libzipfile
SRCS+= centraldir.c
SRCS+= zipfile.c

VPATH+= ../../../external/zlib/src
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+= -DHAVE_OFF64_T
CPPFLAGS+= -D_GNU_SOURCE
CPPFLAGS+= -D_XOPEN_SOURCE
CPPFLAGS+= -DWORKAROUND_BUG6558362
CPPFLAGS+= -I.
CPPFLAGS+= -I../include
CPPFLAGS+= -I../../../external/zlib

CFLAGS+= -O2 -g -Wall -Wno-unused-parameter
#LDFLAGS= -static
LIBS= -lrt -lpthread -lcrypto -lssl

TOOLCHAIN=
CC= $(TOOLCHAIN)gcc
LD= $(TOOLCHAIN)gcc

OBJS= $(SRCS:.c=.o)

all: adb

adb: $(OBJS)
  $(LD) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)

clean:
  rm -rf $(OBJS)

最後の4行くらいの
「$(LD) -o $@ $(LDFLAGS) $(OBJS) $(LIBS)」と「rm -rf $(OBJS)」の前はタブです。
Makefileを作ったら、

$ cd system/core/adb
$ make adb
-> adbができています!


$ sudo ./adb kill-server
$ sudo ./adb start-server
$ ./adb devices


$ uname -a
Linux raspberrypi 3.18.11-v7+ #781 SMP PREEMPT Tue Apr 21 18:07:59 BST 2015 armv7l GNU/Linux
という環境でした。



0 件のコメント:

コメントを投稿