2012-08-30 5 views
3

NDK를 사용하여 Android 애플리케이션을 개발하는 방법을 보여주는 자습서가 많이 있습니다.코드 재사용 Android NDK

다음과 같은 두 가지 튜토리얼을 고려하십시오 :

그러나 나는 오히려 "쉬운/어리석은"질문이

  1. http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/
  2. http://www.indiedb.com/tutorials/creating-compiling-and-deploying-native-projects-from-the-android-ndk
  3. http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
  4. http://marakana.com/forums/android/examples/49.html

이제 두 번째 튜토리얼에서는 hello-jni 예제를 빌드 중입니다.

내 질문은 :

ndk-build

을 사용하고 producting에 후 :

enter image description here

그것이 가능한 결과 libhello-jni.so를 사용하고 실제 대신 다른 사람이 배포하는 것입니다 C 코드? Android.mk를 수정하고 공유 라이브러리?

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := mylib 
LOCAL_SRC_FILES := com_myproject_MyActivity.c 
include $(BUILD_SHARED_LIBRARY) 

어떤 제안 또는 자습서 환영을 포함하기 위해 something.socom_myproject_MyActivity.c 교체 예를 들어

. 미리 감사드립니다.

답변

3

미리 작성된 NDK 라이브러리는 libs/armeabi (또는 그 구조가 무엇이든간에)으로 복사 한 다음 런타임에로드하여 사용할 수 있습니다. Android 빌드 시스템의 견지에서 APK에 포함시킬 또 다른 파일 일뿐입니다.

그러나 JNI 함수 이름에는 규칙에 따라 패키지 이름과 클래스가 포함됩니다. 그래서 SO 소비자 프로젝트의 관점에서 볼 때, JNI 함수가 그 클래스에 들어 맞지 않기 때문에 사용은 다소 부 자연스럽게 보일 것입니다. 각각의 Java 클래스가 선언 된 companion JAR을 제공해야 할 것입니다. VitamioBundle 통해

0

,

당신을 다시 사용하여 코드를 할 필요가 없습니다 :

는 가능한이 libhello-jni.so 결과를 사용하는 대신 실제 C 코드의 다른 사람에게 이것을 배포하는 것입니다 ? 예를 들어 Android.mk를 수정하고 com_myproject_MyActivity.c를 something.so로 바꾸면 공유 라이브러리가 포함됩니까?

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := mylib 
LOCAL_SRC_FILES := com_myproject_MyActivity.c 
include $(BUILD_SHARED_LIBRARY) 

VitamioBundle은 당신이 당신의 안드로이드 라이브러리로 사용할 수 있습니다,

따라서, 공유 라이브러리로 간주 될 수있다.

놀아 봅시다.