반응형

2019/12 19

[Android/NDK] 기존 프로젝트에 .so 파일 연결하는 법

.so 파일은 NDK 의 C/C++ 파일이 컴파일된 파일입니다. NDK 를 사용하기 위해서는 그냥 JNI 로 구성된 C/C++ 파일이 있으면 됩니다. [Android/NDK] 기존 프로젝트에 NDK 설정하는 방법 [Android/NDK] 기존 프로젝트에 NDK 설정하는 방법 NDK 프로젝트를 매번 진행할때마다 설정을 구글에 검색하고 있는 저를 보며 이번 기회에 정리해야겠다 벼루고 있었는데 게을러서 미루기를 수차례 드디어 칼을 뽑아 정리합니다. 기존 프로젝트에 NDK 를 설정하는.. question0.tistory.com 하지만 .so 컴파일된 파일만 있어도 C/C++ 로 구성했었던 기능과 동일하게 사용 가능합니다. 주로 라이브러리 배포시 이런식으로 진행하곤 하죠. 설정 연결을 하는 Java 클래스를 이전..

Android 2019.12.27

[NodeJs/React/Error] The engine "node" is incompatible with this module. Expected version

React 프로젝트를 create-react-app 로 생성하려고 했을때 다음과 같은 오류가 발생했습니다. error @typescript-eslint/eslint-plugin@2.10.0: The engine "node" is incompatible with this module. Expected version "^8.10.0 || ^10.13.0 || >=11.10.1". Got "11.6.0" 오류 메세지를 살펴보니 node 버전이 호환이 안되서 문제인 것 같아 업데이트를 진행 해줬습니다. Node.js 업데이트 방법 [Node.js] 최신버전으로 업데이트 하기 Node 업데이트 $ sudo npm cache clean -f # 강제캐시삭제 $ sudo npm install -g n # n 모듈 설..

NodeJS 2019.12.23

[Node.js] 최신버전으로 업데이트 하기

Node 업데이트 $ sudo npm cache clean -f # 강제캐시삭제 $ sudo npm install -g n # n 모듈 설치 $ sudo n stable # or sudo n 12.14.0 (버전명) $ node -v # 버전 확인 Node 업데이트 오류 bash: /usr/bin/node: No such file or directory 위의 오류가 발생하면 다음과 같이 입력해줍니다. $ sudo ln -sf /usr/local/n/versions/node//bin/node /usr/bin/node 예시 $ sudo ln -sf /usr/local/n/versions/node/12.14.0/bin/node /usr/bin/node NPM 업데이트 $ sudo npm install -g n..

NodeJS 2019.12.23

[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
반응형