版本被蘋果拒絕郵件內容如下:
發件人 Apple
2. 5 Performance: Software Requirements
Guideline 2.5.2 - Performance - Software Requirements
Your app, extension, or linked framework appears to contain code designed explicitly with the capability to change your app’s behavior or functionality after App Review approval, which is not in compliance with App Store Review Guideline 2.5.2 and section 3.3.2 of the Apple Developer Program License Agreement.
This code, combined with a remote resource, can facilitate significant changes to your app’s behavior compared to when it was initially reviewed for the App Store. While you may not be using this functionality currently, it has the potential to load private frameworks, private methods, and enable future feature changes. This includes any code which passes arbitrary parameters to dynamic methods such as dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations(), and running remote scripts in order to change app behavior and/or call SPI, based on the contents of the downloaded script. Even if the remote resource is not intentionally malicious, it could easily be hijacked via a Man In The Middle (MiTM) attack, which can pose a serious security vulnerability to users of your app.
The next submission of this app may require a longer review time.
Next Steps
- Review the Software Requirements section of the App Store Review Guidelines.
- Ensure your app is compliant with all sections of the App Store Review Guidelines and the Terms & Conditions of the Apple Developer Program.
- Once your app is fully compliant, resubmit your app for review.
Submitting apps designed to mislead or harm customers or evade the review process may result in the termination of your Apple Developer Program account. Review the Terms & Conditions of the Apple Developer Program to learn more about our policies regarding termination.
If you believe your app is compliant with the App Store Review Guidelines, you may submit an appeal. Alternatively, you may provide additional details about your app by replying directly to this message.
解決方案:
首先根據郵件內容定位到了項目中包含熱修復的代碼,然后將熱修復相關模塊刪除。除此之外,檢查了項目中用到的所有三方庫中是否包含dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations()等方法。檢查采用終端命令的方式進行,以微信為例終端下執行nm -u libWeChatSDK.a >> wechat.txt 。 wechat.txt這個文檔中包含了微信SDK中用到的所有方法,全局搜索可以看到有沒有用到蘋果被拒郵件中的一些方法等。用此種方式可以看出百度統計、個推、高德地圖等用到了熱更新的方法等,需要將這些包進行刪除或者更新到最新包。其他三方庫可用同樣的方式進行查詢,涉及到熱更新方法的三方庫需要更新到最新庫,或者刪除此庫。