背景: Rk3399上蓝牙SCO通话,发现音频很卡,后定位发现是原生的phone这个apk引起,于是屏蔽处理
屏蔽phone流程
1 ps进程查找包名
radio 656 197 1595616 103736 0 0000000000 S com.android.phone2 对应包名查找定位文件
package="com.android.phone"
######:~/Workspace/rk3399/RK3399-JD4-Android7.1$ find . -iname AndroidManifest.xml |xargs grep -nsr package=\"com.android.phone\"
./packages/services/Telephony/AndroidManifest.xml:19: package="com.android.phone"3 查看Android.mk文件
Android.mk:30:LOCAL_PACKAGE_NAME := TeleService
其对应apk为TeleService.apk
######:~/Workspace/rk3399/RK3399-JD4-Android7.1/out/target/product/nct_box/system$ find . -name TeleService.apk
./priv-app/TeleService/TeleService.apk4 编译屏蔽处理
4.1 RK3399-JD4-Android7.1/build/target/product/core.mk #TeleService \
4.2 RK3399-JD4-Android7.1/device/generic/armv7-a-neon/mini_common.mk:37: #TeleService \
4.3.RK3399-JD4-Android7.1/device/rockchip/rk3399/rk3399.mk: #TeleService 5(若这里改了仍然编译了TeleService.apk,则可以修改LOCAL_PACKAGE_NAME及其它名字或不命名)
修改RK3399-JD4-Android7.1/packages/services/Telephony/Android.mk,更改名字,使其不编译
#LOCAL_PACKAGE_NAME := TeleService
LOCAL_PACKAGE_NAME := BackTeleService特别注意,有的模块不一定在generic_no_telephony.mk(内部引用了core.mk)中增加,可通过find . -name "*.mk" | xargs grep "TeleService"来查看在哪个mk里面声明了。由于大部分企业都没有统一的管理规范,一个模块有时候会在多个mk中增加,所以最快的方式就是更改packages/services/Telephony/Android.mk的LOCAL_PACKAGE_NAME ,或者置空。
其实 编译屏蔽处理正确方式应该在PRODUCT_DEL_PACKAGES中添加TeleService,注意,在make前,先make installclean一下
PRODUCT_PACKAGES += \
Telecom \
TelephonyProvider \
MmsServicePRODUCT_DEL_PACKAGES += \
Music \
Calendar \
Contacts \
LiveTv \
Email \
DeskClock \
QuickSearchBox \
DocumentsUI \
TvSettings \
Launcher3 \
Launcher2 \TeleService
######################################################
#### 以下为网摘,作个记录 ##########################
###################################################### LOCAL_PACKAGE_NAME 指定APP应用名称
LOCAL_MODULE 除应用(apk)以LOCAL_PACKAGE_NAME指定模块名以外,其余的模块都以LOCAL_MODULE指定模块名。
mk 解释LOCAL_PACKAGE_NAME:当前编译出来的安装包的名字
例如:LOCAL_PACKAGE_NAME := AmPmListening
然后以如下结尾:
include $(BUILD_PACKAGE)LOCAL_CERTIFICATE := platform //使用的哪种key 来给apk签名
LOCAL_MODULE: 当前编译出来的库的名字
include $(BUILD_XXX)
include $(BUILD_STATIC_LIBRARY)表示编译成静态库
include $(BUILD_SHARED_LIBRARY)表示编译成动态库。
include $(BUILD_EXECUTABLE)表示编译成可执行程序LOCAL_SRC_FILES: 当前参与编译的源文件
LOCAL_C_INCLUDES: 当前参与编译的源文件的头文件
LOCAL_MODULE_TAGS:= user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在 所有版本下都编译,默认是optional
LOCAL_CFLAGS
$(warning " JNI_H_INCLUDE = $(JNI_H_INCLUDE)") LOCAL_PRELINK_MODULE := false
115 {
116 Prelink利用事先链接代替运行时链接的方法来加速共享库的加载,它不仅可以加快起动速度,还可以减少部分内存开销,
117 是各种Linux架构上用于减少程序加载时间、缩短系统启动时间和加快应用程序启动的很受欢迎的一个工具。程序运行时的
118 动态链接尤其是重定位(relocation)的开销对于大型系统来说是很大的。
119 动态链接和加载的过程开销很大,并且在大多数的系统上, 函数库并不会常常被更动, 每次程序被执行时所进行的链接
120 动作都是完全相同的,对于嵌入式系统来说尤其如此。因此,这一过程可以改在运行时之前就可以预先处理好,即花一些时间
121 利用Prelink工具对动态共享库和可执行文件进行处理,修改这些二进制文件并加入相应的重定位等信息,节约了本来在程序
122 启动时的比较耗时的查询函数地址等工作,这样可以减少程序启动的时间,同时也减少了内存的耗用。
123 Prelink的这种做法当然也有代价:每次更新动态共享库时,相关的可执行文件都需要重新执行一遍Prelink才能保
124 证有效,因为新的共享库中的符号信息、地址等很可能与原来的已经不同了,这就是为什么 android framework代码一改动,
125 这时候就会导致相关的应用程序重新被编译。
126 这种代价对于嵌入式系统的开发者来说可能稍微带来一些复杂度,不过好在对用户来说几乎是可以忽略的。
127 }
LOCAL_SHARED_LIBRARIES 与 LOCAL_LDLIBS,LOCAL_LDFLAGS的区别:
这三个都是为了链接第三方的库
============================================================
LOCAL_LDLIBS :
链接的库不产生依赖关系,一般用于不需要重新编译的库,如库不存在,则会报错找不到。且貌似只能链接那些存在于系统目录下本模块需要连接的库。如果某一个库既有动态库又有静态库,那么在默认情况下是链接的动态库而非静态库。
例如:LOCAL_LDLIBS += -llog //在我们的代码中添加android的打印库,这个库是android直接提供的,所有我们直接区连接就行了,不用编译。 LOCAL_SHARED_LIBRARIES:会生成依赖关系,当库不存在时会去编译这个库。
LOCAL_LDFLAGS:这个编译变量传递给链接器一个一些额外的参数,比如想传递而外的库和库路径给ld
例如:LOCAL_LDFLAGS += -L$(LOCAL_PATH)/lib/ -lHWrecog –EB{EL} –O{n} …
LOCAL_LDFLAGS = $(LOCAL_PATH)/libvideodecryptkey.a
如果是非系统的第三方库,貌似只能用LOCAL_LDFLAGS方式,LOCAL_LDLIBS方式不行。
android 视频禁止麦克风 安卓屏蔽麦克风
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android平台通过RTSP服务实现摄像头麦克风共享
技术背景前些年,我们在完成Android平台RTMP直播推送模块后,遇到这样的技术需求,好多开发者希望在Android平台,实现摄像头和麦克风音视频数据采集编码打包后,对外提供RTSP(Real Time Streaming Protocol)服务。通常,这样的技术需求,需要通过集成支持RTSP服务功能的库或自己实现轻量级的RTSP服务逻辑。考虑到移动端设备的性能和实际并发诉求,简单来说,只要让A
Android RTSP服务器 Android rtsp服务 安卓rtsp服务 Android RTSP 大牛直播SDK -
Android平台RTMP推送|轻量级RTSP服务如何实现麦克风|扬声器声音采集切换
技术背景我们在做Android端同屏的时候,开发者希望可以高版本的Android系统上,在设备支持的前提下,可以采集到扬声器输出的audio,并支持和麦克风采集的audio相互切换,实现无纸化|智慧教室同屏不同audio模式的输出。Android系统出于安全和隐私的考虑,默认并不允许应用程序直接访问系统级别的音频输出。从Android 10(API级别29)开始,Android引入了媒体投影API
Android采集扬声器声音 Android采集扬声器 Android扬声器播放声音 Android同屏 大牛直播SDK -
Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务
技术背景好多开发者,希望我们能系统的介绍下无纸化同屏的原理和集成步骤,以Android平台为例,无纸化同屏将Android设备上的屏幕内容实时投射到另一个显示设备(如Windows终端、国产化操作系统或另一台Android设备)上,从而实现多屏互动和内容的无缝共享。技术考量指标本文以大牛直播SDK Android同屏采集推送为例,介绍下我们前些年做Android同屏采集推送的时候,一些注意点:声明
Android屏幕录制 Android屏幕投影 Android同屏 Android采集屏幕 大牛直播SDK