JString to C++ string
NDK 를 사용할 때 Java에서 Argu를 통해 String 형식을 보내줘야 할 때가 있음
그러면 해당 string을 받는쪽에서 다른 변수(int ...) 같은 경우에는 jint 형으로 받아서 처리가 가능함
그런데 String 같은 경우에는 C++ 에서 재사용하는 경우 Jstring 에서 C++ String 형으로 변환을
해줘야 정상적으로 사용이 가능함
Java에서 사용하는 String은 16비트의 Unicode 문자세트를 사용하고, C, C++ 에서는 일반적으로 8bit 의 문자열을 표현하기 때문에 이것을 변환시키기 위해서 UTF-8 포맷으로 변경을 해주는 작업이 필요
위와같이 함수의 선언에서 받을 때는 JString으로 정상적으로 받지만,
실제로 C++에서 사용할 때는 위와 같이 GetStringUTFChars 를 통해 받아와야함
해당 함수는 변수 선언에서도 Char* 형식으로 받는것처럼 문자열에 대한 포인터를 얻을 때 사용함
*해당 함수의 두번 째 인가 isCopy는 복사본을 만들지 여부를 나타냄
'Technical Docs > Android' 카테고리의 다른 글
Smali 수정으로 logcat 남기기 (0) | 2022.06.02 |
---|---|
Manifest 구조를 알아보자 (0) | 2022.01.10 |
네임 맹글링 (Name Mangling or Name Decoration) (0) | 2021.12.30 |
Smali 코드로 Toast 생성하기 (0) | 2021.12.17 |
Android Native C++ string Frida로 출력 (0) | 2021.12.17 |