Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 如何在android 中編譯alsa-utils工具

如何在android 中編譯alsa-utils工具

編輯:關於Android編程

                                                               如何在android 中編譯alsa-utils工具

最近在看ALSA 的driver,嘗試了在android 中編譯alsa-utils工具,下面講述下,我是如何進行編譯以及過程中遇到的問題如何解決的:

首先我從ALSA 官方網上下載了alsa-utils-1.0.23版本的工具,因為我android 的alsa-lib 也是1.023版本的,防止版本不一樣出現問題,我就選擇了版本一樣,我們的alsa-lib放的路徑是在android_source/external/alsa-lib目錄下面,我們下載的alsa-utils-1.023工具包也下載放在裡面。

接下來我們需要完成以下幾個動作:

1、在alsa-utils下面創建一個Android.mk

寫的內容是:

[plain]
ifeq ($(strip $(BOARD_USES_ALSA_AUDIO)),true) 
 
 
LOCAL_PATH:= $(call my-dir) 
 

# Build aplay command 

 
include $(CLEAR_VARS) 
LOCAL_CFLAGS := \ 
        -fPIC -D_POSIX_SOURCE \ 
        -DALSA_CONFIG_DIR=\"/system/usr/share/alsa\" \ 
        -DALSA_PLUGIN_DIR=\"/system/usr/lib/alsa-lib\" \ 
        -DALSA_DEVICE_DIRECTORY=\"/dev/snd/\" 
 
LOCAL_C_INCLUDES:= \ 
        $(LOCAL_PATH)/include \ 
        $(LOCAL_PATH)/android \ 
        external/alsa-lib/include 
 
LOCAL_SRC_FILES := \ 
        aplay/aplay.c 
 
LOCAL_MODULE_TAGS := debug 
LOCAL_MODULE := alsa_aplay 
LOCAL_SHARED_LIBRARIES := \ 
        libasound \ 
        libc 
include $(BUILD_EXECUTABLE) 
上面我只寫了個編譯aplay工具的代碼,別的工具也是一樣的寫法
2、接下來進入alsa-utils工具包裡面進行創建sys目錄和aconfig.h文件,在aconfig.h文件裡面編寫以下內容

[plain]
#define DATADIR "/system/usr/share/alsa" 
 
#define rindex strrchr 
 
#define open64 open 
 
#undef __swab16 
 
#define __swab16(x)  __arch__swab16((x)) 
 
#undef __swab32 
 
#define __swab32(x)  __arch__swab32((x)) 

3、進入第2步中創建的sys目錄,在sys目錄中創建signal.h頭文件,在這個頭文件中寫如以下內容
[plain] 
#include <signal.h> 
4、接下來你直接編譯android 就可以了,在編譯過程中可能出現以下 錯誤“
4.1:kernel/common/linux/un.h:18: error: expected specifier-qualifier-list before 'sa_family_t

那是因為我們在alsa-utils/alsactl/init_parse.c裡面在include un.h之前沒有#include <sys/socket.h>,你只要在這之前include這個頭文件就解決了

4.2:還有可能遇到這個錯誤:在aplay.c裡面會提示報錯'S_IRGRP' undeclared (first use in this function,你只要在在aplay.c裡面添加一個頭文件:#include <sys/stat.h>,這樣就解決了 www.2cto.com

4.3:接下來可能語言到這樣的錯誤:speaker-test.c裡面報wav_file_dir沒有定義,這個值是用來定義你的wav文件存放在pad中的位置的,你隨便放在哪裡,我定義的路徑 就是在/sdcard目錄下面

經過上面的種種修改,alsa-utils工具終於編譯成功了

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved