WebRTC iOS Platformuna Derlenmesi

Buşra Deniz Akın
3 min readJul 23, 2016

--

WebRTC tarayıcılar içinde gömülü olarak geldiği için bir web uygulaması yazarken WebRTC’nin build edilmesi ile uğraşmıyoruz fakat durum native mobil uygulamalar için böyle değil. iOS ve Android için bir native WebRTC uygulaması geliştirmek istiyorsak kütüphanenin kodunu indirip ilgili platformlar için derlememiz gerekiyor. Bu yazımda sadece iOS platformunun derlenmesinden bahsedeceğim. WebRTC kodunu Xcode ile ya da direk komut satırından derleyebilirsiniz. Ben ikinci yöntem ile ilerleyeceğim.

Ortam Gereklilikleri

İlk olarak WebRTC kodunu iOS platformuna derlenemeniz için bir OS X barındıran makineye ihtiyacınız olacak ve tabiki WebRTC versiyon kontrol sistemi olarak Git kullandığı için makinenizde Git’in kurulu olduğundan emin olmanız gerekiyor. Google kaynaklarında Git 2.2.1 ve üstü versiyonlar tavsiye ediliyor.

$ git --version
git version 2.8.1

WebRTC kodunu alma

Geliştirme ortamımız hazır olduktan sonra WebRTC kodunu kendi makinemize alabiliriz. Fakat direk WebRTC kodunu çekmeden önce build adımlarının daha kolaylaşması için depot_tools adı verilen script paketini indirmemiz gerekiyor.

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

depot_tools u lokalimize başarılı bir şekilde çektikten sonra PATH olarak ekliyoruz.

$ export PATH=`pwd`/depot_tools:"$PATH"

Benim PATH değişkenimi yazdırdığımda şöyle bir sonuç elde ediyorum :

/Users/busradeniz/Development/WebRTC/iOS/depot_tools:/Users/busradeniz/Development/WebRTC/depot_tools/:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Ardından target işletim sistemini iOS olarak belirtiyoruz :

$ export GYP_DEFINES="OS=ios"

WebRTC kodunu indireceğimiz klasörün içerisine girip aşağıdaki komutları çalıştırıyoruz.

$ fetch --nohooks webrtc_ios
$ gclient sync

gclient sync komutunu çalıştırdıktan sonra uzun bir süre beklemeniz gerekecek. Benim kodu çekmem yaklaşık 3 saat sürdü ve işlem sonunda kodu çektiğim dosyanın boyutu 12 GB civarındaydı. Bu nedenle bilgisayarınızda yeterli yer olduğunuzdan da emin olmanız yararınıza olabilir. Bu süre tabiki WebRTC kodunu ilk kez çektiğimiz için bu kadar uzun, bundan sonrakilerde sadece güncellemeleri alacağımızdan çok daha kısa sürede tamamlanacak.

iOS için kod derleme

WebRTC kodunu derlemeye başlamadan önce hangi tip cihaz için derleyeceğimizi ve build edilmiş kodun klasörünü vermemiz yani GYP_DEFINES ve GYP_GENERATOR_FLAGS değişkenlerini belirtmemiz gerekiyor. output_dir ‘e herhangi bir isim yazabilirsiniz.

iOS cihazlar için :

$ export GYP_DEFINES="OS=ios target_arch=arm"
$ export GYP_GENERATOR_FLAGS="output_dir=out_ios"

iOS 64-bit cihazlar için :

export GYP_DEFINES="OS=ios target_arch=arm64"
export GYP_GENERATOR_FLAGS="output_dir=out_ios64"

iOS Simulator için :

$ export GYP_DEFINES="OS=ios target_arch=ia32"
$ export GYP_GENERATOR_FLAGS="output_dir=out_sim"

iOS 64-bit Simulator için :

$ export GYP_DEFINES="OS=ios target_arch=x64"
$ export GYP_GENERATOR_FLAGS="output_dir=out_sim64"

şeklinde tanımladıktan sonra src klasörünün içerisine girip gyp_webrtc scriptini çalıştırıyoruz :

$ webrtc/build/gyp_webrtc.py

Scripti çalıştırdıktan sonra src klasörü altında output_dir olarak verdiğiniz isimde klasörün oluşturulduğunu göreceksiniz. Gyp değişkenlerinde herhangi bir değişiklik yaptıktan sonra gyp_webrtc scriptini tekrar çalıştırdığınızdan emin olmalısınız. Aksi taktirde derlemeye çalışırken böyle bir dosya bulunamadı gibi bir hata alacaksınızdır.

Tüm bu adımlardan sonra artık derleme zamanı! İstediğiniz konfigurasyona uygun olarak aşağıdaki örneklerdeki gibi WebRTC kodunu derleyebilirsiniz.

$ ninja -C out_ios/Release-iphoneos AppRTCDemo
$ ninja -C out_ios64/Debug-iphoneos AppRTCDemo
$ ninja -C out_sim64/Debug-iphonesimulator AppRTCDemo

En sonunda elinizde şöyle bir görüntü oluşacak :

AppRTCDemo’yu çalıştırdığınızda da ilk aramanızı yapabilirsiniz

Aslında gördüğünüz gibi WebRTC’nin iOS için kolay bir derleme süreci var fakat özellikle ilk checkout işleminin uzun sürmesi nedeniyle biraz vakit alıyor diyebiliriz. Derlediğimiz WebRTC kütüphanesini native bir iOS uygulamasına nasıl entegre edeceğimizi de diğer yazımda paylaşacağım.

Olası Hatalar

Benim build sırasında yaşadığım iki sorunu da buraya eklemek istiyorum.

  1. PATH değişkenini doğru tanımlayamamak, dikkatsizliğine gelip bir karakteri unutabilirsiniz.
  2. GYP değişkenini tanımladıktan sonra gyp_webrtc scriptini çalıştırmayı unuttuğum için build sırasında hata aldım. Şurdaki cevaplardan hata nedenini bulup düzeltebilmiştim. https://bugs.chromium.org/p/webrtc/issues/detail?id=5425

Yazının orjinalini http://www.busradeniz.com/webrtc-ios-platformuna-derlenmesi/ yayınlanmıştır.

--

--