×
Namespaces

Variants
Actions

UID Q&As (Symbian Signed)/zh-hans

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
翻译:
hamishwillee
最后由 hamishwillee 在 16 Dec 2011 编辑

Contents

概述

本文对相关于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就可以运行应用)。

  1. 使用不受保护范围的UIDS,0xAxxxxxxx,在你的Symbian Signed门户帐户外正式分派。

这种选项也许更适合项目(如文件管理器或游戏)

  1. 使用测试范围的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)上发帖。有关平台安全方面的更多信息可在此查阅。


Licence icon cc-by-sa 3.0-88x31.png© 2010 Symbian Foundation Limited. This document is licensed under the Creative Commons Attribution-Share Alike 2.0 license. See http://creativecommons.org/licenses/by-sa/2.0/legalcode for the full terms of the license.
Note that this content was originally hosted on the Symbian Foundation developer wiki.

This page was last modified on 16 December 2011, at 07:23.
72 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×