因單一字串,Python 程式遭蘋果 App Store 封殺


摘要

本文探討因單一字串導致的 Python 程式在蘋果 App Store 遭封殺的問題及其解決方案,並深入分析相關技術與政策影響。 歸納要點:

  • Python 3.12 更新對 Mac App Store 審查影響:單一字串技術問題及解決方案。
  • AI 在 App Store 審查流程中的應用:提升 E-E-A-T 原則評估效率和準確性。
  • 開源軟體與第三方平台競爭:技術折衷和使用者體驗權衡。
文章深入解析了 Python 編程語言更新引發的技術挑戰,以及 AI 和開源軟體在現代應用分發平台中的角色。


Python 開發者正面臨一個不尋常的問題。升級其程式語言版本竟導致應用程式在 App Store 被拒絕。最近,一些開發者從 Python 3.11 升級到 3.12,當他們重新提交這些應用程式到 Apple 的 App Store 時,卻遭到了拒絕。

這個問題已引起了許多開發者的關注。究竟是 Python 3.12 出了問題,還是 Apple 的審核團隊有什麼變動?
我們在研究許多文章後,彙整重點如下
網路文章觀點與我們總結
  • 開發者將Python版本從3.11升級到3.12後,部分用Python語言編寫的App遭到蘋果App Store拒絕。
  • 這次事件主要影響了Mac App Store上的應用程序更新。
  • 為了解決這個問題,Python計劃在3.13版本中添加名為“--with-app-store-compliance”的構建選項。
  • 此問題已經引起了科技媒體及開發者社群的廣泛討論。
  • 審核過程中需要提供更多相關資訊,如專用設定和測試登錄帳號詳細資訊以協助審查。
  • 該問題鮮少發生,但卻讓許多開發者感到困擾與無奈。

最近因為把Python從3.11升級到3.12,一些開發者的應用程式在蘋果App Store上被拒絕,尤其是Mac App Store上的更新。這讓不少人感到措手不及和沮喪。不過好消息是,Python計劃在即將推出的3.13版本中加入一個新的構建選項來解決這個問題,希望能幫助受影響的開發者順利通過審核。

觀點延伸比較:
問題描述影響範圍解決方案開發者建議業界觀點
Python 版本升級導致 App Store 拒絕應用程式部分 Mac App Store 應用程序更新在 Python 3.13 中添加“--with-app-store-compliance”構建選項提供專用設定和測試登錄帳號詳細資訊以協助審查需密切關注 Python 開發團隊的最新公告並持續更新程式碼
蘋果App Store 審查更加嚴格,拒絕使用特定字串的應用程式所有使用 Python 3.12 編寫的Mac App Store 應用等待 Python 3.13 發佈並使用新構建選項進行編譯提前了解 Apple 的最新審核標準並調整應用設計科技媒體強調這是提升安全性的一部分,但也增添了開發者負擔
開發者面臨額外工作量以符合Apple新的審核標準全球範圍內依賴Python的開發社群Python 社群提供支援與討論平台,共享解決方法積極參與相關論壇及社群,獲取第一手資訊和支持業界專家認為這有助於長期提高應用質量,但短期內會增加成本
Affected apps face delays in updates and potential revenue loss due to rejections.The entire developer community using Python for Mac app development.The implementation of '--with-app-store-compliance' is expected to streamline future submissions.It's essential to stay updated with both Apple's guidelines and Python's development news.This issue has sparked a widespread debate on the balance between security measures and developer freedom.


Python 3.12 更新導致 Mac App Store 應用審核遭拒

Eric Froemling,一位開發者,在 GitHub 上分享了他的經驗。他表示:

「這不是一個典型的錯誤。我在將 Python 版本從 3.11 更新到 3.12 後,我的應用更新被 Mac App Store 拒絕。」

起初,Eric 不理解為什麼他之前已被批准的應用現在會被拒絕。App Store 的審核團隊沒有解釋原因,只是說:「我們無法提供更多資訊。」經過多次嘗試後,Eric 向 Apple 提出申訴。他們給了他一個提示:根據指引2.5.2 - 效能 - 軟體要求:

該應用安裝或執行可執行程式碼。具體來說,它使用了 itms-services URL Scheme 來安裝應用。

itms-services URL Scheme 是 Apple 在 App Store 外分發 iOS 應用的一種方式,通常用於內部或測試應用。它允許使用者直接在其 iOS 裝置上安裝應用,而不需透過 App Store。

**Mac App Store 應用程式審核標準變更**

2023 年,Apple 調整了 Mac App Store 的審核標準,更嚴格地執行「不可安裝或執行可執行程式碼」的原則,導致部分使用 itms-services URL Scheme 發布更新的應用程式遭到拒絕。

**API 變動對 Python 應用的影響**

Python 3.12 對 `webbrowser` 模組進行了變更,預設會使用 itms-services URL Scheme 開啟應用程式。這與 App Store 的標準衝突,因此導致從 Python 3.11 升級到 3.12 的應用程式在審核時被拒絕。


一個基本的 itms-services URL 看起來是這樣的:

itms-services://?action=download-manifest&url=https://example.com/manifest.plist

經過大量調查後,Eric 找到了問題檔案:Lib/urllib/parse.py(Python 的標準函式庫 URL 解析器)及其 .pyc 檔案。在 Python 3.12 中,新增了一個 ′itms-services′ 字串。蘋果似乎正在掃描這個字串,並自動拒絕包含它的應用程式。Eric 從他的 Python 程式碼中移除了這個字串。之後,他更新的應用程式透過了審核,並成功上架到 App Store。


人工智慧與E-E-A-T原則提升應用程式商店審查流程

Eric Froemling 並不是因為 ′itms-services′ 這個字串本身感到不滿,他對 Apple 的 App Store 審查規則感到沮喪。他說:「一旦 Apple 告訴我問題出在 Lib/urllib/parse.py 和它的 .pyc 檔案中,找出問題所在就不難了。」

「回頭看,我對於沒有更早在 Python 中搜索 ′itms-services′ 感到失望。我也沒找到其他人遇到相同的問題。」許多人都知道,除錯往往比寫程式碼更困難。Eric 花了很多時間進行除錯,但他只需要刪除一個字串就能解決問題。許多開發者認為,如果 Apple 的審查過程更加清晰透明,這種情況是可以避免的。但事實上,Apple 的審查過程並不透明。

**E-E-A-T 原則深化應用:** Eric Froemling 的案例凸顯了 E-E-A-T(專業知識、經驗、權威、值得信賴)原則在複雜技術問題解決中的重要性。Apple 的評核流程缺乏透明度,使得 Froemling 難以找出錯誤根源。如果 Apple 能夠提供更透明的審查流程和專業知識,Froemling 或許能夠更快速且有效地解決問題。

**最新趨勢探索:** 人工智慧(AI)和機器學習(ML)正在改善應用程式商店的審查流程。這些技術可以自動化檢查流程,找出潛在問題並提供建議,有助於減少開發人員在評核過程中面臨的挫折感。Apple 等應用程式商店平台正積極採用 AI 和 ML,以提升評核效率和透明度。


開放原始碼與第三方平台的拉鋸:技術折衷與使用者體驗的權衡

**最新趨勢:第三方平台強勢崛起**

近年來,隨著 App Store 等第三方平台的崛起,開發者面臨越來越嚴格的審核和發行規範。這對 Python 社群來說尤其具挑戰性,因為其核心延伸模組中包含了與 App Store 規則衝突的字串。此次 CPython 開發者對於遵守 App Store 規範的討論,凸顯了第三方平台對開放原始碼軟體生態系統的影響力。

**深入要點:技術折衷與使用者體驗平衡**

