编译错误:无效的库文件 - CoreLocation

38
我有一个使用Xcode 8创建的应用程序,其中使用了CoreLocation和MapKit。
我已经更新该应用程序到最新的iOS版本,并且一切都正常。现在我正在使用iOS 1更新应用程序。因此,我使用Xcode 11.0打开应用程序并更新了所有所需的代码。还更新了Xcode建议的设置“执行更改”等。
现在我运行应用程序,但是我收到错误消息:
"编译器错误:无效的库文件"。
我已经搜索了很多,但找不到任何解决方案。这是新的Xcode还是新的iOS中的错误?我需要进行额外的更改或设置吗?请指导我。苹果公司是否知道这个问题?
编辑:
2019-10-18 10:34:39.899827+0530 MapLocation[1697:57778] 编译器错误:无效的库文件 2019-10-18 10:34:39.900098+0530 MapLocation[1697:57778] 编译器错误:无效的库文件 2019-10-18 10:34:39.915973+0530 MapLocation[1697:57778] 编译器错误:无效的库文件 2019-10-18 10:34:39.916228+0530 MapLocation[1697:57778] 编译器错误:无效的库文件
更新后的坐标为:<+23.02055700,+72.50524900> +/- 5.00m (速度-1.00 mps / 方向-1.00) @ 10/18/19,上午10:34:39 India Standard Time

2019年10月18日10:34:39.920697+0530 MapLocation[1697:57778] 纬度:23.0206,经度:72.5052

2019年10月18日10:34:39.925441+0530 MapLocation[1697:57778] 进入 ----> (纬度:23.0206,经度:72.5052),半径为:300.00

2019年10月18日10:34:39.925546+0530 MapLocation[1697:57778] 停留在 ----> (纬度:23.0206,经度:72.5052),半径为:300.00

2019年10月18日10:34:39.926582+0530 MapLocation[1697:57778] 离开 ----> (纬度:23.0021,经度:72.4995),半径为:300.00

2019年10月18日10:34:39.926683+0530 MapLocation[1697:57778] 停留在 ----> (纬度:23.0021,经度:72.4995),半径为:300.00

2019年10月18日10:34:39.932080+0530 MapLocation[1697:57778] 编译器错误:无效的库文件 2019年10月18日10:34:39.932268+0530 MapLocation[1697:57778] 编译器错误:无效的库文件 2019年10月18日10:34:39.948942+0530 MapLocation[1697:57778] 编译器错误:无效的库文件 2019年10月18日10:34:39.949220+0530 MapLocation[1697:57778] 编译器错误:无效的库文件


从你的其他标签猜测,这与Swift编译器有关?编译器错误非常依赖于编译器和语言,所以在未来不要忘记添加这些信息。 - Some programmer dude
我已经尝试用Objective C编写新程序,但结果相同... - VRAwesome
8个回答

33

我也遇到了这个问题。只有在实现MKMapView的渲染覆盖层时才会出现此问题。如果没有这个功能,我就不能显示我添加到地图视图上的折线。在Xcode 10中这个功能还能正常工作。


2
我遇到了同样的问题,当我在地图上制作一个圆形叠加层时。此外,在我移动地图时,这行代码被打印出来。 - Mahil Arasu
1
2020年4月,问题仍然存在。 - LinusGeffarth
3
仍于2020年7月19日开放。XCode 11.6版本。 - Nicola Mingotti
14
我也一样,使用Xcode 13和iOS 15 SDK... - Jonathan
2
仍然存在于 Xcode 13.2 中。 - Trevor
1
仍然存在于Xcode 13.4 RC版本。 - gbroekstg

19
希望这个问题能在下一个版本的 xcode 中解决。但是这只在模拟器上发生。暂时使用您的真实设备进行测试。

1
在真实设备上运行时,控制台不会显示这样的错误。 - Hasya

3
对我而言,禁用操作系统活动记录是有效的。
在“Product > Scheme > Edit Scheme > Run > Arguments”中添加环境变量:OS_ACTIVITY_MODE,并将其值设置为“disable”。保留HTML标签。

Xcode environment variables with OS_ACTIVITY_MODE disabled

注意

有人报告称,其他对他们有用的日志也被禁止了。


这段内容摘自我之前回答关于WKWebView的问题(类似的答案在这里),但是我将其转发到这里以增加曝光率,因为我发现与MKMapView一起使用时也会出现日志噪声。


1

最近我遇到了这个错误,通过从“硬件”->“清除所有内容和设置...”菜单项中清除模拟器,我成功解决了它。


1

我通过使用SwiftLog来记录我的消息,将每个记录器的标签中放入一些唯一的字符串(可以只是com.yourcompany.yourapp来区分它),然后在控制台上过滤包含该标签的消息来解决这个问题。

一个更通用的解决方案是在控制台视图中使用负过滤器,这将消除使用记录器的必要性。


1
对于在IOS 15上遇到此错误的用户,请查看raywenderlich上的有用文章,该文章表示可以安全地忽略该错误:

注意:如果您在模拟器上运行,则可能会在Xcode控制台中看到大量形式为“编译器错误:无效库文件”的错误。这是模拟器的错误,可以安全地忽略。不幸的是,它使控制台变得非常嘈杂,使您更难以看到打印语句的结果。

您可能想要进行更多研究以确认此事,但raywenderlich从未让我误入歧途。

1
我也遇到了同样的问题,尝试更新多条折线的坐标。
实际上,问题来自于将新坐标推入包含折线坐标的数组的方式(在我的情况下,这是模型对象的属性)。
为了解决这个问题,我必须首先克隆该数组到一个新变量中,然后将新坐标添加到克隆的数组中并更新模型属性。
之前,我只是将新坐标推入数组中:
existingArray.push(object);

现在,我正在做:
var newArray = [...existingArray];

newArray.push(object);

existingArray = newArray;

希望它能有所帮助!

2
这段代码与MKPolyline对象或您正在使用的任何MapKit对象有什么关系? - Gerd Castan
我遇到了与你一样的编译器错误,尝试操作折线,但真正的问题来自于数据加载到内存(状态)的方式。一旦我改变了数组更新的方式,编译器错误就消失了。 - EldenChris

0

对我来说,这只发生在我为地图打开了交通情况的时候。

enter image description here

我在功能上保留它,但在模拟器中关闭它:

@IBOutlet
var mapView: MKMapView? {
    didSet {
        #if targetEnvironment(simulator)
        mapView?.showsTraffic = false
        #endif
    }
}

7
不,那不是。 - Fritz Anderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接