안드로이드에서 JNI를 사용하여 C 언어로 루프를 실행하고 이를 APK로 빌드하기 위해 NDK를 사용하는 방법은 다음과 같습니다:
File > Project Structure > Modules > app > Dependencies
**로 이동하여 NDK를 추가합니다.app/src/main/
아래에 **jni
**라는 디렉토리를 만듭니다.jni
디렉토리 내에 **native-lib.c
**라는 C 파일을 생성하고 아래의 내용을 포함합니다:c#include <jni.h>
#include <string.h>
JNIEXPORT jstring JNICALL
Java_com_example_yourapp_MainActivity_stringFromJNI(JNIEnv *env, jobject thiz) {
char result[100];
strcpy(result, "Loop Results:\\n");
for (int i = 0; i < 5; i++) {
char buffer[20];
sprintf(buffer, "Count: %d\\n", i);
strcat(result, buffer);
}
return (*env)->NewStringUTF(env, result);
}
jni
디렉토리 내에 Android.mk
파일을 생성하고 다음 내용을 추가합니다:makefileLOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := native-lib.c
include $(BUILD_SHARED_LIBRARY)
Application.mk
파일을 만들고 다음 내용을 추가합니다:makefileAPP_ABI := all
APP_PLATFORM := android-16
build.gradle
파일을 열고 아래 내용을 추가하여 NDK 빌드를 활성화합니다:groovyexternalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
MainActivity.java
**에서 네이티브 라이브러리를 로드하고 네이티브 메소드를 선언합니다:javapackage com.example.yourapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
public native String stringFromJNI();
}