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(); }
