서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

안녕하세요.. 드디어 글을 쓸 수 있게 되었네요 ^^.

요즘 한창 NDK와 안드로이드 미디어 프레임워크 쪽을 공부하고 있는 초보청년개발자입니다.


먼저 질문하기에 앞서 안드로이드의 모든 것 NDK 저자 두분께 감사의 말씀을 드립니다~

정말 많은 공부가 되고 있습니다 ㅎ


질문드릴께요~


책 내용중에서 PDK를 이용한 네이티브 AudioFlinger 제어 예제를 테스트 중입니다.


PDK소스로 최신 젤리빈 4.2.2_r1을 사용하다보니 AudioTrack 함수들 중 인자타입이나 갯수가 변경되어

그에 맞게 audioflinger_wrapper.cpp 부분을 조금 수정 하였습니다.


문제는 build/envsetup.sh 적용하고 mm 명령어로 컴파일 해서 apk파일 만들고

adb install 명령어로 apk파일을 제 넥서스7에 설치해보려고 하니


Failure [INSTALL_FAILED_DEXOPT] 에러가 뜨면서 설치가 되질 않고..


최초 설치 후 한번 더 설치를 해보려고 하면


Failure [INSTALL_FAILED_UID_CHANGED] 에러가 뜨네요..



apk파일을 만들 때 문제가 있는 것 같습니다.ㅠㅠ.


혹시나 해서 안드로이드 기본 프로젝트를 두개를 생성해서 테스트 해보았습니다.

하나는 이클립스에서 apk 생성

다른 하나는 android.mk 파일과 mm 명령어를 통해 apk 생성


두가지 apk로 adb install로 기기에 설치 시도를 해보았는데

이클립스에서 생성한 apk 파일만 성공적으로 설치되고

android.mk 파일과 mm 명령어로 생상한 apk 파일은 위와 같은 에러가 계속 뜹니다. ㅠㅠ


아직 지식이 해박하지 못하여 제가 놓친 부분이 있을 수도 있을 것 같네요 ^^:;


조언 부탁드리겠습니다~~!



참고용 로그 첨부해 보겠습니다

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=4.2.2

TARGET_PRODUCT=full

TARGET_BUILD_VARIANT=eng

TARGET_BUILD_TYPE=release

TARGET_BUILD_APPS=

TARGET_ARCH=arm

TARGET_ARCH_VARIANT=armv7-a

HOST_ARCH=x86

HOST_OS=linux

HOST_OS_EXTRA=Linux-2.6.38-16-generic-x86_64-with-Ubuntu-11.04-natty

HOST_BUILD_TYPE=release

BUILD_ID=JDQ39

OUT_DIR=out

============================================

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressStandard.ogg:system/media/audio/ui/KeypressStandard.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/camera_click.ogg:system/media/audio/ui/camera_click.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/LowBattery.ogg:system/media/audio/ui/LowBattery.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Dock.ogg:system/media/audio/ui/Dock.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Lock.ogg:system/media/audio/ui/Lock.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Unlock.ogg:system/media/audio/ui/Unlock.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Sceptrum.ogg:system/media/audio/ringtones/Sceptrum.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressStandard_120.ogg:system/media/audio/ui/KeypressStandard.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressSpacebar_120.ogg:system/media/audio/ui/KeypressSpacebar.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressDelete_120.ogg:system/media/audio/ui/KeypressDelete.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressReturn_120.ogg:system/media/audio/ui/KeypressReturn.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Capella.ogg:system/media/audio/notifications/Capella.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/CetiAlpha.ogg:system/media/audio/notifications/CetiAlpha.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Polaris.ogg:system/media/audio/notifications/Polaris.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Pollux.ogg:system/media/audio/notifications/Pollux.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Procyon.ogg:system/media/audio/notifications/Procyon.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Aquila.ogg:system/media/audio/ringtones/Aquila.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/ArgoNavis.ogg:system/media/audio/ringtones/ArgoNavis.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Carina.ogg:system/media/audio/ringtones/Carina.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Centaurus.ogg:system/media/audio/ringtones/Centaurus.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Cygnus.ogg:system/media/audio/ringtones/Cygnus.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Draco.ogg:system/media/audio/ringtones/Draco.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Machina.ogg:system/media/audio/ringtones/Machina.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Orion.ogg:system/media/audio/ringtones/Orion.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Pegasus.ogg:system/media/audio/ringtones/Pegasus.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Pyxis.ogg:system/media/audio/ringtones/Pyxis.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Rigel.ogg:system/media/audio/ringtones/Rigel.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Scarabaeus.ogg:system/media/audio/ringtones/Scarabaeus.ogg ignored.

PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored.

make: Entering directory `/root/Android-JellyBean'

target R.java/Manifest.java: NativeBasic2 (out/target/common/obj/APPS/NativeBasic2_intermediates/src/R.stamp)

Warning: AndroidManifest.xml already defines versionCode (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines versionName (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.

target Java: NativeBasic2 (out/target/common/obj/APPS/NativeBasic2_intermediates/classes)

Copying: out/target/common/obj/APPS/NativeBasic2_intermediates/classes-jarjar.jar

Copying: out/target/common/obj/APPS/NativeBasic2_intermediates/emma_out/lib/classes-jarjar.jar

Copying: out/target/common/obj/APPS/NativeBasic2_intermediates/classes.jar

Copying: out/target/common/obj/APPS/NativeBasic2_intermediates/noproguard.classes.jar

target Dex: NativeBasic2

Copying: out/target/common/obj/APPS/NativeBasic2_intermediates/noproguard.classes.dex

target Package: NativeBasic2 (out/target/product/generic/obj/APPS/NativeBasic2_intermediates/package.apk)

Warning: AndroidManifest.xml already defines versionCode (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines versionName (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.

Warning: AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.

 'out/target/common/obj/APPS/NativeBasic2_intermediates/classes.dex' as 'classes.dex'...

Processing target/product/generic/obj/APPS/NativeBasic2_intermediates/package.apk

Done!

Install: out/target/product/generic/system/app/NativeBasic2.odex

Install: out/target/product/generic/system/app/NativeBasic2.apk

make: Leaving directory `/root/Android-JellyBean'



고도리

2013.03.05 11:06:42
*.200.239.210

허걱....4.2.2r1 이라니요...ㅠ.ㅠ


일단 저도 장비가 4.2.1 까지 밖에 없어서(JB-MR1.1) 거기서 먼저 테스트 해 본 후에야 말씀 드릴 수 있겠네요...쩝

김바람

2013.03.05 12:14:14
*.118.69.52

고도리님~ 자답하겠습니다 ^^:;ㅎ

APK 만들기 위한 Android.mk 소스에


LOCAL_DEX_PREOPT := false 이부분을 추가 시켜주면

apk파일이 .odex와 .apk로 분리 생성되는게 아니라 하나의 .apk 파일로 생성되고

adb install 로 설치해보니 잘 설치되네요^^v.... 

근데 이젠 샘플.wav 파일재생 해보니

스피커에서 이상한 소리가 나네요;;; 소스랑 또 씨름을 해봐야 ㅠㅠ...


고도리님 늦은 시간에 답변 감사드립니다~ㅎㅎ

책 항상 감사하게 읽고 공부하고 있습니다^^

전호철

2013.03.05 20:31:34
*.162.60.10

새로 생긴 옵션인가보네요. 아니면 기본옵션이 바꼈나봐요.

옛날에는 저 옵션 없이도 잘 됐었거든요.

좋은 정보 감사합니다~

김바람

2013.03.07 03:41:02
*.118.69.52

아 그렇군요 ^^
생각보다 금방 해결해서 다행이예요 ㅋ

고도리

2013.03.06 09:28:17
*.111.12.170

소리가 이상하다면......


wrapper 파일에서 set() 함수에서 세팅하는 부분이 바뀌었을 가능성이 높습니다.

제가 삼일정도 외부에 나가 있어야 해서 테스트는 못하고(강의 및 회의), 일단 pdk에서 테스트 한 후에 소스 올려놓도록 하겠습니다.

김바람

2013.03.07 03:41:35
*.118.69.52

바쁘신 와중에도 테스트를 해주신다니 ㅠㅠ 감사합니다 ㅎ

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

사용자 로그인