苹果下的环境变量

本文介绍在Mac OS X Lion及后续版本中如何为特定的应用程序配置环境变量。由于系统不再支持通过Evironment.plist文件进行全局配置,本文提供了一种替代方案:通过修改.app/Contents/Info.plist文件中的LSEnvironment字典来实现。

mac os x 10.7.4 以前可以使用 Evironment.plist 来控制全局的环境变量.

但到了 Lion 以后,这个方式被废除了. 同时 修改配置文件的一些方式,也最多会影响到终端的环境变量了..

On Mountain Lion all the /etc/paths and /etc/launchd.conf editing doesn't take any effect!
Apple's Developer Forums say:
"Change the Info.plist of the .app itself to contain an "LSEnvironment" dictionary with the environment variables you want.
~/.MacOSX/environment.plist is no longer supported."




那么如何配置.app的环境变量呢?

最开始我使用了比较trick的方式

从终端运行app.然后app继承了终端的环境变量...


慢慢在英文的世界中,找到如下方案.

Change the Info.plist of the .app itself to contain an "LSEnvironment" dictionary with the environment variables you want.

There will be an Info.plist per application in WhatEver.app/Content/Info.plist.
You can edit it.
Click the "+" on the Information Property List and add a dictionary called LSEnvironment.
If you type it correctly it will rename it to Environment variables. And It changed to a dictionary.
Then you click the "+" by that for each environment variable you want to add under this dirctionary.
QTDIR    /Users/...


关闭应用程序,重启生效...
最关键的一步:你需要使你刚才的改动刷新到系统里面去.
you need to force update the LaunchService database in the Terminal by using the lsregister command:
 使用如下命令.
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/eclipse/XXXX.app


