sunsx9316/DanDanPlay_Experience

LocalPods 里没有 ProgressHUD

Opened this issue · 2 comments

podfile 里写着

pod 'ProgressHUD', :path => 'LocalPods/ProgressHUD'

但是 LocalPods 文件夹里没有这个 pod。。

ProgressHUD 应该不用本地依赖就可以,不过现在的代码还缺少 MPV 依赖。

pod 'MPVPlayer', :path => 'LocalPods/MPVPlayer'

另外看起来代码中并没有使用 mpv,coreType 指定的都是 vlc。
辛苦大佬更新个可以编译的版本。

ynyyn commented

如果目标构建平台是 macOS,那么大概还有如下这几个编译构建问题。供未来希望编译起来的朋友参考:

ProgressHUD Pod 不支持 macOS 平台

ProgressHUD 是一个指示器组件库,用于悬浮加载提示,进度提示、错误提示。
原版只支持 iOS 平台,不支持 macOS。所以 Pod install 时会报错:

[!] The platform of the target `AniXPlayer` (macOS 11.0) is not compatible with `ProgressHUD (13.7.2)`, which does not support `macOS`.

所以这也解释了为什么项目 Podfile 是从 LocalPods/ProgressHUD 引入它。
因为作者本地改了一份支持 macOS 的版本。(应该还额外往 NSView 上加了些 Category 扩展)。
可能由于各种原因没整理好,不方便发出来。

最快捷、赶时间的解决方案是直接暴力移除 ProgressHUD 依赖:

  1. 移除 Podfile 依赖,2. 删除引用代码,主要是 showProgress, showLoading, showError 等函数

(我 clone 了份,强改 podspec 支持 macOS 看了下,结论是我太菜了一时半会改不动)


MPVPlayer Pod 不存在

如前面讨论楼所述。MPVPlayer 其实没用到;代码也基本是桩实现。
快捷解决方案是移除 Podfile 依赖;移除代码引用,MPVPlayerWrapper 改为空实现。


缺两个文件 (有引用但不存在)

  • ANXLogHelperModule+Utils.swift (in Share/CocoaShare/Helper):
  • VLCVideoLayerView+Bugfix{.h, .m} (in Share/CocoaShare/MediaPlayer)

导致 Build input file cannot be found.

ANXLogHelperModule+Utils.swift 用于打日志,定义了模块名枚举,即 ANX.logInfo() 等日志函数的第一个参数。然而,目前仓库里实际存在的文件是 ANXLogHelperModule+Utils.m,即 Objective-C 实现。

所以一种解决方法是添加 .m 实现到工程,移除 .swift 文件引用;然后在 AniXPlayer-Bridging-Header.h 中添加桥接导入:

#import "ANXLogHelperModule+Utils.h"

VLCVideoLayerView+Bugfix.m 应该是 Patch 了啥,但是不知道内容无法补齐。
所以解决方法是从 Target 中移除该文件、不构建。容忍可能会有的 Bug。


'VLCKit/VLCDialogProvider.h' file not found

VLCKit 3.5.1 版本有个小问题,没有标记 VLCDialogProvider.h 为 Public,导致这头文件没打包到 framework,
于是下游编译报找不到头文件:'VLCKit/VLCDialogProvider.h' file not found

该问题的相关反馈参阅:
[1] https://code.videolan.org/videolan/VLCKit/-/issues/680
[2] https://code.videolan.org/videolan/VLCKit/-/merge_requests/263

解决方案是翻下 VLCKit 仓库补上头文件:VLCDialogProvider.h,补到 Mac/Pods/VLCKit/VLCKit.xcframework/macos-arm64_x86_64/VLCKit.framework/Headers/VLCDialogProvider.h


找不到 AppInfoHelper (没导入)

AppInfoHelper.swift 文件其实存在,但没有添加到工程中,导致 Cannot find 'AppInfoHelper' in scope (in Share/CocoaShare/Networking/NetworkManager.swift:28:23)。

所以解决方案是将 Share/CocoaShare/Helper/AppInfoHelper.swift 导入工程。


找不到 IPResponse (没提交)

NetworkManager.getBackupIps(_:) 中报 Cannot find 'IPResponse' in scope (in Share/CocoaShare/Networking/NetworkManager.swift:255:34)。
getBackupIps() 方法用于反序列化 DoH 解析域名 IP 的返回的 JSON;但它没人使用。

所以解决方案可以是注释屏蔽掉整个方法。


LocalFileManager.pickFiles() 调 contentsOfDirectory() 缺少 filterType 参数

Missing argument for parameter 'filterType' in call (in Share/CocoaShare/MediaPlayer/File/FileManager/LocalFileManager.swift:150:50)

调用点 LocalFileManager.pickFiles(_:from:filterType:completion:)

更改为:

self.contentsOfDirectory(at: file, filterType: filterType) { result in

macOS 平台大概就是这些。我这边改完之后就能成功构建了。除指示器被人为删掉外,其他看起来正常(我还没仔细体验)。供有需要的人参考。

感谢作者大佬开源和付出 🙏🏻。期待大佬有空能修复下,以及考虑未来引入 CI 构建 🤤🥺