發表文章

目前顯示的是 十一月, 2016的文章

[iOS] CocoaPods 套件管理工具的安裝

圖片
最近終於決定踏入 iOS 開發的領域,要寫 iOS,除了要有一台 Mac 之外,還得要安裝 4.43 GB 的 Xcode。然而,Xcode 不像 Android Studio 使用 Gradle 做套件管理和自動化建置,它需要依靠第三方工具來做套件管理,較著名的是 CocoaPods。
安裝 CocoaPods 在安裝之前,請執行下面的指令,先將 Ruby 升級到最新版本
sudo gem update --system
然後開始安裝 CocoaPods
sudo gem install cocoapods
這樣就裝好了
設定 CocoaPods 完成安裝之後,要執行下面的指令,
pod setup 你會發現,它會停在「Setting up CocoaPods master repo」沒有反應,其實背後是在執行程式下載的動作。
也可以使用 --verbose 參數,顯示安裝過程 pod setup --verbose 等待約十五分鐘才會執行完畢,這個設定的動作是將程式下載到 /.cocoapods 目錄下,可以查看這個目錄的大小,有 852 MB!

參考資料:[StackOverflow] Pod install is staying on 「Setting up CocoaPods Master repo」
開始使用 CocoaPods 管理套件 首先,在專案根目錄下執行以下指令,它會自動生成 Podfile 設定檔 pod init 使用文字編輯器編輯 Podfile,加入你要使用的第三方套件。

最後執行安裝指令。
pod install 需等待一段時間,套件會被安裝到 /Pod 目錄下,還會產生 XXX.xcworkspace 檔案,之後要開你的專案就要選這個檔案,不是 XXX.xcodeproj。

[Android] 使用 Calligraphy 自訂字型

圖片
要更改 Android App 的字型,正常的做法是使用 setTypeface,改變 TextView 的字型。可是一旦要變更的 TextView 很多的時候,修改起來相當費時。

Calligraphy 這個函式庫使用注入的方式,自動尋找 Activity 中 TextView,並設置其使用的字型。

先安裝函式庫,然後將你要變更的字型檔放到 assets/ 目錄下
dependencies { compile 'uk.co.chrisjenx:calligraphy:2.2.0' }
在 Application 的 onCleate 初始要使用的字型
@Override public void onCreate() { super.onCreate(); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/Roboto-Regular.ttf") .setFontAttrId(R.attr.fontPath) .build() ); //.... } 然後在 Activity 的 attachBaseContext 方法中注入 CalligraphyContextWrapper。
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }
這個 Activity 中的 TextView 字型就會全部改變了,如果有 BaseActivity 的話,建議加在 BaseActivity。

GTmetrix 網站檢測工具

圖片
GTmetrix 是一個線上的網站檢測分析工具,它在全世界 7 個地區(香港、雪梨、巴西聖保羅、溫哥華、美國達拉斯、倫敦、印度孟買)佈建 13 台伺服器。透過這些伺服器的分析,提供使用者效能最佳化的建議。

GTmetrix 首頁可以直接輸入網址分析。首頁的測試只能使用溫哥華的主機,以及 Firefox 瀏覽器做測試。如果要使用其他地區的主機,和 Chrome 瀏覽器測試的話,要另外申請帳號登入做測試。

測試結果有兩個分數:PageSpeed Score 和 YSlow Score,分數越高越好。在下方會列出建議修改的項目。

用帳號登入後,可以選擇測試伺服器的地區、欲測試的瀏覽器種類、以及連線類型

GTmetrix 可以設定定期監控某個網站,當監控值分數過低時會發通知,不過免費版本只能選用溫哥華的測試伺服器。檢測頻率則可選擇每天、每週或每月。


這個網站還有一個有趣的功能,它會檢測 Google 公布的前一千大網站


GTmetrix 也有提供 REST API,可與外部系統整合。因此我們可以整合至 CI 系統,當程式部署之後,可以馬上執行 GTmetrix 檢測。



[Android] MultiDex

因為前陣子的程式做了重構,加入了 RxJava 相關函式庫,導致 App 內的 Method 總數超過 64435 個,導致 App 無法編譯,於是參考 Google 建議的做法,解決這個問題。
在 App 層級的 build.gradle 加入 multiDexEnabled true
android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true } ... } 如果 App 支援 Android 4.x 的話,要額外做以下的步驟,否則會出現以下的錯誤。
Exception java.lang.NoClassDefFoundError: rx.plugins.RxJavaHooks rx.Observable.create (Observable.java:98) retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$SimpleCallAdapter.adapt (RxJavaCallAdapterFactory.java:233) retrofit2.adapter.rxjava.RxJavaCallAdapterFactory$SimpleCallAdapter.adapt (RxJavaCallAdapterFactory.java:219) retrofit2.Retrofit$1.invoke (Retrofit.java:147) 首先要引用 Multidex 函式庫
compile 'com.android.support:multidex:1.0.1' 然後,在 Application class 要改成繼承 MultiDexApplication
public class BaseApplication extends MultiDexApplic…