2014-01-23 1 views
4
  1. 나는 컴파일 할 때 공유 라이브러리의 결과를 가져올 엄청난 양의 C 소스 파일을 가지고있다.
  2. JNA를 사용하여 이미 빌드 된 C 공유 라이브러리에 액세스하는 Java 버전도 있습니다. 이 파일들은 다른 병에서 사용할 수 있습니다. 이 단지는 jna에 달려 있습니다.

먼저 c 파일을 컴파일하고 java 코드를 컴파일했습니다. 자바에서는 에러가 없다. 문제는 안드로이드로 이식하려고 할 때만 발생합니다. 안드로이드 'ndk-build'도구를 사용하여 c 파일을 쉽게 컴파일 할 수있었습니다. 이렇게하면 공유 라이브러리가 성공적으로 작성됩니다.안드로이드에 대한 JNA

Android - JNA library 그러나 나는 그 게시물에 코멘트를 이해하지 않습니다

때문에 나는이 비슷한의 안드로이드 프로젝트에 JNA를 가져올 수 없습니다입니다. 안드로이드에서 JNA를 사용할 수 있습니까?

jna.jar (다른 아키텍처에 해당하는 파일)에서 몇 개의 파일을 제거하려고했습니다. 그러나 다음과 같은 오류 메시지가 나타납니다. 'jna.jar'라이브러리에 장치에서 실행되지 않는 기본 라이브러리가 포함되어 있습니다. 포함 : "com/sun/jna/android-arm/libjnidispatch.so"

jar (C 라이브러리 용 Java 래퍼가있는)가 가져오고 코드를 작성할 수 있습니다. 하지만이 항아리의 클래스를 사용하여 만드는 첫 번째 객체에는 여전히 'ExceptionInInitializerError'가 표시됩니다.

나는 자바에 정통하지 않다. 나는 신인에 대한 지식 만 갖고있다. 나와 함께 견디고 도와주세요. 감사.

+0

당신은 이클립스가 빌드 할 사용하고 있습니까? – Samhain

+0

@ user3228292 제안 된 답변이 작동하는 경우 그것을 수락하는 것을 잊지 마십시오 – Chriss

+0

나는 이것을 시도하고 최대한 빨리 돌아올 것입니다. – McMurdo

답변

3

은 어쩌면 이것은 당신이 찾고있는 무엇 :

  • 은 (기본/메이크에서 사용) PATH에 안드로이드 SDK/NDK 도구를 추가합니다.
  • 환경 변수 NDK_PLATFORM (기본/Makefile에서 사용)을 설정하십시오.
  • 빌드 사용 : ant -Dos.prefix = android-arm dist.
  • 테스트는 빌드 플랫폼이 아닌 대상 플랫폼에서 실행해야합니다.
  • 필요에 따라 dist/jna.jar 및/또는 dist/platform.jar을 응용 프로그램에 추가하십시오.
  • android-maven-plugin을 사용하는 경우 jna.jar를 그대로 사용할 수 있습니다 (기본 라이브러리가 자동으로 프로젝트에 복사됩니다).
  • Google의 Eclipse 플러그인을 사용하는 경우 jna.jar/lib/armeabi에서 libjnidispatch.so를 수동으로 제거하고 프로젝트의 libs/armeabi 디렉토리에 추가해야합니다.
  • 자세한 내용은 http://code.google.com/p/android/issues/detail?id=17861http://developer.android.com/guide/practices/jni.html을 참조하십시오.

https://github.com/twall/jna/blob/master/www/AndroidDevelopmentEnvironment.md에서 복사 :

+0

1. 다음을 사용하여 빌드하십시오. ant -Dos.prefix .... bhuild 무엇을 사용하고 있습니까? 2. 테스트는 플랫폼을 기반으로하지 않고 대상에서 실행해야합니다. 이해할 수 없습니다.타겟과 빌드 플랫폼은 모두 Android입니다. 맞습니까? 미안해 내가 틀렸다면. – McMurdo

+0

설명대로 내가 설명을 복사 직접 JNA 사람에게 연락을 시도 – Chriss

+0

그것은 작동하지 않았다. android-arm 용 버전은 이미 jar 파일로 다운로드 할 수 있으므로 JNA를 빌드 할 필요가 없었습니다. – McMurdo