UID Q&As (Symbian Signed)/zh-hans
文章信息
概述
本文对相关于Symbian Signed的UIDs作一概要介绍,并就为你的应用获取哪一范围的UID提供一些指导性意见。 你可以在Symbian OS常见问题解答知识库中找到与UIQ有关的一些问题解答。
何为UIDs?
UID (Unique Identifier,唯一识别码) 在场景中被定义为0x00000000 到0xFFFFFFFF范围内的一组32位数字。
这个范围中的各个数字可以被分配给有名有姓的实体,用于各种各样的目的。例如,某个MMP文件中的UID3 唯一地标识了系统内的二进制文件 (EXE or DLL)。
任何Symbian OS文件的首12字节被用于储存三个32位数 (UID1, UID2 and UID3) ,它们标识了文件的类型。UID3是你在自己的MMP文件中所指定的数字,以关键词UID在系统内唯一地标识你的应用,其目的则是防止一个可执行文件干扰另一个可执行文件的运行。
UIDs已经从Symbian OS v9及后续版本中得到了演化,被分为了2个范围:受保护的及不受保护的。
何为UIDs,及“受保护的”与“不受保护的”UIDs之间有何区别?
任何其值小于或等于0x7FFFFFFF的UID被分类为“受保护的”,只用于签名应用(或用于那些ROM预装应用)。软件安装器会拒绝安装某个为未经签名的应用,如果它使用了受保护区域的某个package UID。针对受保护范围的新UID的分派(见下述)会从0x20000000开始,而针对不受保护范围的新UID分派则会从0xA0000000开始。
| UID | Class Range | 目的 | |
|---|---|---|---|
| Protected Range | 0 | 0x00000000 - 0x0FFFFFFF | 仅用于开发 |
| 1 | 0x10000000 - 0x1FFFFFFF | 旧UID分派 | |
| 2 | 0x20000000 - 0x2FFFFFFF | V9 受保护UID分派 | |
| 3 | 0x30000000 - 0x3FFFFFFF | 预留 | |
| 4 | 0x40000000 - 0x4FFFFFFF | 预留 | |
| 5 | 0x50000000 - 0x5FFFFFFF | 预留 | |
| 6 | 0x60000000 - 0x6FFFFFFF | 预留 | |
| 7 | 0x70000000 - 0x7FFFFFFF | Vendor IDs | |
| Unprotected Range | 0 | 0x80000000 - 0x8FFFFFFF | 预留 |
| 1 | 0x90000000 - 0x9FFFFFFF | 预留 | |
| 2 | 0xA0000000 - 0xAFFFFFFF | V9 不受保护UID分派 | |
| 3 | 0xB0000000 - 0xBFFFFFFF | 预留 | |
| 4 | 0xC0000000 - 0xCFFFFFFF | 预留 | |
| 5 | 0xD0000000 - 0xDFFFFFFF | 预留 | |
| 6 | 0xE0000000 - 0xEFFFFFFF | 仅用于开发 | |
| 7 | 0xF0000000 - 0xFFFFFFFF | 旧UID兼容范围 |
我应使用哪个范围的UID?
Symbian OS v9之前的版本
If you are developing an application for 如果你正在为Symbian OS versions 5, 6, 7或8开发应用,那么你应该只从受保护范围获取UIDs,不去理会是否签名。
由于Symbian OS v9之前的版本的UID范围限制,将“受保护”UIDs用于所有签名的或非签名的pre-v9应用。这包括二进制文件中的UIDs和有关的.application .pkg文件(即 SISUID)。如果在pre-v9 SIS文件中使用了不受保护的UIDs,Makesis.exe工具会抛出一个错误,且应用安装后可能无法执行。
Symbian OS v9及后续版本 - 签名应用
如果你正在为Symbian OS v9及后续版本开发希望Symbian Sign签名的应用,你应该从受保护范围内申请UIDs。
Symbian OS v9及后续版本 - 非签名应用
如果你正在为Symbian OS v9及后续版本开发不希望Symbian Sign签名的应用,你应该从不受保护范围内申请UIDs。
对于SDK范例或测试代码怎么做?
对于Symbian OS pre-v9请使用来自测试范围0x01000000 - 0x0FFFFFFF的UIDs。
对于Symbian OS v9,用于SDK范例的话通常有两种选项(假设将从不受保护范围选取,因而人们无需DevCert就可以运行应用)。
- 使用不受保护范围的UIDS,0xAxxxxxxx,在你的Symbian Signed门户帐户外正式分派。
这种选项也许更适合项目(如文件管理器或游戏)
- 使用测试范围的UIDs,0xExxxxxxx,从这个范围内无冲突“随机”选取
这种选项也许更适合纯粹为演示/学习/测试目的的程序(如HelloWorld),它们不会通过一个SIS文件发行。如果你愿意,当然你也可以将第一个选项用于所有这些例子。
- 注意,这取代了pre-9.x 的0x01000000 - 0x0FFFFFFF测试范围;所以,你之前无论在哪里用过这些UIDs,现在都能将其用于Symbian OS v9。
注意:不管你使用哪个范围的UID,需要强调的是,ISV应用不应从范例中拷贝UIDs,而应该从 https://www.symbiansigned.com/app/page 获分派其自己的UIDs,从而避免产生任何的问题。
如何获取UIDs?
你必须在Symbian Signed(http://www.symbiansigned.com )上注册为用户。 注册后登录然后在左导航条区域依次点击"UIDs" 和 "Request "。
每位开发伙伴最多可以获取多少个UIDs?
所有用户每天有20 个UIDs的初始限额。 如果超过了这个数字,用户将受到一条出错消息:Daily UID Allocation Limit Exceeded(当日UID 分派超额)!如果你希望增加自己的每日额度,请在Symbian Signed论坛上发出申请同时说明你每日要求多于20个UID的理由。Symbian Signed管理员会处理你的案子,也许会修改你的Symbian Signed帐户以增加分派限额。
我以前从uid@symbiandevnet.com获得过UIDs ,我是否还能使用这些UIDs?
针对Symbian OS v9或后续版本的应用进行签名的一个要求是:其UID必须来自新系统,并处于受保护范围。 尽管你以前从Symbian 获得了一个UID,还是有必要到 https://www.symbiansigned.com/app/page 重新申请,不管你是否要对自己的应用签名。
你还是能继续将已获分派的UIDs用于Symbian OS v9上的非签名应用。为此,只要将第一个16进制数(一个1)替换为F,其它数字保持不变,就可以了。这样做就能将你的UID映射到旧UID的兼容范围,使之不会与其它任何分派UID产生冲突。
例如,你拥有一个UID 0x100F55BE,你可以将其转换到 0xF00F55BE,以便用于一个非签名的Symbian OS v9应用。
Symbian OS v8和Symbian OS v9之间为何有变化?
新的UID分派系统是全自动的,因此不会发生如手工UID分派时的任何延迟。
然而,旧UID数据库中的现存数据不足以核查那些UIDs 的所有者情况,而对Symbian OS v9应用进行Symbian Signed却需要知道这些情况。结果是,旧系统就没有被迁移到新系统。
何为SIDs?
Secure ID (SID) 是对UID的特别使用。在Symbian OS v9,每一个可执行文件都有一个SID,除非在该应用的MMP文件中的SECUREID关键词明确指定,SID的默认值为该应用的UID3值。对于DLLS,SID值并无相关性,因为一个进程的SID总是其EXE的SID。
一个服务器可允许或拒绝对基于客户端SID的某个特定API的调用。它还决定该应用的私有目录名。
为不致混淆,建议在应用的MMP文件中不对SECUREID作规定。
何为VIDs?
Vendor ID (VID) 是Symbian OS v9中对UID 的另一种特殊使用。Symbian已将部分32位的UID区域 (0x70000000到0x7FFFFFFF) 留给了VIDs。VID可用作某种运行时机制,以检查某个二进制文件来自于一个特定源。它在某个工程的MMP文件中用VENDORID关键词规定;如果没有找到这个关键词,那么其VID的默认值为零。一个DLL 的VID并无相关性 - 类似于SID,某个进程的VID总是等于其EXE的VID。
大多数开发伙伴不会为自己分派一个VID,而是使用其默认值0;VIDs对网络运营商及手机制造商最为有用 - 例如,网络运营商可使用VID机制仅允许拥有某个VID的应用访问某个特定的网络API或服务。
如果你需要一个VID请于Symbian Signed Support, Application Packaging and Distribution and Security论坛发帖请求,列明你需要一个VID的理由。
对Symbian OS v9.x之前版本,Symbian Signed是否会核查某个UID是否属于某位开发者?
对基于Symbian OS v9之前版本的应用,目前的Symbian Signed流程并无变化。开发者无需从新系统申请UIDs用于对其应用进行签名。
以其他人的UID或以来自不受保护范围的一个UID提交的一个应用是否有可能被例外接受?
如果你通过一个发行商提交你的应用,那么你可以使用你自己的UID,尽管你的应用将以该发行商的publisher ID签名。发行商认证机构是一个组织,它获信任对经过该发行认证机构的publisher ID签名的第三方应用进行测试。诸如Handango和Cellmania这样的软件发行商就是用这一方法。
Symbian如何测试某个UID是否属于某位开发者?
当开发者提交其Symbian OS v9应用时,在应用上传期间Symbian会扫描SIS文件(请注意,Symbian Signed仅对Symbian OS v9及后续版本检查UID的所有者)。然后系统会记录publisher ID中所包含的识别名和应用中所含的UIDs。用户通过应用信息页中的链接可以查阅T这些结果。系统查阅稍早在应用中所发现的UIDs并显示列在UID分派数据库中UID旁的UID所有者。然后测试机构就能方便地对UID所有者和取自Publisher ID中的识别名进行比较。注意:只会显示非0值的VIDs。 如果在数据库中找不到来自文件的UID,那么系统就会报告一个错误,应用将通不过测试。
我如何查阅哪些UIDs已分派给我?
登录到 https://www.symbiansigned.com/app/page ,在左导航条区域选择"UIDs" 然后选择"My UIDs"。在这个页面中列出了UIDs数据库中相关于你的Symbian Signed帐户的所有字段。这些数据记录根据所分派的UIDs是来自于受保护的还是不受保护的范围而被清晰分列,并随列识别名和组织名。使用带UID、组织名和识别名搜索功能的分页方法(包括通配符)来限制一次所显示的记录数。
如何修改应用中的UID?
如果你修改了应用中的UID,你就要确保自己已经将这种修改实施到了自己源代码的各个角落。也就是说,在以下各位置作修改:
group/<your project>.mmp
inc/<your project>.hrh
sis/<your project>.pkg
及你的源代码中使用了UIDs的任何地方。
当我有其他问题时可以联系谁?
Please post all issues on the 请在Symbian Signed论坛(here)上发帖。有关平台安全方面的更多信息可在此查阅。
Note that this content was originally hosted on the Symbian Foundation developer wiki.


(no comments yet)