MIPS 디바이스 용으로 빌드해야하는 독점 JNI 애플리케이션이 있습니다. "Initializing a Build Environment", NDK 문서의 일부, 일부 Google 그룹스 스레드 및 수많은 StackOverflow 질문을 읽었지만 아직 내 대답이 부족합니다.JNI 애플리케이션 용 Android 빌드 환경 설정
지금까지 Google의 repo 스크립트를 사용하여 Android 소스를 확인한 결과 ~/AndroidSource
이하였습니다. 또한 SDK는 ~/AndroidSDK
아래에, NDK는 ~/AndroidNDK
아래에 별도로 다운로드했습니다. 빌드하려고하는 코드는 별도의 위치에 있습니다. SDK 및 NDK 바이너리가 내 경로에 있습니다. 빌드를 위해 필자는 Android 소스 트리 아래에있는 NDK와 두 가지 버전의 NDK를 사용하려고 시도했으며 여러 가지 문제를 경험했습니다. 현재 설치에는 Android 소스와 별도로 다운로드 한 NDK r8b가 사용됩니다.
응용 프로그램의 Android.mk
및 jni/Android.mk
이 있습니다. 그러나 후자의 몇 가지 지시문은 경로에 대해
frameworks/base/include
system/core/include
접두사가없는 경로를 가리 킵니다. 나는 이것들이 안드로이드 소스에있는 각각의 디렉토리를 가리 키기위한 것이라고 생각했기 때문에, 그것들을 현재 디렉토리로 심볼릭 링크했다. 좀 더 symlinking과 makefile과 소스 해킹을 한 후에, 나는 컴파일 할 애플리케이션을 얻었지만, 현재 누락 된 메소드 본문에 대한 많은 참조로 연결 단계에 머물러있다. 전체 시간 동안 내가 뭔가 잘못하고있는 것을 알았습니다.
Linux x86_64 호스트에 관한 모든 우려 사항이 있습니다.
그래서 제 질문은 :
JNI 응용 프로그램을위한 빌드 환경을 설정하는 적절한 방법은 무엇입니까? 어떤 환경 변수, 심볼릭 링크 및/또는 경로 확장을 설정해야합니까? 한 번 또는 각 ndk-build
호출 전에 모든 스크립트를 호출해야합니까?
또한 잘못된 개념이나 용어로 나를 고칠 수 있으면 기쁩니다.
필자가 가지고 있던 연결 문제는 응용 프로그램 코드를 기반으로 구축 될 라이브러리가 아니라 장치에 미리 빌드 된 라이브러리와 관련이 있지만 지금은 테스트 할 수 없습니다. 해당 응용 프로그램에서 더 이상 작업하지 않으며 내 로컬 Android 소스가 대상과 일치하지 않습니다. 그러나, 나는 그것을 "올바른 방법"종류의 대답을 찾고있었습니다. – mcmlxxxvi
include 경로에'frameworks/base/include'와'system/core/include'가 있다면'-lutils'와'-lcutils'가있을 것입니다. 이 두 라이브러리는 실제로 유비쿼터스이지만 NDK와 함께 제공되는 "안정적인 API"의 일부는 아닙니다. –