마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 스튜디오 ndk 에 static library(.a 파일) 추가 에러

0 추천

ndk 에서 aes 암호화 함수를 사용을 하려고 .a 라이브러리 파일을 만드는 것까지는 성공을 했는데 

.so 파일 만들때 라이브러리를 추가하려고 하는데 안되내요 

run 을 하면 특별하게 에러가 나지는 않는대. .so 파일을 생성을 못해서 샘플 앱(aes 함수를 실행해보려는)이 실행이 안됩니다. 

계속 하다하다 안되서 질문 올려봅니다.

안드로이드 스튜디오는 1.0.0 버전 입니다.

 

Android.mk 내부에서는 아래와 같이 넣었습니다.

LOCAL_PATH := $(call my-dir)
LIB_PATH := $(abspath $(LOCAL_PATH)/../../../src/main/obj/local)
LIB_HEADER := $(abspath $(LOCAL_PATH)/../../../src/openssl)
 
include $(CLEAR_VARS)
LOCAL_MODULE    := libopenssl-static
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/libopenssl-static.a
LOCAL_EXPORT_C_INCLUDES := $(LIB_HEADER)
LOCAL_C_INCLUDES := $(LIB_HEADER)
include $(PREBUILT_STATIC_LIBRARY)
 
 
# build JNI
include $(CLEAR_VARS)
LOCAL_MODULE    := mbcore
LOCAL_SRC_FILES := mbcore.c
LOCAL_STATIC_LIBRARIES := libopenssl-static
#LOCAL_WHOLE_STATIC_LIBRARIES += libcrypto-static libssl-static
#LOCAL_LDLIBS := $(LIB_PATH)/$(TARGET_ARCH_ABI)/libopenssl-static.a \ $(LIB_PATH)/$(TARGET_ARCH_ABI)/libcrypto-static.a \ $(LIB_PATH)/$(TARGET_ARCH_ABI)/libssl-static.a \
include $(BUILD_SHARED_LIBRARY)
 
 
build.gradle 파일에는 아래와 같이 했습니다.
 
defaultConfig {
        (.....)
 
        ndk {
            moduleName "mbcore"
        }
 
        sourceSets.main{
            jni.srcDirs = []
            jniLibs.srcDir 'src/main/libs'
        }
 
        task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
            def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder()
            commandLine "$ndkDir/ndk-build",
                    '-C', file('src/main/jni').absolutePath,
                    '-j', Runtime.runtime.availableProcessors(),
                    'all',
                    'NDK_DEBUG=1'
        }
 
        task cleanNative(type: Exec, description: 'Clean JNI object files') {
            def ndkDir = project.plugins.findPlugin('com.android.application').getNdkFolder()
            commandLine "$ndkDir/ndk-build",
                    '-C', file('src/main/jni').absolutePath,
                    'clean'
        }
 
        clean.dependsOn 'cleanNative'
 
        tasks.withType(JavaCompile) {
            compileTask -> compileTask.dependsOn buildNative
        }
 
    }

 

스댕그릇 (280 포인트) 님이 2015년 1월 16일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...