选择Info.plist会无声地失败 - 原因可能是什么?

时间:2017-03-14 09:49:15

标签: ios xcode build info.plist

我们开发了一个iOS框架,主要是在Swift中使用了一些Objective-C。

在某个地方,我们显然失去了项目之间的联系。它的主要目标和Info.plist:

enter image description here

这是主要目标。我们只注意到构建的框架没有包含Info.plist,一个快速绘制的模拟应用程序用于玩我们的框架根本不喜欢。

但是,选择文件失败。我可以在此对话框中选择文件:

enter image description here

但确认"选择"没有任何影响。在pbxproj文件中,我看到像

这样的条目
    <hash> /* Debug */ = {
        isa = XCBuildConfiguration;
        buildSettings = {
            ...
            DEFINES_MODULE = YES;
            ...
            INFOPLIST_FILE = "$(SRCROOT)/hcl/Info.plist";
            "INFOPLIST_FILE[sdk=*]" = "";
            INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
            IPHONEOS_DEPLOYMENT_TARGET = 10.2;
            ...
        };
        name = Debug;
    };

这似乎完全合情合理。 Info.plist文件本身似乎也是有效的;当我打开它时,XCode会愉快地显示表视图。

但是,Info选项卡仍为空,并且框架中没有Info.plist结束。 设置&#34; Info.plist文件&#34;在#34;包装&#34;项目设置到同一路径也无济于事。

可能是什么原因?我们怎样才能将Info.plist纳入我们的框架?

&#34;趣味&#34;旁注:我试图通过将Info.plist添加到&#34;复制捆绑资源&#34;来解决这个问题。 &#34;构建阶段&#34;。果然,我们在框架中获得Info.plist并且使用app满意。但是,我们的测试不再运行:

xctest[7779:90709] The bundle “hclTests” couldn’t be loaded because it is damaged 
    or missing necessary resources. 
Try reinstalling the bundle.

xctest[7779:90709] (dlopen_preflight(/path/to/hclTests): 
    Library not loaded: @rpath/hcl.framework/hcl
    Referenced from: /path/to/Build/Products/Debug-iphonesimulator/hclTests.xctest/hclTests
    Reason: no suitable image found.  Did find:
        /path/to/Build/Products/Debug-iphonesimulator/hcl.framework/hcl: 
            required code signature missing for 
            '/path/to/Build/Products/Debug-iphonesimulator/hcl.framework/hcl'

/path/to/Build/Products/Debug-iphonesimulator/hcl.framework/hcl: 
    required code signature missing for '/path/to/Build/Products/Debug-iphonesimulator/hcl.framework/hcl'

Program ended with exit code: 82

感谢这个非常有用的消息,XCode。我花了三个小时才弄明白一个复制的文件导致了这个。

1 个答案:

答案 0 :(得分:0)

有一个构建设置:

"INFOPLIST_FILE[sdk=*]" = "";

我不知道它来自哪里,但它似乎会覆盖

INFOPLIST_FILE = "module/Info.plist"

引起沉默的混乱。

删除上述设置可以解决问题。