簡體   English   中英

為什么 iOS 會顯示警告“此應用程序需要由開發人員更新才能在此版本的 iOS 上運行。” 對於我的反應原生應用程序?

[英]Why does iOS show an alert "This app needs to be updated by the developer to work on this version of iOS." for my react native app?

我剛剛構建了我的 React Native 應用程序,在生成了一個.ipa並將其安裝在我的設備上進行測試后,我收到一個標題為"MyApp - iOS" Needs To Be Updated和正文的警報This app needs to be updated by the developer to work on this version of iOS

在我的 ReactNative 項目中我將 iOS 目標設置為 10.0,而手機上的 iOS 版本是 14.2,所以我不明白為什么它不起作用。 我一直在努力從谷歌搜索中找到任何有用的資源。

Apple 在此處記錄的第一個原因是您的 IPA 必須使用新的簽名格式。 如果 IPA 是用 MacOS 10.14 或更高版本構建的,應該很好。 為確保您的 IPA 具有正確的簽名,請使用以下步驟:

  • 將 MyApp.ipa 重命名為 MyApp.zip 並解壓縮(您將獲得一個包含 MyApp.app 的 Payload 文件夾)

  • 在終端中,運行 codesign -dv /path/to/MyApp.app

  • 在 output 中查看 CodeDirectory 旁邊的值。 如果你看到 v=20500 或 v=20400,你很好。 如果您看到低於 20400 的值,則需要使用以下命令為您的應用程序簽名:codesign -s "Your Codesign Identity" -f --preserve-metadata /path/to/MyApp.app(確保您使用 MacOS >= 執行此操作10.14,然后重新運行 codesign -dv /path/to/MyApp.app 以確保您現在得到 v=20400 或 v=20500)

嘗試重新安裝此 IPA,它應該可以工作。 如果沒有,請閱讀下面的第二個原因。

另一個可能的原因(Apple 未記錄)有點棘手,即您可能需要重新簽署您的應用程序,包括 DER 權利。 要檢查您是否需要這樣做,請執行以下操作:

  • 在終端中,運行 codesign -dvvvvv /path/to/MyApp.app

  • 查看頁面大小下的 output,您應該看到如下內容:

    -7=4ade7be00e0a7b6db853edc4843e7ece1eea646f6f13d1809f78fc50d8db461f //If this line doesn't exist or contains only 000..., you need to include DER entitlements -6=0000000000000000000000000000000000000000000000000000000000000000 -5=1dfa58bd8ac3c4fb42142c1c4d28c436128b3a7460186a44526194fb690112bc -4=0000000000000000000000000000000000000000000000000000000000000000 -3=ef08dbe5a7c355336e1fb571604b683ce1c54536cb59a6155a1d18387fd23f6e -2=5b730fa46ffd405fd88da9606d82eda9af7f460f6049047afc176163326f5a7f

  • 如上塊所述,如果 -7 不存在或僅包含 000...,那么這就是 IPA 無法正確安裝的原因。 要解決此問題,請執行下一步

  • 運行 codesign -s "Signing Identity Name from Keychain" -f --preserve-metadata --generate-entitlement-der /path/to/MyApp.app 以退出您的應用程序,包括 DER 權利。 重新運行 codesign -dvvvvv /path/to/MyApp.app 以確保 -7 值現在正確。

我在“排除架構”中犯了一個錯誤。 我已將所有排除架構設置為“arm64”,而我應該只為模擬器排除 arm64。

這些是有效的更新構建設置:

在此處輸入圖像描述

這是代碼差異:

- EXCLUDED_ARCHS = arm64;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;

希望這對其他人有幫助。

我得到了解決方案,它對我有用。 你可以申請這個,如果你有任何問題,請告訴我。

https://stackoverflow.com/a/70739263/5746176

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM