菜鸟教程小白 发表于 2022-12-13 12:26:36

ios - 在 Release Build 中无法使用通过 Cocoapods 添加的框架


                                            <p><p>在我的项目中,我通过 Cocoapods 添加了我的依赖项。对于这个问题,我以 CocoaAsyncSocket 为例,但我使用的其他两个依赖项也有同样的问题。我的 Podfile 看起来像:</p>

<pre><code>platform :ios, &#39;8.0&#39;
use_frameworks!

link_with &#39;MainTarget&#39;

pod &#39;CocoaLumberjack&#39;
pod &#39;CocoaAsyncSocket&#39;
pod &#39;SVProgressHUD&#39;

target &#39;MainTargetTests&#39; do
    pod &#39;OCMock&#39;, &#39;~&gt; 3.0&#39;
end
</code></pre>

<p>当我在调试中(在设备上)构建和运行应用程序时,一切都按预期工作。当我存档应用程序(使用企业许可证)时,我无法创建 GCDAsyncSocket 的新实例。没有编译器或链接器错误,当我查看 .ipa 的内容时,所有框架都按预期打包。</p>

<p>行为示例:</p>

<pre><code>@implementation OPTAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ;

    // perform the rest of the usual set up.
    return YES;
}

- (void) configSocketManager {
    GCDAsyncSocket *socket = [ init];
    if ( ! socket ) {
      // we only enter this block in when the app is built for release
      [ raise];
    }

    // if we get here, all is good
}
</code></pre>

<p>一些环境信息:
- Xcode 版本 7.1.1
- Cocopods 版本 0.39.0</p>

<p>Pod 安装输出:</p>

<pre><code>Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing CocoaAsyncSocket (7.4.2)
Installing CocoaLumberjack (2.2.0)
Installing OCMock (3.2)
Installing SVProgressHUD (1.1.3)
Generating Pods project
Integrating client project
Sending stats
Sending stats
Pod installation complete! There are 4 dependencies from the Podfile and 4 total pods installed.
</code></pre>

<p>工作区按预期创建,我没有修改任何其他build设置,也没有修改任何构建阶段。</p>

<h3>什么可能会阻止在发布版本中使用上述框架?</h3>

SVProgressHUD 和 CocoaLumberjack 变得同样无用。

<h3>2016 年 1 月 4 日更新:</h3>

<p>使用 <a href="https://stackoverflow.com/a/34423692/620197" rel="noreferrer noopener nofollow">answer below</a> 提供的提示,它修复了崩溃,但似乎每当我尝试实例化一个对象(即 GCDAsyncSocket)时,它都会返回 <code>nil</code>。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>根据我在过去几周读到的类似问题,你不能做一个组合</p>

<pre><code>// Method 1
pod &#39;1&#39;
pod &#39;2&#39;

// Method 2
target &#39;MainTargetTests&#39; do
    pod &#39;3&#39;, &#39;~&gt; 3.0&#39;
end
</code></pre>

<p>尝试坚持一种方法,或者另一种。如果您需要通用 pod,因为它基本上是一个 ruby​​ 文件,您可以声明如下内容:</p>

<pre><code>def common_pods
pod &#39;1&#39;
pod &#39;2&#39;
end

target &#39;Debug&#39; do
common_pods
end

target &#39;Release&#39; do
common_pods
pod &#39;3&#39;
end
</code></pre>

<p>希望对您有所帮助!这样你也可以删除你的“linked_with”</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 Release Build 中无法使用通过 Cocoapods 添加的框架,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/34166720/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/34166720/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 Release Build 中无法使用通过 Cocoapods 添加的框架