반응형

분류 전체보기 44

[Android/NDK] 기존 프로젝트에 NDK 설정하는 방법

NDK 프로젝트를 매번 진행할때마다 설정을 구글에 검색하고 있는 저를 보며 이번 기회에 정리해야겠다 벼루고 있었는데 게을러서 미루기를 수차례 드디어 칼을 뽑아 정리합니다. 기존 프로젝트에 NDK 를 설정하는 방법을 정리한다고 했으나 내용은 프로젝트 생성부터(Java) 설정으로 정리하려고 노력했습니다. 그리고 정리하다 보니 Mac 과 Window 가 환경이 달라 경로 설정도 다른것을 확인하여 경로는 각각 정리하였습니다. 전반적인 내용은 빌드되는 운영체제 상관없이 같으니 참고해서 봐주세요. .so 파일만 가지고 연결하는 법은 아래에 포스팅에 설명 되어 있습니다. [Android/NDK] 기존 프로젝트에 .so 파일 연결하는 법 [Android/NDK] 기존 프로젝트에 .so 파일 연결하는 법 .so 파일은 ..

Android 2019.12.20

[Android/NDK] warning: passing 'uint8_t [3]' to parameter of type 'const jbyte *'

uint8_t crypto[] = { 0x00, 0x00, 0x00 }; JNIEXPORT jbyteArray JNICALL Java_com_example_ndk_Config_crypto (JNIEnv *env, jobject obj){ jbyteArray ret = (*env)->NewByteArray(env, 8); (*env)->SetByteArrayRegion(env, ret, 0, 8, crypto); return ret; } 오래된 jni 를 실행하려고 하는데 다음과 같은 오류 메세지가 나왔습니다. jni 는 warning 메세지라고 하더라도 so 파일은 생성이 됩니다. 하지만 저런 메세지를 무시하면 빌드된 so 파일이 정상적으로 동작하지 않을수 있기 때문에 수정해주고 넘어가야 합니다. 위의 ..

Android 2019.12.18

[Android/NDK] warning: implicitly declaring library function 'strlen'

NDK 를 이용하여 JNI 코드를 이용하거나 기존의 오래된 코드를 빌드하려고 할때 IDE 에서 위와 같은 오류가 발생한다면 헤더가 제대로 선언이 되지 않았을 확률이 있습니다. 저 같은 경우 다음과 같이 해더 선언했더니 문제가 해결되었습니다. #include 참고 바랍니다. 참고 자료 https://stackoverflow.com/questions/19761104/receiving-warning-implicit-declaration-of-function-strlen/19761118

Android 2019.12.18

[Android/Error] More than one file was found with OS independent path

안드로이드 자체 API 와 설정한 서드파티 라이브러리 API 가 충돌날때 생기는 에러라고 합니다. 에러 메세지가 다음과 같이 났다고 하면 More than one file was found with OS independent path 'META-INF/DEPENDENCIES'다음과 같이 설정하면 해결 됩니다. build.gradle(app) android { defaultConfig { ... } packagingOptions { exclude 'META-INF/DEPENDENCIES' } } 참고하세요.

Android 2019.12.16

[Android/NDK] java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList

위와 같은 에러가 발생할 경우 다음과 같이 작성해주세요. build.gradle(app) ndk 의 so 파일이 위치한 폴더 경로를 설정해줍니다. android { ... defaultConfig { ndk { abiFilters 'armeabi', 'arm64-v7a', 'x86', 'mips' } } } gradle.properties android.useDeprecatedNdk=true 각 폴더 경로에 so 파일의 종류의 갯수는 전부 같아야 하니 참고해주세요.

Android 2019.12.16

[Android/Jar] AndroidStudio 에서 jar 파일 생성하기

build.gradle(app) 설정에 하기와 같이 설정해주면 됩니다. 요즘 대부분 3.1 이상 gradle 환경이기 때문에 3.1 이상 예제를 사용하시기 바랍니다. 3.1 미만 (참고) // 기존 library.jar 파일을 삭제. task deleteOldJar(type:Delete) { delete 'release/library.jar' } // release 폴더에 library 이름으로 jar 생성. task exportJar(type:Copy) { from('build/intermediates/bundles/release/') into('release/') include('classes.jar') rename('classes.jar', 'library.jar') } // exportJar 실행..

Android 2019.12.13

[Android/Error] aidl 컴파일 오류

aidl 파일에 문제가 없어보이는데 컴파일하면 오류가 나는 상황이 발생했습니다. error: reached end of file while parsing 구글에서 검색해보니 괄호{ }를 정상적으로 안닫은 구문이 있어 발생하는 거라던데 확인해보면 그런 문제가 없었죠. 이럴 경우 해결 방법은 주석 구문을 전부 없앴더니 문제 없이 컴파일 되었습니다. 참고로 oneway 로 선언된 aidl 파일에서는 주석 오류가 발생하지 않았었습니다. 문제의 원인이 주석 인지 운영체제에 따른 작업 툴의 문제인지는 모르겠습니다. 혹시 class 나 method 문제 에러가 발생했을 경우에도 대상이 aidl 컴파일된 파일이 문제가 된다면 주석을 의심해 보시기 바랍니다.

Android 2019.12.13

[Android/Error]error: illegal character: '\ufeff' ( illegal character 65279)

이클립스 안드로이드 프로젝트를 Android Studio 로 포팅하여 빌드하는 중 이런 오류 메시지가 발생했었습니다. error: illegal character: '\ufeff' 해당 원인을 찾아보니 유니코드 BOM 을 인식 못하는 문제였습니다. 유니코드 BOM 이란, 유니코드에는 파일의 맨앞에 보이지 않는 어떤 표시를 해둔 것을 말합니다. 자바는 컴파일시 BOM이 있는 유니코드를 인식하지 못하면 저런 에러 메세지가 발생하게 됩니다. 해결방법으로 다른 텍스트 에디터에 해당 내용을 복사 > 붙여넣기 > 다시 복사 한 후 java 파일을 새로 만들어서 재복사한 내용을 붙여넣어 기존 파일에 대체 하면 됩니다.

Android 2019.12.13
반응형