在一个已越狱的应用程序中以编程方式编辑Info.plist[英] Edit Info.plist programmatically in a jailbroken app

本文是小编为大家收集整理的关于在一个已越狱的应用程序中以编程方式编辑Info.plist的处理方法,想解了在一个已越狱的应用程序中以编程方式编辑Info.plist的问题怎么解决?在一个已越狱的应用程序中以编程方式编辑Info.plist问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

如何在我正在编写的越狱应用中编辑 Info.plist 文件?我知道这通常是不可能的,但考虑到这将在 Cydia 中发布,我觉得一定有办法.我不精通越狱环境中的文件修改,因此感谢您提供任何信息.

我想编辑 Info.plist 文件的原因是为了以编程方式注册 URL 方案.因此,如果有另一种方法可以做到这一点,我很想听听 :-)

推荐答案

如果您想在自己的应用程序运行时以编程方式编辑其 Info.plist 文件,您可以使用以下代码:

- (BOOL) registerForScheme: (NSString*) scheme {
   NSString* plistPath = [[NSBundle mainBundle] pathForResource:@"Info" 
                                                         ofType:@"plist"];
   NSMutableDictionary* plist = [NSMutableDictionary dictionaryWithContentsOfFile: plistPath];
   NSDictionary* urlType = [NSDictionary dictionaryWithObjectsAndKeys:
                            @"com.mycompany.myscheme", @"CFBundleURLName",
                            [NSArray arrayWithObject: scheme], @"CFBundleURLSchemes",
                            nil];
   [plist setObject: [NSArray arrayWithObject: urlType] forKey: @"CFBundleURLTypes"];

   return [plist writeToFile: plistPath atomically: YES];
}

如果你这样称呼它:

BOOL succeeded = [self registerForScheme: @"stack"];

然后您的应用可以使用如下 URL 打开:

stack://overflow

但是,如果您查看 Info.plist 文件的权限:

-rw-r--r--  1 root wheel  1167 Oct 26 02:17 Info.plist

您看到您无法以用户 mobile 的身份写入 到该文件,这就是您的应用程序正常运行的方式.因此,解决此问题的一种方法是授予您的应用程序 root 权限.查看此处了解如何操作.

在您使用此代码并授予您的应用 root 权限后,您可能仍需要重新启动,然后才能看到您的自定义 URL 方案被识别.我没有时间测试那部分.

本文地址:https://www.itbaoku.cn/post/1793826.html