AndroidL 音频文件编译过程
来源:互联网 发布:洛阳师范网络 编辑:程序博客网 时间:2024/06/06 01:00
此文主要记录sounds下各种音频文件的编译过程
1.frameworks/base/data/sounds下音频文件的编译
ALARM_FILES【frameworks/base/data/sounds/alarms/material/ogg/】NOTIFICATION_FILES【frameworks/base/data/sounds/notifications/material/ogg/】
RINGTONE_FILES【frameworks/base/data/sounds/ringtones/material/ogg/】
EFFECT_FILES【frameworks/base/data/sounds/effects/ogg/】
MATERIAL_EFFECT_FILES【frameworks/base/data/sounds/effects/material/ogg/】
frameworks/base/data/sounds/AllAudio.mk文件中列出了所有要编译的声音文件,可以用generate-all-audio.sh工具来生成
........
#将Alarm_Beep_01.ogg文件拷贝到system/media/audio/alarms/Alarm_Beep_01.ogg
$(LOCAL_PATH)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \
........
2.通过当前目录下的mk文件来生成AllAudio.mk文件(工具中有个问题,当多个mk文件中定义了某个目标文件时会选择其中的一个,具体是哪个有待确认)
/frameworks/base/data/sounds/generate-all-audio.sh
........
cat > AllAudio.mk << EOF #从这里开始(EOF)的内容都写入到新建的AllAudio.mk文件中
........
LOCAL_PATH := frameworks/base/data/sounds
PRODUCT_COPY_FILES += \\
EOF #到这里结束
cat OriginalAudio.mk AudioPackage*.mk | #列出OriginalAudio.mk与AudioPackage*.mk文件中的内容
grep \\\$\(LOCAL_PATH\).*: | #在这些内容中过滤出所有包含$(LOCAL_PATH)的内容
cut -d : -f 2 | #剪切所有内容中带分隔符:的第2个field前面的内容
cut -d \ -f 1 | #剪切所有内容中带分隔符\的第1个field前面的内容
sort -u | #删除重复的内容
while read DEST
do
echo -n \ \ \ \ >> AllAudio.mk #-n换行且光标移至首行,并输入四个空格
cat *.mk |
grep \\\$\(LOCAL_PATH\).*:$DEST |
tr -d \ \\t | #删除空格与\t符号
cut -d : -f 1 | #剪切所有内容中带分隔符:的第1个field前面的内容
sort -u | #删除重复的内容
tail -n 1 | #从最后一行开始读取指定文件
tr -d \\n >> AllAudio.mk #删除换行符
echo :$DEST\ \\ >> AllAudio.mk #输入:与$DEST中内容以及在后面输入一个空格与\
done
echo >> AllAudio.mk
3.AllAudio.mk编译调用过程
在./build/target/product/full_base.mk中
........
# Get some sounds
$(call inherit-product-if-exists, frameworks/base/data/sounds/AllAudio.mk)#编译AllAudio.mk文件
........
在/build/target/product/aosp_base.mk中
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)#只有一句,编译full_base.mk
在./build/target/product/full_base_telephony.mk中
........
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base.mk)#编译aosp_base.mk
$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony.mk)
在/build/target/product/aosp_base_telephony.mk中
$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) #只有一句,编译full_base_telephony.mk
在/build/target/product/full_x86_64.mk中
$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk) #编译aosp_base_telephony.mk
........
4.google源码中音频文件的重复部分
google源码编译后,在系统铃声中会有一些重复的铃声,其中Argon,Helium,Krypton,Neon,Oxygen都有重复的文件,这里需要将这些删除
在frameworks/base/data/sounds/AllAudio.mk 中将Argon,Helium,Krypton,Neon,Oxygen几行删除(注释掉这几行会编译报错,需要删除)
0 0
- AndroidL 音频文件编译过程
- 为Nexus5编译AndroidL固件
- 音频文件
- 音频文件
- 音频文件
- Android5.0 ROM,AndroidL ROM编译步骤及刷机步骤
- AndroidL 源码编译 预置GMS包与第三方应用 系统属性管理
- ubuntu16.04 LTS 编译 AndroidL 报错 recipe commences before first targe
- AndroidL系列-CardView
- androidL,自定义状态栏
- AndroidL ANR分析整理
- AndroidL JNI技术
- AndroidL 传感器系统
- AndroidL 预置APK
- androidl开机动画流程
- AndroidL分析之Keyguard
- 编译过程
- 编译过程
- HTML学习 <9>
- const char*, char const*, char*const的区别
- Spark 中的RDD是个什么鬼,我们为什么需要它?
- Java线程安全总结
- Java 并发包中的读写锁及其实现分析
- AndroidL 音频文件编译过程
- 实时软件编程问题
- OpenEmbedded 入门 (一):OpenEmbedded 简介
- 玩转Visual Studio-多工程开发
- C++默认参数在声明还是定义确定?
- UWP开发之StreamSocket聊天室 (一)
- Android支付宝和友盟推送SDK编译冲突Unable to execute dex: Multiple dex files define Lcom/ta/utdid2/
- 从”JAVA“而终 3 :配置java运行环境以及Myeclipse的安装
- unity制作斗地主游戏大致流程