안드로이드 개발 질문/답변
(글 수 45,052)
개발자 정보 게시판의 있는 안드로이드 ffmpeg 빌드 하는 강좌를 보고 개발하고 있습니다.
강좌대로 하면 안드로이드 프로젝트 밑에 libs 폴더 밑에 armeabi-v7a 폴더가 만들어지는데요
테스트를 하던중 동작을 하지않는 폰이있어서 다시 강좌를 보니 Neon 옵션 없는 cpu를 사용하는 안드로이드 폰에서는
강좌대로 하면 동작을 하지 않는다고 보았습니다. 근데 이것이 (armeabi-v7a, armeabi cpu 차이 인지 정확히 원인을 모르겠습니다)
neon이 없는 폰에서는 해당 so 파일을 찾아가고 neon있는 폰에서는 마친가지로 해당 so 파일을 찾아가게 할 수 있다고 알고 있는데요.
cpu에 따라 armeabi-v7a, armeabi cpu 따로 동작을 하던지요..
(values_en, values_ko 처럼..) 강좌는 전부 neon에 맞춰져서 만들어져 있기때문에 neon 옵션을 빼고 하려고 에러나는 부분이 너무 많아
방향을 못잡고 있습니다.
neon의 옵션 유무에 따라 컴파일을 어떻게 해야 할까요..너무 막막한 개념인것 같습니다. ㅠ
아니면 armeabi-v7a, armeabi cpu 이렇게 두가지로 나누어서 컴파일을 해야 하는 것인지..그래야 한다면 강좌에서 어떻게
수정을 해야할지 감이 오지 않습니다. 고수님들 의견부탁드립니다..
네온 없는 단말을 armeabi를 알아서 찾아가고 있는 단말은 armeabi-v7a의 so를 사용하니 둘다 넣으시면 됩니다.
단지 ffmpeg의 경우 용량이 6메가 정도 하는데.. 용량 문제가 심하니. 보통 네온버젼만 넣고 나머진 플러그인 씩으로 해서 다운 받아 사용하게 합니다.
빌드 법은 한번에 빌드하게 가르쳐드리긴 복잡한듯 해서, Neno을 제거하고 빌드하는 법을 중심으로 말씀드립니다.
1. Application.mk 파일의 APP_ABI := armeabi-v7a 를 armeabi 로 변경 (두개를 다 넣으면 둘 다 한번에 빌드 됩니다. 이 경운 런타임에서 2, 3번에서 수정한 값이 ABI에 따라 달라지게 추가 수정을 해주시면 됩니다.)
2. config.h에서 HAVE_NEON 1 를 0으로 변경
3. config.mak 파일에서 HAVE_NEON=yes 를 !HAVE_NEON=yes 로 변경 후 빌드
유사하게 HAVE_ARMV5TE, HAVE_ARMV6, HAVE_ARMV6T2, HAVE_ARMVFP 부분을 수정하면, arm api 버젼 제한에 맞춰 빌드됩니다.