1. Android Studio에서 NDK 설치
Setting->Android SDK->SDK Tools에서
CMake, LLDB, NDK 항목 설치
2. cygwin 설치
https://cygwin.com/install.html
a) 설치할때 wget 추가해서 설치
b) cygwin 실행후 apt-cyg 설치
wget raw.github.com/transcode-open/apt-cyg/master/apt-cyg
chmod +x apt-cyg
mv apt-cyg /usr/local/bin
c) 필요한 package들 설치
apt-cyg install vim bash gcc-core gcc-g++ gzip make unzip zip automake cmake
3. FFmpeg 다운로드
https://www.ffmpeg.org/download.html
최신 버전 다운로드하니 3.3.3이군.
$NDK/sources/ffmpeg-3.3.3 에 압축해제했다.
4. FFmpeg 컴파일하기 위한 configure 및 스크립트 수정작업
http://blog.naver.com/just4u78/220628698165
에 정리가 잘되어 있어서 참조했는데 1년이 넘어서 그런지 수정할 부분이 좀 있었다.
$NDK/sources/ffmpeg-3.3.3 폴더에 빌드에 필요한 파일을 작업한다.
a) configure 파일 수정
파일을 복사해서 configure_android를 하나 생성하고 수정함
#ln_s_default="ln -s -f"
ln_s_default="cp -f"
ln은 생성된 so 파일의 심볼릭 링크 문제 때문에 윈도우는 cp로 변경해줘야 된다.
강좌를 보니 경로나 다른 부분도 수정할게 있다고 하는데 안해도 문제는 없는 것 같다.
b) build_android 스크립트 작성
build_android_so.sh 파일 작업
#!/bin/bash
NDK=d:/devel/sdk/android/ndk-bundle
SYSROOT=$NDK/platforms/android-26/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64
CUR=`cygpath -m $(pwd)`
TEMPDIR=`cygpath -m /tmp`
TMP=`cygpath -m /tmp`
TMPDIR=`cygpath -m /tmp`
function build_one
{
./configure_android \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--cpu=armv7-a \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make -j4
make install
}
CPU=arm
PREFIX=$CUR/android/$CPU
ADDI_CFLAGS="-marm"
build_one
강좌에서는 static 으로 빌드 후에 shared로 빌드하라고 되어 있는데 딱히 그럴 필요는 없는 것 같다.
경로 부분 확인해서 환경과 맞도록 세팅
윈도우의 편집기에서 작업했다면 줄바꿈이 CRLF이므로 LF로 변경한다.
cygwin에서 dos2unix를 이용하던지 notepad++에서 바꾸기로 변경.
빌드하고 열심히 일하겠지? 하고 작업관리자를 열어봤는데 cpu가 놀고 있네.
make -j4 옵션 추가해서 cpu를 막 굴려주자.
사양이 좋다면 숫자를 더 늘려주도록.
다른 플랫폼의 so를 빌드하고 싶다면
https://developer.android.com/ndk/guides/standalone_toolchain.html
참조해서 toolchain, cpu 변경해서 빌드
5. Build
cygwin을 실행하고 ffmpeg 폴더로 이동해서
./build_android_so.sh 실행
빌드 시작시의 파일 없다는 메시지는 위에서 수정한 심볼릭 링크 경로 문제이니 무시.
정상적으로 성공했다면 ffmpeg 폴더 내에 android/arm 폴더가 생성되고 그 안에 header 파일 및 so 파일이 생성된다.
'Programming > Android' 카테고리의 다른 글
Android NDK r7b 설치 및 Sample 돌려보기 (0) | 2012.02.21 |
---|