未知 的大頭貼

WWDAACC20 全球開發者反蘋果審查大會

在開發者社群關注蘋果的 WWDC 同時,人權團體將在 6/22 舉行全球開發者反蘋果審查大會 Worldwide Developers Against Apple Censorship Conference ,邀請圖博(西藏)、東突厥斯坦(新疆)、香港等地的人權團體和國際研究機構、開源軟體開發者,一起來探討蘋果在中國、香港等地以「遵循當地法規」為由,協助執政當局實行言論審查和破壞言論自由的政策。

以下是個人看法

我寫這篇文章只是希望更多人知道:

  1. 蘋果正以「遵從當地法規」為藉口協助極權政府侵害人權。
  2. 蘋果在企業社會責任的人權議題上透明度極差。

或許是因為蘋果一向把公司資訊控制的很好,內部資訊無論是政策還是產品都很少外流,宣傳手腕也比 Facebook 等公司高明,所以除了「蘋果協助極權政府限制人權」這個大方向、長久以來的批評之外,在大方向下面的小新聞比 Google, Facebook 等公司少很多。 Facebook 三不五時就會爆出醜聞,Google 三不五時就會有員工出來遊行抗議,蘋果在人權方面受到輿論的壓力是比 Facebook, Google 小很多的。

而且就我所知,蘋果對於協助極權政府限制人權,除了「我們遵從當地法規」,就沒有講其他東西了,而且極少回應外界的批評。

像是 Facebook 這公司,如果被輿論批評的很嚴重的話,八成會出個新聞稿說 XXX 是我們一向重視的理念,我們的社群守則也已經涵蓋這方面,我們會增加社群守則執行人員的培訓以確保更好地處理這些議題巴拉巴拉。雖然很爛但至少有回應,要蘋果出來回應的輿論嚴重程度得要到很高很高才有可能的。

其實蘋果侵犯人權的程度說不定比 Google Facebook 高很多,因為蘋果的不透明度高很多,沒人知道也沒人爆料實際上發生了什麼事,也就沒什麼人關心,當作一切都好,真的是很成功的公關策略。

如果簡單地去看蘋果對人權議題的回應度,已經比 Google Facebook 糟很多。聯合國商業與人權中心的企業回應比率評比,蘋果只有 31% ,Facebook 有 68%,Google 有 71%

「遵從當地法規」不是萬用藉口

很多人可以接受蘋果以「遵從當地法規」為由在中國和香港幫助中共實行言論審查,「畢竟生意還是要做嘛」。

我想指出,「遵從當地法規」並不是做生意的鐵則,它是有程度之分,而且是有彈性可以改變的。比如說,顯然極少有公司想要遵從北韓的當地法規去北韓做生意。或是,假如中共今天規定蘋果必須要竊聽全中國的蘋果手機然後找出不良份子,這在執行上顯然有各種困難,所以蘋果不可能會照做。

既然遵從當地法規是有改變可能的,那作為消費者和公民,還有什麼理由要去支持這些企業「遵從當地法規」侵害人權?

不過即使是這樣,我也不是在說買蘋果產品的人不道德啦,畢竟買產品本來就有很多考量。我只是不解,為什麼有人要幫企業侵害人權說話?講難聽點,那公司又沒付你錢,幫公司說話就交給他們領薪水的公關部門就好了。我覺得,如果至少,大家可以認可到這間公司有些有害於社會的行為,並且應該改善,這就比現狀好很多了。

相關

https://applecensorship.com/ 可以比較不同國家 app store 的搜尋結果,可以看到某些應用程式在特定國家看不到。

未知 的大頭貼

我的 Android 10 模改、工具、設定

最近成功把手機從 LineageOS 15.1 無痛升級到 17.1 (沒刪 /data),決定記錄一下過程、在新系統上面使用的工具和安裝方法,一方面避免自己以後需要重做這個流程,另一方面也當作分享和推廣其他人使用 LineageOS。

背景 – LineageOS 15.1

應該是從我買了這隻 Galaxy S7 我就在用 LineageOS 15.1 了,當時似乎已經有 LineageOS 16 ,但因為 Xposed 支援停在 Android 8.1 ,所以我就決定先不升 LineageOS 16。

我之前有在 COSCUP 分享過《加強 Android 隱私的工具和技巧》,裡面有提到,對我來說我覺得 XPrivacyLua 是我不能不用的模組,然後他需要 Xposed ,所以為了他我就一直留在 LineageOS 15.1。

後來我那隻手機型號的 UNOFFICIAL LineageOS 開發者轉移重心到 LOS 16 ,不再更新他的 LOS 15.1 build ,所以為了拿到 Android Security Bulletin,後期我只好自己 build ,還好其實沒很難。

後來知道有厲害的中國開發者做了 EdXposed ,配合 Magisk 和 Riru-core 就可以繼續在 Android 8 以上提供 Xposed 原本提供的系統功能。

最近 LineageOS 17.1 出了,我也找到時間,打算先來測試 LOS 17.1 + EdXposed + XPrivacyLua 的穩定性,如果夠穩定的話就可以升級啦。

Build ROM

Galaxy S7 的 LOS UNOFFICIAL 開發者還蠻認真,更新的很勤勞,幾乎每個月都會出 LOS 17 新的 build 。不過我想說既然我都可以自己 build ,何必用別人編譯的東西。

自己 build 也可以順便確認一下這個開發者寫的 code 的品質怎麼樣,我之前就發現我另一臺手機的 LOS UNOFFICIAL 開發者不是很認真,去他的 repo 看, commit message 根本亂寫,然後還不太會用 git revert ,看他經常在 revert 自己的 revert ,然後有的 revert 還不是真的 revert ,是手動把 code 加回來……

他不會用 git 就算了,我嘗試下載他的原始碼來編譯,居然還編不起來。我跑去聊天群組裡面問他,他就修了修 push 了幾個新 commit,最後我終於 build 起來。但是神奇的事情又發生了,我刷他的 build 就可以開機,我自己的 build 就開不了機 (bootloop) ,嘗試 debug 了許久沒有成果最後逼不得已還是只能用他的 build ,感覺他東西沒完整開源。(不過感覺應該是沒有惡意啦,可能只是不會用 git)(不過後來又發現他只是個法國高中生,不會用 git 就可以 port Android ROM 也是蠻厲害)……另一隻手機的故事扯遠了。

不同裝置 build LOS 的流程幾乎完全一樣,不過對於 UNOFFICIAL 裝置需要的額外動作就是要先抓 local_manifests 的 XML 放到 .repo/local_manifests/roomservice.xml ,然後才繼續 repo init, repo sync,繼續照官方文件的流程操作。

官方文件沒提到的是 LineageOS 17.1 build 需要什麼版本的 OpenJDK,我也沒查到資料,我就隨便猜,先用 OpenJDK 1.9 ,最後 build 成功,證實的確是要用 1.9 。

另一件事情是我原本希望 LOS 15.1 和 17.1 可以共用一個 source tree ,想說既然是 git 應該可以單純 checkout 不同的 branch 成 working copy 就可以,但後來查到資料是說不行,只好分開(找不到資料來源了)。

另外,完成了第一次 repo sync 之後,想要再更新 source tree (用 repo sync)的時候可能會遇到問題,這時候就直接強迫他覆蓋就好: repo sync --force-sync

自己 build 完之後建議用自己的 key 來 sign 這個 build ,官方文件有說明

安裝 ROM 和 OpenGApps

安裝之前當然記得先做個 Nandroid backup 。

安裝就是很普通的進 recovery 按 install zip ,安裝完 ROM 之後再裝 OpenGApps。

我原本有點擔心,我沒有清除 /data ,不知道這樣直接升級可不可以(而且我還是一次跳兩個大版本),怕有些應用程式會不相容。

升級完,第一次開機證實:不會!原本的應用程式都繼續開心地正常運作。

安裝 Magisk, Riru-core, EdXposed

就直接依照 EdXposed 的說明,依序安裝 Magisk, Riru-core 和 EdXposed 就可以了。

測試 XprivacyLua

根據過去在 LOS 15.1 的經驗,有不少應用程式在受到 XprivacyLua 的限制之後會沒辦法打開。這似乎不太像是應用程式呼叫 API 拿到假資料的時候崩潰,因為我曾經遇過好幾次的神祕狀況是,原本一個受到 XprivacyLua 限制可以正常開啟的應用程式突然打不開(打開馬上當掉),然後我解除了一些 XprivacyLua 限制之後他就可以打開了,實際上看 XprivacyLua 的限制紀錄裡面也沒有顯示應用程式會使用那個打開的限制。並且在 logcat 裡面會有一些看起來跟 ART 有關的 native error (會產生 tombstone 的那種)。我猜測大概是因為 Xposed 在 ART 的 hook 沒有很穩定吧。

所以根據上面的經驗,升級之後我得先測試一下我的應用程式受到 XprivacyLua 限制的時候的穩定性。

測試結果,沒想到, LOS 17.1 + EdXposed + XprivacyLua 的組合,居然比在 LOS 15.1 之下更穩定!

有不少在 LOS 15.1 經常 crash 的應用程式,在 17.1 下,完全不會 crash。

而且,為了穩定性,我在 15.1 的 XprivacyLua 設定裡面經常必須關閉一些限制;在 17.1 ,我把這些限制都重新打開,應用程式竟然還是可以穩定運行!

所以簡單來說在 LOS 17.1 的 XprivacyLua 真的可以想限制什麼 API 就限制什麼,開到爽都不會當機。

不過!有件事情變糟,就是雖然當機的機率降低,但應用程式崩潰的影響似乎變大。在 15.1 應用程式因為 XprivacyLua 限制而當機的時候只會影響單一應用程式(強制關閉),但在 17.1 因為 XprivacyLua 當機的時候經常會直接讓整個系統 reset 重啟。但這原因我也不是很清楚, logcat 看不出所以然。

但總之整體來說我覺得比 LOS 15.1 穩定,所以決定繼續使用 17.1 。

LOS 17.1 設定微調

一開始我注意到電池消耗的速度似乎變快了,不過裝了 BetterBatteryStats 實測了一下耗電速度,又覺得還好,螢幕開著持續使用的狀況下大概 10 分鐘消耗 4% ,螢幕鎖定之後幾乎是完全不耗電,偶爾拿出來使用的話可以輕鬆撐過一整天(12 小時)。

Android 10 換了一個應用程式切換器,從原本應用程式會在畫面上垂直堆疊切換,現在變成一次只顯示一個應用程式,還要水平切換,真的很難用。原本的只要看到對的標題點下去就切換了,新的要滑一下才會顯示上下一個應用程式。網路上查了一下,換回垂直切換器目前似乎沒有解法,只有非原生 launcher 的用戶想要使用原生的切換器,但 Google 不開放權限所以有人做了模組

原本在 Android 8 使用的 GCam 版本到 10 也變得不太穩定,試了幾個之後我覺得 Mod8.3b_IDan_v4.7_test2_fixlos17.apk 這個版本最好。安裝之後要打開設定頁,然後重開 app ,設定才會套用,才能開始拍照。