1***@163.com
1***@163.com
  • 发布:2025-06-17 23:23
  • 更新:2025-06-18 10:36
  • 阅读:95

【报Bug】 iOS離線打包,全新乾淨工程仍報錯“'PDRCore.h' file not found”,疑似SDK包不完整

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS 15.5

HBuilderX类型: 正式

HBuilderX版本号: 4.66

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: iPhone12 pro Max

页面类型: vue

vue版本: vue3

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

一、 環境準備

確保 HBuilderX 為官網最新正式版。
確保 macOS 和 Xcode 均為最新正式版。
確保已在 Xcode 的 Settings -> Accounts 中登錄了有效的 Apple Developer Program 付費帳號。
從 DCloud 官網下載最新的「iOS 離線SDK - 正式版」。
二、 HBuilderX 操作 (導出資源)

在 HBuilderX 中,使用默認模板創建一個全新的 uni-app v3 項目。
打開 manifest.json,切換到「源碼視圖」,為 app-plus -> distribute -> ios 節點手動配置好 bundle ID (例如 com.yourcompany.yourapp)。
執行菜單 發行 -> 原生App-本地打包 -> 生成本地打包App資源,在 unpackage/resources 目錄下生成 UNI... 資源文件夾。
三、 Xcode 操作 (創建全新工程並手動移植)

在 Xcode 中,創建一個全新的 iOS App 項目。

模板: iOS -> App
語言: Objective-C
界面: Storyboard
Team 和 Bundle Identifier: 與 manifest.json 中配置的完全一致。
創建後,進入 Signing & Capabilities 頁面,確認項目簽名完全正常,沒有任何錯誤。
將第7步 HBuilderX 生成的 UNI... 資源文件夾,通過拖拽方式添加到新 Xcode 項目的導航欄中(選項勾選 Copy items if needed 和對應的 App Target)。

將第4步下載的官方 SDK 包裡的 SDK/Libs 文件夾,也通過拖拽方式添加到新 Xcode 項目的導航欄中(選項同上)。

進入 Target 的 General -> Frameworks, Libraries, and Embedded Content 設置,點擊 + 號,手動添加 Libs 文件夾中的所有 .a, .framework, .xcframework 文件。

將官方 SDK 包裡的 AppDelegate.h 和 AppDelegate.m 的文件內容,完全複製並替換掉新項目中的同名文件。

進入 Target 的 Build Settings 標籤頁,確保已選中 All 和 Levels 視圖。

使用從 Finder 拖拽 Libs 文件夾的方式,為 Header Search Paths, Framework Search Paths, 和 Library Search Paths 這三項,都設定上正確的路徑,並確保均設置為 recursive (遞歸)。

四、 最終結果

在 Xcode 中,執行菜單 Product -> Clean Build Folder。
點擊「運行 (Build)」按鈕。
復現的錯誤:
Xcode 在 AppDelegate.h 或 AppDelegate.m 中,於 #import "PDRCore.h" 這一行,報告 'PDRCore.h' file not found 錯誤,編譯最終失敗。

結論:
以上步驟證明,在一個絕對乾淨的環境和全新的 Xcode 工程中,使用官方最新的離線 SDK 進行最標準的手動集成,依然無法找到其核心頭文件。這強烈暗示了 SDK 包本身可能存在文件缺失或結構性問題。

预期结果:

預期結果 (Expected Result):

在執行完所有手動集成和配置步驟後,點擊「運行 (Build)」。Xcode 應該能夠在指定的 Search Paths 中成功找到 PDRCore.h 以及所有其他 uni-app 的核心頭文件和庫文件。

項目最終編譯成功 (Build Succeeded),沒有任何「file not found」的致命錯誤,並且 App 能夠被順利安裝到真機設備上,正常啟動並顯示 uni-app 的頁面。

实际结果:

實際結果 (Actual Result):

在嚴格執行完所有步驟後,點擊「運行 (Build)」,Xcode 編譯過程很快失敗 (Build Failed)。

在 AppDelegate.h (或 .m) 文件中,#import "PDRCore.h" 這一行出現紅色錯誤提示。

錯誤信息為:'PDRCore.h' file not found。

bug描述:

你好,DCloud 的開發者和官方工程師!

我遇到了一個非常頑固的 iOS 離線打包問題,在一位 AI 助手的幫助下,我們花了數個小時,嘗試了所有能想到的標準和高級解決方案,但問題依舊存在,基本可以確定是官方提供的 SDK 包本身有問題。希望得到你們的幫助。

【環境】

HBuilderX 版本: 4.66 (最新正式版)
macOS: 最新版
Xcode: 最新版
iOS 離線 SDK: 已嘗試 4.66 正式版和 4.71 Alpha 版,問題相同。
【核心問題】
在所有配置都正確的情況下,Xcode 在編譯時,始終報錯 'PDRCore.h' file not found。

【我們已經嘗試過的完整步驟】

我們意識到官方的 HBuilder-Hello.xcodeproj 工程文件可能存在配置衝突,因此我們採用了最乾淨的「手動移植」方案,但依然失敗:

創建全新項目:在 Xcode 中,從零開始創建了一個全新的、乾淨的 iOS App 項目 (Objective-C, Storyboard)。
確認簽名健康:在新項目中,配置好我自己的開發者 Team 和在蘋果官網註冊的專屬 Bundle Identifier (com.dilitiku.geoquiz)。確認 Signing & Capabilities 頁面完全正常,沒有任何錯誤。
移植 App 內容: 將 HBuilderX 生成的 UNI... 資源文件夾,通過拖拽方式(選擇了 Copy items if needed)添加到了新項目中。
移植核心庫: 將從官網下載的離線 SDK 包裡的 Libs 文件夾,也通過拖拽方式添加到了新項目中。
鏈接框架: 在 Target 的 General -> Frameworks, Libraries, and Embedded Content 中,手動點擊 + 號,添加了 Libs 文件夾裡所有的 .a, .framework, .xcframework 文件。
替換啟動代碼: 將官方 SDK 裡的 AppDelegate.h 和 AppDelegate.m 文件的內容,完整地複製並替換掉了新項目裡的同名文件。
配置搜索路徑: 在 Build Settings 中,使用從 Finder 拖拽 Libs 文件夾的方式,為 Header Search Paths, Framework Search Paths, 和 Library Search Paths 這三項都設定了絕對正確的、recursive (遞歸) 的路徑。
清理與編譯: 執行 Product -> Clean Build Folder 後,點擊運行。
【最終結果】
在完成了以上所有最正規、最乾淨的操作後,Xcode 依然在 AppDelegate.h 的 #import "PDRCore.h" 這一行報錯:'PDRCore.h' file not found。

我們用 Finder 檢查了 Libs 文件夾,發現裡面有 libPDRCore.a 文件,但似乎缺失了對應的 .h 頭文件。

請問,是不是目前官網提供的離線 SDK 包存在文件缺失的問題?或者是否有我們所有人都不知道的、必須的特殊配置步驟?

這個問題已經困擾了我一整天,任何幫助都將不勝感激!謝謝!
如果需要,我可以提供完整的 manifest.json 內容,或者將我創建的、會報錯的全新 Xcode 項目打包發給官方人員進行分析。

2025-06-17 23:23 负责人:无 分享
已邀请:
DCloud_iOS_WZT

DCloud_iOS_WZT

看起来应该是 .h文件没有添加到工程依赖导致的问题

要回复问题请先登录注册