APN 和 CarrierConfig

运营商可以在 Android 开源项目 (AOSP) 中更新其接入点名称 (APN) 信息及其特定于运营商的配置设置 (CarrierConfig)。

与您的公司电子邮件地址相关联的 Google 帐号

要更新 APN 信息或 CarrierConfig,您需要使用与有效的公司电子邮件地址相关联的 Google 帐号提交请求(例如,来自 Acme Company 公司的 APN 更新请求应来自于 foobar@acme.com 之类的电子邮件地址)。

如果您没有与公司电子邮件地址相关联的 Google 帐号,请从浏览器中退出登录所有 Gmail 帐号(建议您使用无痕式窗口等无痕浏览功能,以免与其他帐号混淆),然后使用您的公司电子邮件地址创建 Google 帐号

准备本地开发环境

如果您以前从未向 AOSP 提交过代码,则需要初始化您的构建环境,熟悉相关工具,并了解如何提交补丁:

此外,我们强烈建议您使用 Google Issue Tracker 来跟踪更改。

提交 bug

  1. 转到 issuetracker.google.com,然后使用您的公司电子邮件地址登录(请参阅与您的公司电子邮件地址相关联的 Google 帐号)。
  2. 登录后,点击屏幕左侧的 Create issue
  3. 组件中,依次选择 Android Public Tracker > 框架
  4. 根据情况继续进行 APN 更新CarrierConfig 更新,以输入标题和说明。

APN bug

请按照如下方式设置 bug 属性:

标题:添加/修改/移除 CarrierXYZ 的 APN

说明:请添加关于您所请求更改的详细说明,其中包括 APN 设置本身。

CarrierConfig bug

请按照如下方式设置 bug 属性:

标题:CarrierXYZ 的配置更改

说明:添加关于您所请求更改的详细说明。

提交更改

要进行更改,请执行以下步骤:

  1. 确定要更改的文件。
  2. 对相应的文件进行更改。
  3. 请按照提交补丁的相关说明操作,将相关更改提交到本地代码库,并请注意提交消息指南(包括建议的格式)。
  4. 将您所做的更改提交到您的个人历史记录后,使用 repo upload 命令将其上传到 Gerrit。
  5. 上传成功后,Repo 会提供 Gerrit 上新网页的网址。您可以使用此网址来执行以下操作:
    • 在审核服务器上查看您的补丁程序
    • 添加注释
    • 为您的补丁程序申请特定审核者

APN 语法

Android 项目名称 - device/sample

文件名 - etc/apns-full-conf.xml(Google Git 主链接

该文件包含 XML 格式的 APN 设置,并充当示例文件,因此 Android 设备的行为不会发生任何变化。

典型的 APN 配置如下所示:

<apn carrier="CarrierXYZ"
      mcc="123"
      mnc="123"
      apn="carrierxyz"
      type="default,supl,mms,ims,cbs"
      mmsc="http://mms.carrierxyz.com"
      mmsproxy="0.0.0.0"
      mmsport="80"
      bearer_bitmask="4|5|6|7|8|12"
/>

测试

  1. 连接您拥有 root 权限的任何 Android 设备。
  2. 将设置添加到 /etc/apns-conf.xml。
  3. 重置 APN 设置。
  4. 在 APN 设置中,确认已正确加载配置文件。
  5. 对于每个配置文件,都请测试数据连接、WLAN 热点和 MMS,以确保其能够正常运行。

提交消息

[Example - "Add CarrierXYZ apns to sample apns"]
Bug: [Issue ID from Google Issue Tracker]
Test: No change to behavior as this is only a sample file

示例 CL

要获取示例 CL,请参阅示例 BICS APN

CarrierConfig 语法

项目名称 - platform/packages/apps/CarrierConfig

文件名 - assets/carrier_config_.xml(Google Git 主链接

按相关的 MCC/MNC 元组识别资源文件夹中的相关 XML 文件。该文件包含 XML 格式的运营商配置对象。系统会在 CarrierConfigManager 下将属性名称定义为键,并使用后缀指明值的类型 (int/string/bool)。

典型的 int/string/bool 属性如下所示:

<int name="vvm_port_number_int" value="5499" />
<string name="vvm_type_string">vvm_type_omtp</string >
<boolean name="vvm_cellular_data_required_bool" value="true" />

提交消息

[Example - "Add VVM settings for CarrierXYZ"]

[Example - "Updated <mccmnc> carrier config file to include VVM settings
as defined by CarrierXYZ."]

Bug: [Issue ID from Google Issue Tracker]
Test: [Testing notes]

示例 CL

要获取示例 CL,请参阅经过更新的运营商配置文件

请求审核

要请求审核,请执行以下操作:

  • 转到相应更改的 Gerrit 网址,然后将“android-carrier-config-review@google.com”添加为审核者。
  • 您还可以将您的 Google 联系人添加到 Gerrit 上的抄送名单中。
  • 为了进行跟踪,您可以将问题指派人更改为“android-carrier-config-review@google.com”。

在提交内容通过审核和验证流程之后,Gerrit 会自动将更改合并到公开代码库。其他用户可以运行 repo sync 以将更新提取到他们的本地客户端。