我有一个类库,它是一组用于开发Windows Phone 7应用程序的帮助程序类。
我在此库中拥有的核心助手类之一负责提供位置服务功能,因此它使用ILocationWatcher和对System.Device的引用。
现在问题是,即使我在市场上提交应用程序后不使用此帮助程序类(即,将永远不会启动LocationWatcher),它会将“位置服务”显示为我的应用程序正在使用的功能之一。
我相信市场检测到这一点的方式,或多或少地分析了项目中的所有代码和库。
我们怎么能以某种方式覆盖这种行为?
答案 0 :(得分:5)
当您的xap提交到市场时,使用静态分析检测功能。
如果您引用程序集System.Device
并使用名称空间System.Device.Location
,则会报告位置功能。</ p>
分析XAP中的所有程序集。 甚至是你从第三方获得的。
如果您不希望在市场上报告该功能,请删除触发其检测的参考 您可能需要考虑如何构建共享/公共库/代码。
答案 1 :(得分:1)
您可以使用free capability detection tool supplied with the second Mango SDK beta检查已使用的功能。如果您使用位置而未在WMAppManifest.xml中定义它,则用户将收到“拒绝访问”消息,您的应用将抛出UnauthorizedAccessException。 Afaik没有办法绕过这种行为。它是一种安全功能,可在用户安装应用程序之前对其进行警告,以便他们可以在市场上查看应用程序将要使用的功能。
答案 2 :(得分:-1)
我不相信它正在分析代码。而是使用清单的功能部分来确定需要什么。您可以在此处详细了解该部分:
http://msdn.microsoft.com/en-us/library/ff769509(v=vs.92).aspx#BKMK_Capabilities
应用程序的清单是否包含ID_CAP_LOCATION
?如果确实如此,并且您没有使用它 - 它可以安全地删除。