2011-12-27 2 views
19

Android PDF 뷰어 소스 코드를 다운로드하여 Eclipse에서 컴파일하려고합니다.네이티브 라이브러리 (.so 파일)를 Eclipse로 가져 오는 방법은 무엇입니까?

http://code.google.com/p/apv/downloads/detail?name=apv-0.3.1dev13.apk&can=2&q=

가 정확히 어떻게 내가 파일 libpdfview2.so이 가져 옵니까

대신 Cygwin에서 덤비는 및 네이티브 C 라이브러리를 재 컴파일의, 내 친구가 난 그냥 여기 APK에서 미리 컴파일 된 .so는 파일을 추출 할 수 있습니다 말했다 이클립스 프로젝트에?

업데이트 : 이클립스 다음과 같은 오류를 제공하고 실행되지 않습니다 :

아카이브 필요한 라이브러리 'lib 디렉토리/armeabi/libpdfview2.so'프로젝트 'APV'에서 읽을 수 없습니다 또는 유효한 ZIP 파일

없는 수 일들이 NDK 작업 방법을 알아낼이 NDK 튜토리얼 또한 당신을 돕는 측면에서 유용 할 수 있습니다 http://code.google.com/p/apv/source/browse/#hg%2Fpdfview

:

답변

21

은 샘플 프로젝트에 물건을 설정하는 방법을 참조하십시오 http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/

,691,363

  1. 하는 .so 라이브러리 파일은 일반적으로 project_root_dir/libs와 하위 폴더에 이동 : (210 개)

    기본 사항이 있습니다. 또한 일반적으로 아키텍처를 설명하는 추가 하위 폴더에 있습니다 (예 : project_root_dir/libs/armeabi/libpdfview2.so).

  2. 는 다음과 같이 당신이 활동에 정적 라이브러리 로더를 추가 활동에 라이브러리를 사용하려면

    정적
    {
    System.loadLibrary를 ("pdfview2"); // lib 접두사 부족 알림
    }

  3. 그러면 가져 오는 기본 함수를 정의합니다. 네이티브 키워드 덕택에 이러한 기능을 인식 할 수 있습니다. 여기

    http://code.google.com/p/apv/source/browse/pdfview/src/cx/hell/android/pdfview/PDF.java?r=560343d2dad904c5c925b6cadf97b90430fd25f4

몇 가지 예는 다음과 같습니다 :

private native int parseBytes(byte[] bytes); 
private native int parseFile(String fileName); 
private native int parseFileDescriptor(FileDescriptor fd); 
+0

그게 내가하려는거야.하지만 C 소스 코드에서 그 프로젝트를 컴파일 할 수 없었다. APK에서 컴파일 된 라이브러리 파일을 추출 할 수 있었지만 이클립스에서 Android 프로젝트에 포함시키는 방법을 모른다. –

+0

여기에 제작 지침을 따르셨습니까? http://code.google.com/p/apv/source/browse/pdfview/jni/build-instructions.txt – Theo

+0

그래, 작동하지 않았다. 나는 포기 했어. 그 지시 사항은 libpdfview2.so를 빌드하기위한 것이며, 나는 C 소스를 빌드하는 데 도움이 필요하지 않도록이 파일을 APK에서 추출했습니다. Android 앱에 가져 오기/링크하는 데 도움이 필요합니다. –

5

바와 같이 another Stack Overflow thread about this topic 자동으로 자원과 자산을 새로 고침 "오프 전환 한 다음 그들이 샘플에서 가져 어떤 기능을 확인하기 위해 파일에 봐 Windows/Preferences/Android/Build help 아래의 "build on folder"및 "external jar에 기본 라이브러리가 포함되어있을 때 오류가 발생합니다." 적어도 그것은 나의 경우에 도움이되었다!

'lib /armeabi'에 so- 파일을 넣어 런타임에 사용하는 것을 잊지 마십시오.

Li_W에 너무 늦은 경우에도 도움이 되었기를 바랍니다.

관련 문제