編輯:關於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工具終於編譯成功了
一、簡述 最近項目組打算引入weex,並選定了一個頁面進行試水。頁面很簡單,主要是獲取數據渲染頁面,並可以跳轉到指定的頁面。跟之前使用RN 相比,weex 確實要簡單很
前言上一篇講的是如何在Android Studio中進行Junit單元測試,這篇來簡單記錄一下如何針對Activity進行單元測試。新建一個項目我這裡新建一個UnitTe
一、前言 正在搞IOS的微信支付和支付寶支付,焦頭爛額之時,天上掉下來一個Android分包工具的需求,覺得還蠻有意思,其實之前一直想搞一個類似的東西,正好趁著這次機會實
微信是我們平時生活中密不可分的社交聊天軟件,它操作簡單,功能實用,能及時進行消息的收發功能,不過有時候也經常被微信無關信息打擾,那怎麼樣進行設置呢?今天就由