在討論遵守 App Store 規範的過程中,開發者提出了不同的解決方案,並強調了技術折衷與使用者體驗之間的平衡。一種方案建議修改 CPython 的核心程式碼以符合規範,這可能會導致程式碼結構混亂。而另一種方案則是採用第三方工具來修復 CPython,但這需要持續維護。第三種方案則主張進行區域性修改,並將問題提交給第三方(例如 Apple)處理,以尋求解決方案。這種折衷方案兼顧了使用者體驗和推動大型企業解決自身問題的目標。

Russell Keith-Magee 是一位 CPython 核心開發人員,他針對這個問題撰寫了一篇文章。他提問道:我們應該改變多少來適應 App Store 的規則?問題在於蘋果 macOS 的 App Store 會自動拒絕包含 ′itms-services′ 字串的應用,即使該應用實際上從未使用 itms-services:// URLs。

Russell 提出了兩個解決方案:
1. 將“符合 App Store 要求”設為 CPython 的目標。這意味著使用者不需要自行修補 CPython,但可能會導致程式碼變得醜陋。
2. 將此視為一個分配問題。利用像 Briefcase 或 Py2app 這樣的工具,在分發到 app stores 前修補 CPython。

這兩個選項各有利弊。選項一意味著分發經過修改版本的 Python,而選項二則需要持續進行修補工作。

另一位核心開發人員 Alex Gaynor 提出了第三種選擇:
接受針對此類問題的小型區域性修正。在合併之前,有人必須向像 Apple 這樣的第三方抱怨該問題。同時設定這些修正超時限期。

此方法在提升使用者體驗與推動大公司解決自身問題之間取得平衡。


Keith-Magee 之後提出了第四種選項:增加一個編譯選項來移除有問題的程式碼。這比混淆程式碼更為乾淨的解決方案。此選項將包括:

- 一個描述變更的差異檔案。
- 增加 `--with-app-store-patch` 選項來進行配置。
- 允許分發者在需要時提供更新的補丁。

這使得 CPython 可以正式列出為符合 App Store 要求所需的變更。Keith-Magee 問到這個解決方案是否更加可接受。


非自由平台的審查挑戰與創新方法

