libbridge_lib.so 라이브러리를 살펴보면 아래와 같이 2가지 함수가 존재한다.
- Java_com_hacktheon_bridge_BridgeLib_encode
- Java_com_hacktheon_bridge_BridgeLib_decode

Android Studio에서 아래와 같이 새 프로젝트를 생성.
- Phone and Tablet에서 Native C++ 선택
- Package Name = com.hacktheon.bridge, Language = JAVA로 지정.
- Android Studio에서 java/com/hacktheon/bridge 경로에 BridgeLib.java 자바 클래스 파일 생성.
package com.hacktheon.bridge;
public class BridgeLib {
public native String decode(String input);
public native String encode(String input);
static {
System.loadLibrary("bridge_lib");
}
}
- 파일 탐색기에서 MyApplication2/app/src/main 경로에 jniLibs 디렉토리 생성.
apk 압축풀어서 lib 폴더에 있는 4개 폴더 복붙. - MainActivity.java 코드 수정: 암호문과 함께decode 메소드 호출하면 끝.
package com.hacktheon.bridge;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.hacktheon.bridge.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
// Used to load the 'bridge' library on application startup.
static {
System.loadLibrary("bridge");
}
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;
BridgeLib bridgeLib = new BridgeLib();
String encodedText = "4658hg76<h85eed73ihghidi8ehf<78;";
// 디코딩 메서드 호출
String decodedText = bridgeLib.decode(encodedText);
tv.setText(decodedText);
}
/**
* A native method that is implemented by the 'bridge' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
}
