1
A
回答
5
如果你想在运行时改变CFBundleIdentifier
,你不能,除非你写的应用程序包Info.plist
。这是不好的做法,因为应用程序包可能已被移动到只读卷,或者其写入权限受系统管理员限制,或数字签名以避免篡改。我想启动服务不会立即识别这种变化,应用程序将不得不重新启动。此外,这也是Mac Apple Store拒绝的原因。另一方面,如果要检测CFBundleIdentifier
的篡改,则可以在应用程序启动时始终读取其值,例如,在applicationDidFinishLaunching
:
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
NSString *bundleId = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"];
if (! [bundleId isEqualToString:@"com.yourcompany.yourapp"])
{
// Ooops, CFBundleIdentifier doesn’t match
}
}
根据您的要求,您可能想混淆上面的代码,包括文字字符串。但是,一般来说,你将无法阻止一个坚定的对手。
相关问题
- 1. 如何硬编码lookupedit
- 2. 如何硬编码设置
- 3. 硬编码值
- 4. 硬编码hibernate.cfg.xml
- 5. 硬编码OCaml
- 6. ZedGraph - 如何硬编码轴值?
- 7. 如何用硬编码值替换@JoinColumn?
- 8. 如何避免硬编码字符串
- 9. 如何硬编码一个MobX存储?
- 10. 如何避免Java中的硬编码
- 11. 如何使用硬编码的值
- 12. 如何在NSString中硬编码json
- 13. SSRS,我如何迭代硬编码集
- 14. DataTables - 如何避免硬编码url?
- 15. 如何硬编码WCF配置?
- 16. 没有硬编码
- 17. htaccess vs硬编码
- 18. 硬编码比较
- 19. 硬编码值JsonpResult
- 20. 如何解决Python的硬编码字典编码问题
- 21. 检测硬编码密码
- 22. 如何隐藏代码中的硬编码密码?
- 23. CFBundleIdentifier碰撞
- 24. 使用CFBundleIdentifier
- 25. Silverlight - 硬编码私钥
- 26. 硬编码HLSL着色器
- 27. 硬编码文本问题
- 28. 更换硬编码路径
- 29. 硬编码pg_query上的PostgreSQL
- 30. 硬编码到动态值
为什么你想要将CFBundleIdentifier硬编码到应用程序中? OS X将它设计为plist,因此如果将它从plist中移除并嵌入到应用程序中,可能会在操作系统透视图上导致出现问题。 – 2011-01-07 15:15:51