經過幾天的思考,Keith-Magee 於6月25日回覆。他提交了一個 pull request(#120984),新增了一個 - with-app-store-compliance 選項。這應該可以解決因為某些字串導致應用程式被 App Store 拒絕的問題。他提到這個選項也可以用在 iOS 和 macOS 以外的平台,但目前並沒有這方面的需求。如果一切順利,它將會在 Python 3.13 中可用。

許多開發者對於像 Python 這樣的自由軟體專案必須浪費時間來找到繞過不明審查流程的方法感到沮喪。這只是為了讓開發者能夠為非免費平台建立軟體。一位 Hacker News 使用者評論道:

“這不僅是蘋果在做類似的事情。試著在 Windows Defender 開啟時編譯一個使用 PyInstaller 的 Python 應用程式。你甚至無法編譯,因為 Defender 會阻擋它。

另外,試著在 Defender 開啟時執行一個由 PyInstaller 製作的二進位制檔案。Defender 會稱它為惡意軟體並拒絕執行。

有點反烏託邦的是,兩大主流作業系統平台都努力阻止你發布和執行 Python 應用程式。”

在這種情況下,Keith-Magee 和其他 CPython 開發者迅速採取了行動。他們提出的解決方案似乎是給予 Python 應用程式開發者最佳體驗的最簡單方法。

**深入要點:** 此解決方案僅解決 App Store 上的應用程式審查問題,並未解決其他平台(例如 Windows Defender)封鎖 Python 應用程式的問題。這凸顯了 Python 開發人員在為非自由平台開發軟體時,仍持續面對審查和限制的挑戰。

**最新趨勢:** 隨著大型科技公司加強對軟體發行和執行的控制,開發人員面臨越來越大的障礙,特別是在跨平台開發的情況下。這引發對軟體自由和創新未來的擔憂,並促使開發人員尋找創新方法,以在這些限制中運作。

大型模型與道德思考

幾乎可以確定的是,這不會是某個專案最後一次面臨這樣的問題。我正在撰寫一本有關「如何在 Medium 快速獲得粉絲」的電子書,因為我本身就是最佳證明——僅一個月內,我便獲得了超過5,000名粉絲。請持續關注!

我還在 Substack 上撰寫一系列有關「大型模型應用開發」的文章。如果感興趣,請追蹤!感謝您閱讀📖、標註🖍️、鼓掌👏、評論💬以及分享🗣️。作為一位 ′Medium 的朋友′,我每天都盡力回饋其他作家。您也可以訂閱我的電子報 📰 ,以便在我發布精彩內容時得到通知。謝謝你,我親愛的冠軍讀者!🤓

與我們在 Substack 上保持聯絡,以跟上最新的 AI 故事。我們一起塑造 AI 的未來吧!

**專案 1 具體說明**:目前的 AI 大型模型正迅速發展,並已應用於許多領域,例如自然語言處理、影像辨識和機器學習。這些模型將繼續進步,並在未來幾年帶來新的創新和應用。

**專案 2 具體說明**:對於大型模型的道德使用也引發了擔憂,尤其是在自動化和職位流失方面。在開發和部署這些模型時,必須考慮到潛在的倫理影響,並採取措施減輕其負面後果。

參考來源

Python 社区被苹果坑,只因一个字符串审核被拒,核心开发者们想了8天 ...

我最近经历了一次'磨难',在我将Python 从3.11 更新到3.12 后,苹果拒绝了我App Store(具体来说是Mac App Store)上的应用程序更新。” Eric Froemling 在 ...

來源: 36Kr

Python 3.12 新版导致部分App 无法通过苹果App Store 审核

IT之家6 月28 日消息,科技媒体Lwn 报道称,开发者将Python 版本从3.11 升级到3.12 之后,部分用Python 语言编写的App 遭到苹果App Store 拒绝。

來源: 腾讯网

Python程序因一个字符串被苹果App Store封杀?开发者:审核规则太黑 ...

只因升级一下编程语言的版本,就导致开发的应用被拒、审核不通过、上架不了应用商店,这种鲜少发生的事情如今正在一些Python 开发者身上上演。

來源: Sohu

Python 3.12 新版导致部分App 无法通过苹果App Store 审核

经开发者讨论,Python 计划在3.13 版本中添加名为“--with-app-store-compliance”的构建选项,以解决苹果应用商店的这项审核问题。 App 苹果 字符串 开发者 ...

來源: 搜狐

一个字符串引发,Python 3.12新版导致部分App无法通过苹果 ... - 留园网

经开发者讨论,Python 计划在3.13 版本中添加名为“--with-app-store-compliance”的构建选项,以解决苹果应用商店的这项审核问题。 评分完成:已经给 ...

來源: club.6parkbbs.com

6park.com 一个字符串引发,Python 3.12新版导致部分App无法通过苹果 ...

经开发者讨论,Python 计划在3.13 版本中添加名为“--with-app-store-compliance”的构建选项,以解决苹果应用商店的这项审核问题。 内容来自网络,若 ...

來源: 6parkbbs.com

Python 3.12新版導致部分App無法通過蘋果App Store審核

6 月28 日消息,科技媒體Lwn 報導稱,開發者將Python 版本從3.11 升級到3.12 之後,部分用Python 語言編寫的App 遭到蘋果App Store 拒絕。

來源: min.news

App 審查資訊- 參考資料- App Store Connect - 說明

可在審查程序期間提供協助的其他App 相關資訊。包括在測試App 時可能需要的資訊,例如App 專用設定和測試登錄或帳號的詳細資訊。如果你的App 會透過行動 ...

來源: Apple Developer

J.S.

專家

相關討論

❖ 相關專欄