2014-03-28 4 views
1

NDK로 빌드 된 Java 및 C 코드가 모두 포함 된 Android Eclipse 라이브러리 프로젝트 "Lib"이 있습니다. 나는 Lib에 의존하는 또 다른 프로젝트 "App"을 가지고있다. 애플 리케이션은 또한 자바와 C를 모두 포함한다. 나의 목표는 각각 Lib 프로젝트를 사용하는 여러 개의 이클립스 App-like 프로젝트를 갖는 것이다.Android Eclipse : 다른 프로젝트에서 라이브러리 프로젝트의 NDK 라이브러리를 참조하는 방법?

App의 Java 루틴은 Lib에서 Java 루틴을 호출하여 Lib에서 C 코드를 호출합니다. 이것은 컴파일, 링크 및 장치에서 완벽하게 실행됩니다.

이제 App의 C 코드에서 Lib의 C 코드에 대한 호출을 추가하려고합니다. 내 첫 번째 문제는 헤더 파일입니다. 나는 해방 프로젝트에서, 헤더 파일, JNI/lib 디렉토리 JNI, 시간을 포함해야합니다

#include "lib-jni.h" 

을 응용 프로그램에서이 .c 파일에. 이 #include가 작동하려면 App의 jni/Android.mk에 Lib의 jni/디렉토리를 LOCAL_C_INCLUDES에 추가해야한다고 생각합니다. 이 경로를 하드 코딩하지 않으려 고합니다. 가능한 경우 Eclipse에서 가져오고 싶습니다. 어쨌든 나는 이클립스에게 App 프로젝트가 Lib 프로젝트에 의존하고 Eclipse가 둘 사이의 자바 호출을 연결하는 방법을 알고 있다고 말했다.

lib-jni.h를 Lib의 jni/디렉토리에서 App의 jni/디렉토리로 복사하여 일시적으로 첫 번째 문제를 해결했습니다. 이제 앱의 C 코드가 컴파일되지만 링크되지 않습니다. 그것은 정의되지 않은 것을 얻습니다. App의 Android.mk에서 libLib.so와 연결되도록 C 링커에 알려야합니다. -lLib을 LOCAL_LDLIBS에 넣으려고했으나 작동하지 않았습니다. libLib.so는 Lib 프로젝트 Lib/libs/armeabi/libLib.so에 있습니다. Eclipse는이 .so 파일을 App 용으로 빌드 한 .apk 파일에 통합하는 것을 알고 있습니다.

에 깔끔하게이이 두 가지 문제를 해결할 수 있습니까?

  1. 내가 가능한 솔루션의 관점에서 이러한 문제를 표현한 앱의 LOCAL_LDLIBS

에 libLIb.so에 대한 참조를 추가 앱의 LOCAL_C_INCLUDES

  • 에 해방의 JNI/디렉토리를 추가합니다. 나는 모든 해결책에 개방적이다. 예를 들어 LOCAL_LDLIBS을 잘못 사용하는 경우 올바른 방법은 무엇입니까?

    : 응용 프로그램 및 lib 디렉토리가 별도의 시간에 내장 된 두 개의 이클립스 프로젝트이기 때문에 내가 응용 프로그램의 Anroid.mk에 해방의 JNI/디렉토리를 사용할 수 있도록 해방의 Android.mk에 LOCAL_EXPORT_C_INCLUDES을 사용할 수 없습니다 확신합니다 - 나는 시도 그것은 작동하지 않았다. 하지만 나는 교육받을 준비가되어 있습니다.

  • 답변

    0

    나는 항상 LOCAL_C_INCLUDES을 원래의 lib로 설정 했으므로 그렇게 나쁜 생각은 아닙니다. 다른 해결책은 외부 라이브러리를 libs 폴더에 정적 라이브러리로 포함시키는 것입니다.하지만 제대로 작동하는지 확신 할 수 없습니다.

    관련 문제