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
Revision 7b(r7b)를 설치해보기로 했다.

Eclipse, Android SDK와 ADT가 설치되어 있다고 가정한다.


1. NDK및 Cygwin 설치

1). Android NDK 다운로드 및 설치

http://developer.android.com/sdk/ndk/index.html

다운로드하고 원하는 경로에 압축을 해제한다.
(경로가 간단하면 cybwin에서 찾아들어갈때 편하다)


2). Cygwin 설치

http://www.cygwin.com/
 

setup.exe를 다운받아 설치를 진행한다.
기본 설정으로 c:\cygwin에 설치했다.

설치 진행시에 국내의 미러 사이트를 입력하면 빠르게 진행된다.
ftp://ftp.kreonet.re.kr
ftp://ftp.kaist.ac.kr
두 곳중에 빠른 곳을 이용하면 되겠다.

패키지 선택시에 devel 항목 밑에 있는 make를 추가한다.

설치가 완료되면 Cygwin Terminal을 실행하고 make -v를 실행해서 설치가 제대로 됐는지 확인한다.



2. hello-jni Sample 돌려보기

1) Cygwin Terminal 실행


2) 샘플 폴더의 hello-jni 로 경로를 이동

cd /cygdrive/d/Component/Java/android-ndk-r7b/

cd samples/hello-jni/jni



3) ndk-build로 빌드

ndk-build
D:\Component\Java\android-ndk-r7b에 있으므로

../../../ndk-build


4) libs 폴더 확인

libs 
폴더에 armeabi\libhello-jni.so가 생성되었는지 확인한다.


5) Android Project 생성 및 실행

Eclipse를 실행하고 File->New->Android Project로 프로젝트를 생성한다.


Create project from existing source를 선택하고

Location을 샘플폴더인 \android-ndk-r7b\samples\hello-jni로 설택한다.
(내 경우는 D:\Component\Java\android-ndk-r7b\samples\hello-jni

에뮬레이터나 기기를 연결해서 hello-jni.c에서 리턴한 문자열이 제대로 출력되는지 확인한다.

혹시 Problems에 빨간 글씨로 뜨는게 있다면 ADT나 Android SDK를 업데이트한다.



아래 사진처럼 나오면 성공~


 


'Programming > Android' 카테고리의 다른 글

Windows에서 Android용으로 FFmpeg 빌드해보기  (2) 2017.08.22

+ Recent posts