你现在是一名蓝牙工程师,讲解下面的log: 搜索 "bta_ag_sco_event" (1个文件中匹配到36次,总计查找1次) C:\Users\rivotek\Downloads\0728\log\20250728165337.main.log (匹配36次) 行 191380: 07-28 16:50:01.297 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_SHUTDOWN_ST[0] event:BTA_AG_SCO_LISTEN_E[0] 行 191382: 07-28 16:50:01.297 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_SHUTDOWN_ST(0x00)]->[BTA_AG_SCO_LISTEN_ST(0x01)] after event [BTA_AG_SCO_LISTEN_E(0x00)] 行 274756: 07-28 16:51:47.576 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_LISTEN_ST[1] event:BTA_AG_SCO_OPEN_E[1] 行 274763: 07-28 16:51:47.576 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_LISTEN_ST(0x01)]->[BTA_AG_SCO_CODEC_ST(0x02)] after event [BTA_AG_SCO_OPEN_E(0x01)] 行 276340: 07-28 16:51:47.882 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CODEC_ST[2] event:BTA_AG_SCO_OPEN_E[1] 行 276341: 07-28 16:51:47.882 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:950 bta_ag_sco_event: BTA_AG_SCO_CODEC_ST: Ignoring event BTA_AG_SCO_OPEN_E[1] 行 276479: 07-28 16:51:47.905 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CODEC_ST[2] event:BTA_AG_SCO_CN_DONE_E[3] 行 276501: 07-28 16:51:47.908 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_CODEC_ST(0x02)]->[BTA_AG_SCO_OPENING_ST(0x03)] after event [BTA_AG_SCO_CN_DONE_E(0x03)] 行 276686: 07-28 16:51:47.939 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPENING_ST[3] event:BTA_AG_SCO_CONN_OPEN_E[7] 行 276687: 07-28 16:51:47.939 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_OPENING_ST(0x03)]->[BTA_AG_SCO_OPEN_ST(0x06)] after event [BTA_AG_SCO_CONN_OPEN_E(0x07)] 行 295009: 07-28 16:51:56.779 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPEN_ST[6] event:BTA_AG_SCO_CLOSE_E[5] 行 295014: 07-28 16:51:56.779 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_OPEN_ST(0x06)]->[BTA_AG_SCO_CLOSING_ST(0x07)] after event [BTA_AG_SCO_CLOSE_E(0x05)] 行 295580: 07-28 16:51:56.838 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CLOSING_ST[7] event:BTA_AG_SCO_CONN_CLOSE_E[8] 行 295583: 07-28 16:51:56.838 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_CLOSING_ST(0x07)]->[BTA_AG_SCO_LISTEN_ST(0x01)] after event [BTA_AG_SCO_CONN_CLOSE_E(0x08)] 行 311318: 07-28 16:52:09.208 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_LISTEN_ST[1] event:BTA_AG_SCO_OPEN_E[1] 行 311321: 07-28 16:52:09.208 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CODEC_ST[2] event:BTA_AG_SCO_CN_DONE_E[3] 行 311328: 07-28 16:52:09.209 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_CODEC_ST(0x02)]->[BTA_AG_SCO_OPENING_ST(0x03)] after event [BTA_AG_SCO_CN_DONE_E(0x03)] 行 311329: 07-28 16:52:09.209 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_LISTEN_ST(0x01)]->[BTA_AG_SCO_OPENING_ST(0x03)] after event [BTA_AG_SCO_OPEN_E(0x01)] 行 311470: 07-28 16:52:09.233 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPENING_ST[3] event:BTA_AG_SCO_CONN_OPEN_E[7] 行 311471: 07-28 16:52:09.233 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_OPENING_ST(0x03)]->[BTA_AG_SCO_OPEN_ST(0x06)] after event [BTA_AG_SCO_CONN_OPEN_E(0x07)] 行 332093: 07-28 16:52:25.731 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPEN_ST[6] event:BTA_AG_SCO_CLOSE_E[5] 行 332099: 07-28 16:52:25.732 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_OPEN_ST(0x06)]->[BTA_AG_SCO_CLOSING_ST(0x07)] after event [BTA_AG_SCO_CLOSE_E(0x05)] 行 332393: 07-28 16:52:25.768 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CLOSING_ST[7] event:BTA_AG_SCO_CONN_CLOSE_E[8] 行 332396: 07-28 16:52:25.768 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_CLOSING_ST(0x07)]->[BTA_AG_SCO_LISTEN_ST(0x01)] after event [BTA_AG_SCO_CONN_CLOSE_E(0x08)] 行 364380: 07-28 16:53:51.605 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_LISTEN_ST[1] event:BTA_AG_SCO_OPEN_E[1] 行 364383: 07-28 16:53:51.605 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CODEC_ST[2] event:BTA_AG_SCO_CN_DONE_E[3] 行 364393: 07-28 16:53:51.605 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_CODEC_ST(0x02)]->[BTA_AG_SCO_OPENING_ST(0x03)] after event [BTA_AG_SCO_CN_DONE_E(0x03)] 行 364394: 07-28 16:53:51.605 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_LISTEN_ST(0x01)]->[BTA_AG_SCO_OPENING_ST(0x03)] after event [BTA_AG_SCO_OPEN_E(0x01)] 行 368083: 07-28 16:53:52.026 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPENING_ST[3] event:BTA_AG_SCO_OPEN_E[1] 行 368084: 07-28 16:53:52.026 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1015 bta_ag_sco_event: BTA_AG_SCO_OPENING_ST: Ignoring event BTA_AG_SCO_OPEN_E[1] 行 368806: 07-28 16:53:52.121 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPENING_ST[3] event:BTA_AG_SCO_CONN_OPEN_E[7] 行 368808: 07-28 16:53:52.121 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_OPENING_ST(0x03)]->[BTA_AG_SCO_OPEN_ST(0x06)] after event [BTA_AG_SCO_CONN_OPEN_E(0x07)] 行 394142: 07-28 16:54:10.988 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0x0000 state:BTA_AG_SCO_OPEN_ST[6] event:BTA_AG_SCO_CLOSE_E[5] 行 394144: 07-28 16:54:10.989 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_OPEN_ST(0x06)]->[BTA_AG_SCO_CLOSING_ST(0x07)] after event [BTA_AG_SCO_CLOSE_E(0x05)] 行 394584: 07-28 16:54:11.058 3703 4045 I bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:822 bta_ag_sco_event: device:xx:xx:xx:xx:ba:5f index:0xffff state:BTA_AG_SCO_CLOSING_ST[7] event:BTA_AG_SCO_CONN_CLOSE_E[8] 行 394587: 07-28 16:54:11.058 3703 4045 W bluetooth: packages/modules/MiuiBluetooth/system/bta/ag/bta_ag_sco.cc:1331 bta_ag_sco_event: SCO_state_change: [BTA_AG_SCO_CLOSING_ST(0x07)]->[BTA_AG_SCO_LISTEN_ST(0x01)] after event [BTA_AG_SCO_CONN_CLOSE_E(0x08)]
07-30
### 三级标题:蓝牙日志分析:解读bta_ag_sco_event事件及其状态转换流程 在蓝牙通信中,`bta_ag_sco_event`事件是蓝牙音频网关(AG)模块中用于处理SCO链路状态变化的核心机制SCO链路蓝牙HFP(Hands-Free Profile)协议中的重要组成部分,用于传输高质量的语音数据,尤其是在接听电话时建立音频连接[^1]。 在日志中,`bta_ag_sco_event`事件通常伴随着状态变化,例如SCO连接建立、断开、重新连接等。这些事件由蓝牙协议栈中的`bta_ag_sco_open`函数触发,其调用时机决定了SCO链路建立方式和时机[^1]。例如: ```c bta_ag_sco_open(p_scb, p_data); ``` 该函数的调用会引发一系列状态变化事件,包括但不限于: - `BTA_AG_SCO_OPEN_EVT`: 表示SCO链路已成功打开。 - `BTA_AG_SCO_CLOSE_EVT`: 表示SCO链路已关闭。 - `BTA_AG_SCO_CONN_EVT`: 表示SCO连接建立。 - `BTA_AG_SCO_DISCONN_EVT`: 表示SCO连接已断开。 这些事件的处理流程通常在`bta_ag_sco_event`函数中完成,该函数会根据当前的状态和事件类型执行相应的操作。例如,在接听电话时,`bta_ag_send_call_inds`函数会被调用,用于发送呼叫状态指示,从而触发SCO链路建立[^1]。 ```c bta_ag_send_call_inds(p_scb, p_data); ``` 在日志中,可以观察到`bta_ag_sco_event`相关的状态变化信息,例如: ``` 07-28 16:53:53.334 1389 15250 I PAL: Stream: connectStreamDevice_l: 1180: stream is already connected to device 29 name PAL_DEVICE_IN_BLUETOOTH_SCO_HEADSET - return ``` 该日志表明音频流已经连接蓝牙SCO耳机设备,表明SCO链路已经成功建立。 此外,`bta_ag_sco_event`事件的处理还涉及到底层协议栈的交互,例如RFCOMM协议。RFCOMM协议用于模拟串口通信,确保音频数据能够正确传输。在日志中,可以观察到相关的调用信息,例如: ``` 07-28 16:50:01.995 1584 5947 D APM::HwModule: createDevice: adding dynamic device AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, @:SUPPRESSED to module primary ``` 该日志表明系统正在创建蓝牙SCO耳机设备,并将其添加到音频硬件模块中,为后续的音频流传输做好准备[^1]。 在处理`bta_ag_sco_event`事件时,还需要考虑两种不同的音频连接模式:inband和no-inband。这两种模式在HFP规范中定义了不同的SCO链路建立流程。例如,inband模式要求在接听电话之前建立SCO链路,而no-inband模式则允许在电话接通之后建立链路[^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值