make installclean
再作 make
否則好像沒效,BoardConfig.mk的修改不會進去..
.. 這樣更慘,有些 bin/ 下的 tool 不會重 build XD.
所以還是乖乖用 find 找出有用到的 module,一一touch 後再 mm ?
Cleanup 好像是
m clean
如果要 clean 所有 build 出來的 binary 檔:
m clobber
... 他說這個 command 就是把 out 這個 folder 刪掉 >_<
Audio 是在 framework/base/libs Android 有提供一個 AudioStub,讓 Hardware 的 Audio 還沒好的時候,可以用這個Stub 提供 Audio 需要的 Interface。 要使用這個 Stub,需要在 BoardConfig.mk 裡 Enabel
BOARD_USES_GENERIC_AUDIO := true
這樣 framework/base/libs/audioflinger 的 Android.mk 就會 define.
ifeq ($(strip $(BOARD_USES_GENERIC_AUDIO)),true)
LOCAL_CFLAGS += -DGENERIC_AUDIO
這樣在 AudioHardwareInterface.cpp ..
AudioHardwareInterface* AudioHardwareInterface::create()
{
AudioHardwareInterface* hw = 0;
char value[PROPERTY_VALUE_MAX];
#ifdef GENERIC_AUDIO
hw = new AudioHardwareGeneric();
#else
還有 AudioPolicyService.cpp ..
AudioPolicyService::AudioPolicyService()
: BnAudioPolicyService() , mpPolicyManager(NULL)
{
char value[PROPERTY_VALUE_MAX];
// start tone playback thread
mTonePlaybackThread = new AudioCommandThread(String8(""));
// start audio commands thread
mAudioCommandThread = new AudioCommandThread(String8("ApmCommandThread"));
#if (defined GENERIC_AUDIO) || (defined AUDIO_POLICY_TEST)
mpPolicyManager = new AudioPolicyManagerBase(this);
LOGV("build for GENERIC_AUDIO - using generic audio policy");
#else
改完build 還是會有一堆問題...例如...用 showcommands 看 GENERIC_AUDIO 好像沒 define..
最後好像是 touch 所有的 audioglinger/ 下的 file 再重 build 才看到。
實際使用時,因為這次 AudioCodec hardware 還沒 ready,所以一旦access 到 codec 就會 down 機。 上面的 code 還是會 access 到 codec,所以要稍微修改一下,不嘗試 new AudioHardwareGeneric(),直接 new AudioHardwareStub( ):
AudioHardwareInterface* AudioHardwareInterface::create()
{
/*
* FIXME: This code needs to instantiate the correct audio device
* interface. For now - we use compile-time switches.
*/
AudioHardwareInterface* hw = 0;
char value[PROPERTY_VALUE_MAX];
#if 0
#ifdef GENERIC_AUDIO
hw = new AudioHardwareGeneric();
#else
// if running in emulation - use the emulator driver
if (property_get("ro.kernel.qemu", value, 0)) {
LOGD("Running in emulation - using generic audio driver");
hw = new AudioHardwareGeneric();
}
else {
LOGV("Creating Vendor Specific AudioHardware");
hw = createAudioHardware();
}
#endif
if (hw->initCheck() != NO_ERROR) {
LOGW("Using stubbed audio hardware. No sound will be produced.");
delete hw;
hw = new AudioHardwareStub();
}
#else
hw = new AudioHardwareStub();
LOGW("Using stubbed audio hardware. No sound will be produced.");
#endif // if 0
好像是因為 GENERIC_AUDIO 沒有 A2DP 的 support,所以也要把 bluetooth 的 A2DP profile disable.
沒有留言:
張貼留言