본문 바로가기
Android/기본

[Android] C++ 사용

by 카피마스터 2024. 1. 13.

 

Andorid Studio에서 Native C++로 프로젝트 생성

 

프로젝트/src/main/cpp 에 c++ 관련 파일들이 생김

CMakeList.txt

C++ 파일을 빌드하기 위한 정보(https://morningcopy.tistory.com/entry/CMake-CMakeListstxt) 

cmake_minimum_required(VERSION 3.22.1)

// 프로젝트명 설정 $(CMAKE_PROJECT_NAME}으로 참조 가능
project("MyLib")

// 공유 라이브러리 생성 libmyproject.so
add_library(${CMAKE_PROJECT_NAME} SHARED
        # List C/C++ source files with relative paths to this CMakeLists.txt.
        native-lib.cpp)

// android, log 라이브러리 추가
target_link_libraries(${CMAKE_PROJECT_NAME}
        # List libraries link to the target library
        android
        log)

 

 

native-lib.cpp

C++ 함수를 정의

com/example/project/MainActivity 에 stringFromJNI로 선언할 함수를 정의

#include <jni.h>
#include <string>

extern "C" JNIEXPORT jstring JNICALL
Java_com_example_project_MainActivity_stringFromJNI(
        JNIEnv* env,
        jobject /* this */) {
    std::string hello = "Hello from C++";
    return env->NewStringUTF(hello.c_str());
}

 

프로젝트/src/main/java/패키지명/MainActivity.java

public class MainActivity extends AppCompatActivity {

    // 라이브러리 로드
    static {
        System.loadLibrary("MyLib");
    }

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        // Example of a call to a native method
        TextView tv = binding.sampleText;
        tv.setText(stringFromJNI());
    }

    // C++ 에 정의된 함수를 사용할수 있게 선언
    public native String stringFromJNI();
}

 

'Android > 기본' 카테고리의 다른 글

[Android] Activity 추가 및 시작 Activity 변경  (0) 2024.01.15
[Android] Android Studio 단축키  (0) 2024.01.14
[Android] Layout  (0) 2023.12.16
[Android] 기본 정보  (0) 2023.12.16
[Android] 디바이스에서 앱 실행  (0) 2023.12.16