[iOS] 從Fabric Crashlytics遷移Firebase Crashlytics
由於時代不停的變遷,使得必須從Fabric Crashlytics遷移Firebase Crashlytics。
自從2017年Google收購Fabric,我之前所整合的Answers和Crashlytics就逐漸被整合到Firebase。遙想2017年我還在看Fabric後台,很有成就感地看著我開發的HiLife和Nissan。文章:Fabric Crashlytics 崩潰紀錄。
由於時代不停的變遷,使得必須從Fabric Crashlytics遷移Firebase Crashlytics。
自從2017年Google收購Fabric,我之前所整合的Answers和Crashlytics就逐漸被整合到Firebase。遙想2017年我還在看Fabric後台,很有成就感地看著我開發的HiLife和Nissan。文章:Fabric Crashlytics 崩潰紀錄。
先前已記錄:棄用API的使用情況 (Deprecated API Usage),也先行移除專案自己寫的UIWebView,現在要進行移除第三方套件中的UIWebView!
想要移除第三方套件中的UIWebView其實不難,只要套件作者願意移除,然後使用套件的開發者更新版本,就能順利完成!若該套件是非常被廣泛使用,其他開發者肯定會很早就提醒套件作者。像是AFNetWorking和Admob。
不是說2020年12月上傳ipa才會擋?原來今年第一次上傳ipa的App,直接被迫要使用WKWebView,不然連送審都不行哪~
Dear Developer,
We identified one or more issues with a recent delivery for your app, “油價管家" 1.0.1 (1). Please correct the following issues, then upload again.
ITMS-90809: Deprecated API Usage – New apps that use UIWebView are no longer accepted. Instead, use WKWebView for improved security and reliability. Learn more (https://developer.apple.com/documentation/uikit/uiwebview).
Best regards,
The App Store Team
2013年就開始使用Cocoapods來使用第三方套件,儘管有發佈初學者的Cocoapods教學,可是在「管理」這方面卻還是有些不明白,像是pod install與pod update的差別,真的是要到需要的時候才會認真去釐清差異,過去一直install和update混著用,如今看官方說明就更明白,畢竟我今年開始是團隊合作寫iOS App囉!
文章開頭先說總結:團隊每人都要同步podfile.lock,如此能保證大家套件版本一致。
四年前(2014年),我已寫過Cocoapods教學:使用 CocoaPods 管理第三方套件,此時要講指定Pod版本。好的第三方套件會時常更新來與時俱進,除了新增feature之外,還有修正既有的bug。
當我們自己開發的App已經過了好幾年,想要再透過Cocospods加入新的套件,此時要考慮到舊有的套件盡可能不要更新,若逼不得已還是得更新啦⋯⋯
使用Cocoapods的好處之一就是可以指定Pod版本。像是我有遇到下一個版本的語法被改掉,太難改的話我就會先返回原先的版本。
持續使用Cocoapods來管理第三方套件,主要還是以Objective C來開發專案的我,有時候需要使用Swift的Open Source,才發現靜態庫、動態庫、Framework的區別要好好了解一下:P~
先前有提到在Swift專案使用Objective C第三方套件,現在想要反過來該怎麼做呢?目前我主要還是以Objective C來開發iOS App,然而有些超級好用的套件是用最潮的程式語言Swift打造,為了方便開發起見,還是來學著怎麼「橋接 (Bridging)」吧!
在這裡我是使用Cocoapods來下載Charts這個超過15000人使用開源做範例。
target ‘HappyChartTest’ do
# Uncomment the next line if you’re using Swift or would like to use dynamic frameworks
use_frameworks!
pod ‘Charts’
# Pods for HappyChartTest
end
有時候同一個專案(Project)需要建立不同的目標(Target),因為可以各自設定屬性狀態,讓code可以依據釋出版(Release)或開發版(Debug)來運作。
此時若有使用Cocoapods來管理第三方套件,
隨著時間發展,iOS App已經變得更加複雜且龐大,使用使用 CocoaPods 管理第三方套件已成為必要之事,然而這樣還是不夠,因為我們一個專案 (Project)中不再只是一個目標 (Target),這些目標都需要同一個函式庫 (Library),但是可可豆莢 (Cocoapods)預設只為最初的那個目標,我們該怎麼下指令才能讓所有目標都能引用同一函式庫呢?
原來只要多加link_with關鍵字,後頭接上目標的名稱即可!
/** Theme: Podfile with Multiple Targets IDE: Xcode 6 Language: Objective C Date: 104/04/01 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ source 'https://github.com/CocoaPods/Specs.git' platform :ios, '6.0' link_with 'HappyCan', 'HappyCan Today', 'HappyCan WatchKit Extension' pod 'AFNetworking' pod 'ZBarSDK' pod 'Toast', '~> 2.4' pod 'LineKit', '~> 1.4.1' pod 'MBProgressHUD' pod 'OpenSSL-Universal', '1.0.1.k’
以上範例表示我專案中有三個目標(HappyCan、HappyCan Today、HappyCan WatchKit Extension),都需要引用相同的函式庫。
HappyMan・迴響