FFmpeg 라이브러리를 참조하는 플레이어를 만들때..
package net.jbong.FFmpegBasic;
import android.graphics.Bitmap;
public class FFmpegInterface {
public static native int initBasicPlayer();
public static native int openMovie(String filePath);
public static native int renderFrame(Bitmap bitmap);
public static native int getMovieWidth();
public static native int getMovieHeight();
public static native void closeMovie();
}
이와 같은 내용의 java파일을 class 파일로 만든 후.
javah로 jni 형태의 헤더 파일을 만드려 할때.
다음과 같은 문제가 나왔다.
Error: cannot access android.app.Activity
class file for android.app.Activity not found
즉 위에 import android.graphics.Bitmap;이놈이 문제
이놈을 빼버리고 javah 하면 되지만.
문제는 public static native int renderFrame(Bitmap bitmap);
여기에 Bitmap class가 쓰여 반드시 import 해야 되는 상황.
우선 작업 환경이.
Windows와 우분투 병행 작업 환경 이기 때문에.
Vm-ware에
Windows의 C:\android\adt-bundle-windows-x86_64-20131030\sdk\platforms\android-19 폴더를공유한다.
그럼 vm-ware 우분투에서 /mnt/hgfs/android-19를 마음대로 드나 들수있다.
우선 class 파일을 만들기 위해.
java 파일이 있는 폴더로 가서. 다음과 같이 입력.
javac -cp /mnt/hgfs/android-19/android.jar FFmpegInterface.java
FFmpegInterface.java는 내가 만든 파일이고.
-cp의 뜻은 android.jar를 참조해서 컴파일(?)하라는 것이다.
그럼 class가 만들어 진다.
-cp를 안하면 컴파일 안된다.
또는 이클립스등을 이용해서 class를 만들면 된다.
그후, JNI 방식대로 폴더를 만들고. class를 파일을 넣고..
javah -classpath ./ -bootclasspath /mnt/hgfs/android-19/android.jar -jni net.jbong.FFmpegBasic.FFmpegBasic
입력.
뜻
classpath : class파일이 잇는 곳
bootclasspath : android.jar를 참조(?)하샘.
-jni : jni 형태로 해더 파일 만들어주세요.
net.jbong.FFmpegBasic.FFmpegBasic : 패키지 경로..
이러면 헤더 파일 만들어진다.
검색해 보니깐.. 없는 것 같아서 적어놨음.