
CVE-2022-20224를 해결하도록 수정된 AOSP Bluetooth 스택 저장소로, Android 10용 Fluoride Bluetooth 스택의 패치 버전을 제공합니다.
AOSP만 빌드하면 됩니다. Fluoride가 기본으로 포함되어 있습니다.
Ubuntu용 지침입니다. Clang 3.5.0을 사용한 14.04와 Clang 3.8.0을 사용한 16.10에서 테스트되었습니다.
mkdir ~/fluoride
cd ~/fluoride
git clone https://android.googlesource.com/platform/system/bt
의존성 설치(sudo 권한 필요):
cd ~/fluoride/bt
build/install_deps.sh
그런 다음 서드파티 의존성을 가져옵니다:
cd ~/fluoride/bt
mkdir third_party
cd third_party
git clone https://github.com/google/googletest.git
git clone https://android.googlesource.com/platform/external/aac
git clone https://android.googlesource.com/platform/external/libchrome
git clone https://android.googlesource.com/platform/external/libldac
git clone https://android.googlesource.com/platform/external/modp_b64
git clone https://android.googlesource.com/platform/external/tinyxml2
그리고 서드파티 의존성의 서드파티 의존성도 가져옵니다:
cd fluoride/bt/third_party/libchrome/base/third_party
mkdir valgrind
cd valgrind
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/valgrind.h?format=TEXT | base64 -d > valgrind.h
curl https://chromium.googlesource.com/chromium/src/base/+/master/third_party/valgrind/memcheck.h?format=TEXT | base64 -d > memcheck.h
참고: system/bt가 AOSP에서 체크아웃된 경우 소스를 다운로드하는 대신 심볼릭 링크를 생성하세요.
cd system/bt
mkdir third_party
cd third_party
ln -s ../../../external/aac aac
ln -s ../../../external/libchrome libchrome
ln -s ../../../external/libldac libldac
ln -s ../../../external/modp_b64 modp_b64
ln -s ../../../external/tinyxml2 tinyxml2
ln -s ../../../external/googletest googletest
cd ~/fluoride/bt
gn gen out/Default
cd ~/fluoride/bt
ninja -C out/Default all
이 명령은 모든 타깃(공유 라이브러리, 실행 파일, 테스트 등)을 빌드하고 out/Default에 넣습니다. 개별 타깃을 빌드하려면 "all"을 원하는 타깃으로 바꾸세요(예: ninja -C out/Default net_test_osi).
cd ~/fluoride/bt/out/Default
LD_LIBRARY_PATH=./ ./bluetoothtbd -create-ipc-socket=fluoride
Chromium 프로젝트의 Eclipse 설정 지침을 "Optional: Building inside Eclipse" 섹션까지 따르세요(해당 섹션은 수행하지 마세요. 다르게 설정할 것입니다).
Eclipse 설정 생성:
cd system/bt
gn gen --ide=eclipse out/Default
Eclipse에서 File->Import->C/C++->C/C++ Project Settings를 선택하고 system/bt/out/Default 아래의 XML 위치를 선택하세요.
프로젝트를 마우스 오른쪽 버튼으로 클릭하세요. Preferences->C/C++ Build->Builder Settings로 이동하세요. "Use default build command" 체크를 해제하고 대신 "ninja -C out/Default"를 사용하세요.
Behaviour 탭으로 이동하여 clean 명령을 "-t clean"으로 변경하세요.