手动更改自定义框架的 info.plist 是否会在设备上安装时产生问题?
Will changing the info.plist of custom framework manually create problems in installing on device?
我通过加入模拟器和 iphone 架构框架,使用 lipo -create
命令从带有“example.com.a”包标识符的 xcode 项目创建了一个自定义框架。所以默认情况下,它在 info.plist
文件中有一个包标识符“example.com.a”。我可以在我的应用程序中使用这个框架,并且我的应用程序安装在设备上没有任何错误
现在,当我尝试通过手动编辑框架文件夹内的 info.plist 而不是 xcode 项目,将自定义框架的包标识符更改为类似“myapp.custom.framework”的东西时。
这样做我无法在设备中安装 .ipa。它显示“无法安装应用程序”。
所以我的问题是
1) 手动更改包标识符或将键添加到自定义框架的 info.plist 会影响自定义框架功能吗?
2) 要更改自定义框架的包标识符,我们是否需要在主 xcode 项目中更改它?现在我正在框架文件夹中的 info.plist 中更改和添加密钥。
经过长时间的研究和试验,我发现如果我们在自定义框架文件夹中更改 info.plist 中的包标识符,在添加示例项目时会产生错误,而我们需要更改包标识符从框架的 XCode 项目,然后生成 iPhone 和模拟器 .framework
并使用 lipo -create output
将它们组合并创建一个通用库。
步骤如下:
构建和分发 universal/fat 框架:
在框架项目中:
为模拟器构建xcode框架项目并为设备构建,这将在派生数据文件夹中生成两个框架。
找到项目的派生数据路径。查找文件夹 Build->Product
s。里面应该是'-iphoneos'和'-iphonesimulator'。每个里面都有一个 .framework 文件夹。将其中一个 ose 复制到某个不错的文件夹。从每个 ose .frawework 文件夹中,将其中的二进制文件复制到一个文件夹中。
在终端中:
在终端 运行 中输入命令 lipo -create -output <outputName> <binaryFromiphoneos> <binaryFromiphonesimulator>
。这将为模拟器和设备创建一个包含所有架构的胖二进制文件。将复制的.framework目录下的替换成新生成的最好在iPhone platform framework文件夹下。
运行 lipo -info <framework path>
在终端中了解框架的架构。例如:X86 表示模拟器,arm64,arm7 表示 iphone 设备。
要在另一个应用程序中使用该框架:
- Select 项目导航器中的
Project
,select 目标和 select General
选项卡。
- 将 .framework 文件夹拖到显示 'Add embedded binaries here' 的位置。
- 在目标的构建设置中,将.framework文件夹的路径添加到'Framework Search Paths'。
- 使用#import 在您的源代码中导入文件
<frameworkName/frameworkName.h>
我通过加入模拟器和 iphone 架构框架,使用 lipo -create
命令从带有“example.com.a”包标识符的 xcode 项目创建了一个自定义框架。所以默认情况下,它在 info.plist
文件中有一个包标识符“example.com.a”。我可以在我的应用程序中使用这个框架,并且我的应用程序安装在设备上没有任何错误
现在,当我尝试通过手动编辑框架文件夹内的 info.plist 而不是 xcode 项目,将自定义框架的包标识符更改为类似“myapp.custom.framework”的东西时。
这样做我无法在设备中安装 .ipa。它显示“无法安装应用程序”。
所以我的问题是
1) 手动更改包标识符或将键添加到自定义框架的 info.plist 会影响自定义框架功能吗?
2) 要更改自定义框架的包标识符,我们是否需要在主 xcode 项目中更改它?现在我正在框架文件夹中的 info.plist 中更改和添加密钥。
经过长时间的研究和试验,我发现如果我们在自定义框架文件夹中更改 info.plist 中的包标识符,在添加示例项目时会产生错误,而我们需要更改包标识符从框架的 XCode 项目,然后生成 iPhone 和模拟器 .framework
并使用 lipo -create output
将它们组合并创建一个通用库。
步骤如下:
构建和分发 universal/fat 框架: 在框架项目中:
为模拟器构建xcode框架项目并为设备构建,这将在派生数据文件夹中生成两个框架。
找到项目的派生数据路径。查找文件夹
Build->Product
s。里面应该是'-iphoneos'和'-iphonesimulator'。每个里面都有一个 .framework 文件夹。将其中一个 ose 复制到某个不错的文件夹。从每个 ose .frawework 文件夹中,将其中的二进制文件复制到一个文件夹中。
在终端中:
在终端 运行 中输入命令
lipo -create -output <outputName> <binaryFromiphoneos> <binaryFromiphonesimulator>
。这将为模拟器和设备创建一个包含所有架构的胖二进制文件。将复制的.framework目录下的替换成新生成的最好在iPhone platform framework文件夹下。运行
lipo -info <framework path>
在终端中了解框架的架构。例如:X86 表示模拟器,arm64,arm7 表示 iphone 设备。
要在另一个应用程序中使用该框架:
- Select 项目导航器中的
Project
,select 目标和 selectGeneral
选项卡。 - 将 .framework 文件夹拖到显示 'Add embedded binaries here' 的位置。
- 在目标的构建设置中,将.framework文件夹的路径添加到'Framework Search Paths'。
- 使用#import 在您的源代码中导入文件
<frameworkName/frameworkName.h>