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.
沒有留言:
張貼留言