서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.
안녕하세요.. 드디어 글을 쓸 수 있게 되었네요 ^^.
요즘 한창 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'
허걱....4.2.2r1 이라니요...ㅠ.ㅠ
일단 저도 장비가 4.2.1 까지 밖에 없어서(JB-MR1.1) 거기서 먼저 테스트 해 본 후에야 말씀 드릴 수 있겠네요...쩝