{"id":161779,"date":"2023-06-07T17:47:13","date_gmt":"2023-06-07T14:47:13","guid":{"rendered":"https:\/\/mobidictum.com\/?p=161779"},"modified":"2023-08-07T15:12:05","modified_gmt":"2023-08-07T12:12:05","slug":"yazilim-gelistirme-kitlerine-sdk-derinlemesine-bir-bakis","status":"publish","type":"post","link":"https:\/\/mobidictum.com\/tr\/yazilim-gelistirme-kitlerine-sdk-derinlemesine-bir-bakis\/","title":{"rendered":"Yaz\u0131l\u0131m geli\u015ftirme kitlerine (SDK) derinlemesine bir bak\u0131\u015f"},"content":{"rendered":"\n<p>Mobil oyunlar, milyarlarca dolarl\u0131k cirosu olan bir sekt\u00f6r h\u00e2line geldi ve milyonlarca insan her g\u00fcn ak\u0131ll\u0131 telefon ve tabletlerinde oyun oynuyor. Kullan\u0131c\u0131lara en iyi oyun deneyimini sa\u011flamak i\u00e7in geli\u015ftiriciler, \u00e7e\u015fitli \u00f6zellikleri ve \u00e7\u00f6z\u00fcmleri oyunlar\u0131na entegre etmek amac\u0131yla yaz\u0131l\u0131m geli\u015ftirme kitleri kullan\u0131r. Bu t\u00fcr SDK\u2019ler, analitik veya sosyal a\u011f entegrasyonu gibi belirli i\u015flevleri projenize eklemek i\u00e7in kullan\u0131labilen haz\u0131r kod bloklar\u0131d\u0131r. SDK\u2019ler genellikle oyunlar\u0131 daha etkili ve k\u00e2rl\u0131 h\u00e2le getirmeye yard\u0131mc\u0131 olur. Bu makalede, ZiMAD COO\u2019su <strong>Ilya Utemov<\/strong>, SDK entegrasyonlar\u0131n\u0131 kullanmay\u0131 d\u00fc\u015f\u00fcnenler i\u00e7in en yayg\u0131n sorular\u0131 yan\u0131tl\u0131yor ve gelecek vadeden geli\u015ftiricilerin kar\u015f\u0131la\u015fabilece\u011fi tuzaklardan bahsediyor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SDK nedir ve i\u015flevleri nelerdir?<\/h2>\n\n\n\n<p>Bir SDK, (mobil geli\u015ftirmede) derlenmi\u015f kod ve kaynaklardan (g\u00f6r\u00fcnt\u00fcler, sesler ve animasyon) olu\u015fan ve belirli i\u015flevleri yerine getiren bir yaz\u0131l\u0131m geli\u015ftirme kitidir. Bir geli\u015ftirici i\u00e7in genellikle projeye ba\u011flanan ve yeni f\u0131rsatlar sunan bir kara kutudur. Uygulaman\u0131za ekleyebilece\u011finiz bir mod\u00fcl gibi d\u00fc\u015f\u00fcnebilirsiniz. Teorik olarak, bir SDK ihtiyac\u0131n\u0131z olan herhangi bir i\u015flevi yerine getirebilir ve hatta i\u00e7ine ek bir oyun ekleyebilir, ancak ger\u00e7ekte bunlar genellikle belirli hizmetlere eri\u015fmek i\u00e7in kullan\u0131l\u0131r. \u00d6rne\u011fin, herhangi bir MMP platformunun SDK\u2019si, bu platformla \u00e7al\u0131\u015fmak i\u00e7in i\u015flevler sa\u011flar ve belirli bir tedarik\u00e7inin reklamlar\u0131yla \u00e7al\u0131\u015fmak i\u00e7in bir reklam SDK\u2019si kullan\u0131l\u0131r.<\/p>\n\n\n\n<p>En pop\u00fcler SDK\u2019ler Appsflyer\/Adjust, Firebase, Google Ads, In-app ve Facebook\/Meta Audience Network\u2019t\u00fcr.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bir SDK bir mobil oyuna nas\u0131l entegre edilir?<\/h2>\n\n\n\n<p>Her \u015feyden \u00f6nce, geli\u015ftirici, se\u00e7ti\u011fi bir SDK\u2019nin i\u015flevlerine ger\u00e7ekten ihtiya\u00e7 duyup duymad\u0131\u011f\u0131na karar vermelidir. Her SDK\u2019nin uygulaman\u0131n boyutu \u00fczerinde olumsuz bir etkisi oldu\u011fu g\u00f6z \u00f6n\u00fcnde bulundurulmal\u0131d\u0131r \u2014 bazen birka\u00e7 zarars\u0131z SDK\u2019y\u0131 entegre etmek, oyunun boyutunu kolayca %20-30 oran\u0131nda artt\u0131rabilir ve bu da kullan\u0131c\u0131n\u0131n cihaz\u0131ndaki performans\u0131n\u0131 etkiler. Bir SDK, kullan\u0131c\u0131lar\u0131n can\u0131n\u0131 s\u0131kacak istenmeyen izin istekleri getirebilir (\u00f6rne\u011fin, konum eri\u015fimi gerektiren SDK\u2019lerle kar\u015f\u0131la\u015ft\u0131k ki bu, i\u015flevleri i\u00e7in olduk\u00e7a al\u0131\u015f\u0131lmad\u0131k bir durumdu). Ayr\u0131ca, SDK\u2019lerin insanlar taraf\u0131ndan yaz\u0131ld\u0131\u011f\u0131n\u0131 ve hatalar i\u00e7erebilece\u011fini belirtmekte fayda var (ancak, pop\u00fcler SDK\u2019lerin \u00e7o\u011fu olduk\u00e7a kararl\u0131d\u0131r). H\u00e2l\u00e2 onlara ihtiyac\u0131n\u0131z oldu\u011funa karar verirseniz, s\u00fcre\u00e7 iki \u015fekilde ilerleyebilir.<\/p>\n\n\n\n<p>Tek platformlu bir uygulamadan bahsediyorsak (\u00f6rne\u011fin, AndroidStudio\/XCode gibi markal\u0131 platform ortamlar\u0131 kullan\u0131larak Android\/iOS i\u00e7in bir oyun geli\u015ftirildi\u011finde), entegrasyon, uygulamaya bir SDK d\u00e2hil etmeye kadar gelir. Ayr\u0131ca, platformlar aras\u0131 bir motor (Cordova, Flutter, Unity, Unreal) kullan\u0131larak geli\u015ftirilen bir uygulama s\u00f6z konusu oldu\u011funda, SDK entegrasyonu neredeyse her zaman hedef platformlar\u0131n her biri i\u00e7in SDK\u2019ler i\u00e7eren belirli bir paketin entegrasyonuna odaklan\u0131r. Ayn\u0131 zamanda, bir paketin, \u00f6rne\u011fin Xbox i\u00e7in de\u011fil de Android\/iOS i\u00e7in SDK\u2019ler i\u00e7erdi\u011fi durumlar vard\u0131r. Bu nedenle, platformlar aras\u0131 geli\u015ftirme ortamlar\u0131n\u0131 kullan\u0131rken, ihtiyac\u0131n\u0131z olan SDK\u2019n\u0131n yaln\u0131zca ortam\u0131n\u0131z i\u00e7in de\u011fil, ayn\u0131 zamanda hedef platformunuz i\u00e7in de mevcut oldu\u011fundan emin olman\u0131z \u00f6nemlidir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mobil oyun geli\u015ftirmede en s\u0131k kullan\u0131lan SDK\u2019ler hangileridir?<\/h2>\n\n\n\n<p>En pop\u00fcler olanlar\u0131, \u00e7e\u015fitli analitik sistemlerle \u00e7al\u0131\u015fmak i\u00e7in SDK\u2019ler, MMP, oyun i\u00e7i sat\u0131n almalar ve reklam SDK\u2019leridir. Genel olarak, modern bir oyunda kolayca d\u00fczinelerce farkl\u0131 SDK olabilir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Bir platform i\u00e7in olu\u015fturulan bir SDK\u2019yi ba\u015fka bir platform i\u00e7in kullanmak m\u00fcmk\u00fcn m\u00fcd\u00fcr?<\/h2>\n\n\n\n<p>\u00c7o\u011fu zaman hay\u0131r. Android i\u00e7in SDK yoksa, SDK\u2019yi yaln\u0131zca Windows i\u00e7in kullanamazs\u0131n\u0131z. Ancak, baz\u0131 iyi istisnalar vard\u0131r. \u00d6rne\u011fin, bir SDK\u2019nin Android ile uyumlu oldu\u011fu iddia ediliyorsa, Amazon veya Huawei gibi di\u011fer Android tabanl\u0131 platformlarla da uyumlu olma olas\u0131l\u0131\u011f\u0131 \u00e7ok y\u00fcksektir. Bununla birlikte, ger\u00e7ek\u00e7i olmak ve SDK\u2019nin entegre etti\u011finiz platformda do\u011fru \u015fekilde \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmayaca\u011f\u0131n\u0131 anlamak \u00f6nemlidir. \u00d6rne\u011fin, GooglePlay \u00f6demeleriyle \u00e7al\u0131\u015fan bir SDK, Google Play olmadan bir Amazon cihaz\u0131nda \u00e7al\u0131\u015fmaz, ancak Google Play ile Android cihazlarda reklam g\u00f6sterebilen bir reklam SDK\u2019si muhtemelen Huawei ile bir Android cihaz\u0131nda \u00e7al\u0131\u015f\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SDK entegrasyon s\u00fcrecinin en yayg\u0131n sorunlar\u0131 nelerdir ve nas\u0131l \u00e7\u00f6z\u00fcl\u00fcr?<\/h2>\n\n\n\n<p>Herhangi bir entegrasyon ve destek s\u00fcrecinde kar\u015f\u0131la\u015fabilece\u011finiz ilk sorun teknik sorunlard\u0131r. Bir SDK genellikle bir kara kutudur ve d\u00e2hil\u00ee \u00e7al\u0131\u015fmas\u0131 biz yay\u0131nc\u0131lardan gizlenir. Bir projede genellikle \u00e7ok say\u0131da SDK vard\u0131r ve bunlar birbirleriyle yak\u0131ndan ba\u011flant\u0131l\u0131d\u0131r. Geli\u015ftiricilerin bu t\u00fcr ba\u011flant\u0131lar\u0131 g\u00fcncel olarak desteklemesine yard\u0131mc\u0131 olan \u00f6zel sistemler vard\u0131r (ki bu, geli\u015ftirme i\u00e7in olmazsa olmazd\u0131r).<\/p>\n\n\n\n<p>Teknik k\u0131sm\u0131 atlarsak en s\u0131k kar\u015f\u0131la\u015ft\u0131\u011f\u0131m\u0131z sorun genel giderler olacakt\u0131r. Uygulaman\u0131zda bir SDK\u2019ye sahip olman\u0131n avantaj\u0131n\u0131 \u00f6ng\u00f6rmeniz ve bunu neden oldu\u011fu genel giderlerle kar\u015f\u0131la\u015ft\u0131rman\u0131z gerekir. Bu, belirli bir SDK ile \u00e7al\u0131\u015fmaya karar verirken g\u00f6z \u00f6n\u00fcnde bulundurman\u0131z gerekenlerin yaln\u0131zca k\u00fc\u00e7\u00fck bir k\u0131sm\u0131d\u0131r, \u00e7\u00fcnk\u00fc bir SDK genellikle gereklili\u011fi yay\u0131nc\u0131 taraf\u0131ndan da de\u011ferlendirilmesi gereken harici bir hizmetin par\u00e7as\u0131d\u0131r.<\/p>\n\n\n\n<p>Diyelim ki bir oyunumuz var ve yeni s\u00fcr\u00fcm yeni harika \u00f6zellikler vaat etti\u011fi i\u00e7in belirli bir SDK\u2019yi g\u00fcncellememiz gerekti\u011fine karar veriyoruz. Bu SDK\u2019nin g\u00fcncellenmesi, projenin g\u00fcncellenmi\u015f bir hizmet kitapl\u0131\u011f\u0131na sahip olmas\u0131n\u0131 gerektiriyor ve bu da projedeki di\u011fer on SDK taraf\u0131ndan kullan\u0131l\u0131yor. Ba\u011f\u0131ml\u0131l\u0131klar\u0131 \u00e7\u00f6zd\u00fckten sonra (basit bir ifadeyle, projenin t\u00fcm SDK\u2019lar\u0131na \u201cuyan\u201d SDK s\u00fcr\u00fcmlerini ve kitapl\u0131klar\u0131 se\u00e7erek), yaln\u0131zca bir SDK\u2019yi g\u00fcncelleyemeyece\u011fimizi anl\u0131yoruz \u2013 on tanesini de g\u00fcncellememiz gerekiyor. Bu da tamamen farkl\u0131 bir de\u011fi\u015fiklik ve test hacmidir.<\/p>\n\n\n\n<p>Bir \u00f6rnek daha, yeni bir reklamc\u0131l\u0131k SDK\u2019si eklemektir. Testler herhangi bir sorun g\u00f6stermez ve s\u00fcr\u00fcm \u00fcretime g\u00f6nderilir. T\u00fcm kullan\u0131c\u0131lar i\u00e7in yay\u0131nland\u0131\u011f\u0131nda, bu SDK\u2019nin belirli ko\u015fullarda (\u00f6rne\u011fin, belirli bir cihaz modeli, bir i\u015fletim sistemi s\u00fcr\u00fcm\u00fc ve hatta GEO) uygulama \u00e7\u00f6kmelerine neden oldu\u011fu ortaya \u00e7\u0131kt\u0131. Ya yay\u0131nlanan s\u00fcr\u00fcm\u00fc geri almaya ya da sorunlu kullan\u0131c\u0131lar i\u00e7in bu SDK\u2019yi se\u00e7erek devre d\u0131\u015f\u0131 b\u0131rakmaya karar vermeliyiz. SDK geli\u015ftiricisini de bu sorunlar hakk\u0131nda bilgilendirmeliyiz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Belirli proje gereksinimleri i\u00e7in bir SDK\u2019y\u0131 nas\u0131l uyarlad\u0131\u011f\u0131n\u0131za dair bir \u00f6rnek verebilir misiniz?<\/h2>\n\n\n\n<p>Haz\u0131r SDK\u2019ler genellikle derlenmi\u015f durumda gelir, bu da de\u011fi\u015fiklikleri imk\u00e2ns\u0131z, \u00e7ok karma\u015f\u0131k ve \u00fcretim ve geli\u015ftirme a\u00e7\u0131s\u0131ndan makul olmayan bir \u015fekilde pahal\u0131 h\u00e2le getirir ve hatta SDK\u2019nin sahibi olan \u015firketin politikas\u0131 taraf\u0131ndan do\u011frudan yasaklan\u0131r. \u00c7o\u011fu durumda, bir SDK\u2019de de\u011fi\u015fiklik yapman\u0131n tek yolu, bu SDK\u2019nin tedarik\u00e7isiyle ileti\u015fim kurmakt\u0131r. Ancak, deneyimimizde bir SDK\u2019nin Android\/iOS platformlar\u0131n\u0131 destekledi\u011fi ancak oyunumuzda kullan\u0131lan Unity\u2019yi desteklemedi\u011fi durumlar oldu. Unity ve Android geli\u015ftiricilerinden olu\u015fan k\u00fc\u00e7\u00fck bir ekip toplamam\u0131z ve Unity i\u00e7in bir Android SDK kullanmam\u0131za izin verecek kendi paketimizi olu\u015fturmam\u0131z gerekiyordu. SDK\u2019yi bu \u015fekilde de\u011fi\u015ftirmedik, ancak gerekli motor i\u00e7in bir \u201cadapt\u00f6r\u201d yapt\u0131k. Kolay bir i\u015f de\u011fildi, ama kesinlikle i\u015fe yarad\u0131.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Entegrasyondan sonra bir SDK\u2019n\u0131n performans\u0131n\u0131 ve etkinli\u011fini nas\u0131l de\u011ferlendiriyorsunuz?<\/h2>\n\n\n\n<p>Genellikle SDK entegrasyonunu ger\u00e7ekle\u015ftirdi\u011fimiz hedefe ula\u015f\u0131l\u0131p ula\u015f\u0131lmad\u0131\u011f\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcr\u00fcz. \u00d6rne\u011fin, bir zamanlar geleneksel olarak bir SDK arac\u0131l\u0131\u011f\u0131yla yap\u0131lan markal\u0131 reklamc\u0131l\u0131\u011f\u0131 projemize entegre etmi\u015ftik. Entegre ettikten, test ettikten ve yay\u0131nlad\u0131ktan sonra, bu t\u00fcr reklamlardan elde edilen gelirin \u00e7ok d\u00fc\u015f\u00fck oldu\u011funu ve kilitlenme oran\u0131 ve performans g\u00f6stergelerinin \u00f6nemli \u00f6l\u00e7\u00fcde k\u00f6t\u00fcle\u015fti\u011fini g\u00f6rd\u00fck. Bu SDK\u2019yi olu\u015fturan \u015firket arac\u0131l\u0131\u011f\u0131yla bu sorunu \u00e7\u00f6zmek imk\u00e2ns\u0131zd\u0131. Bu nedenle markal\u0131 reklamlar\u0131n sa\u011flay\u0131c\u0131s\u0131n\u0131 de\u011fi\u015ftirdik. Sonu\u00e7 olarak kilitlenme oran\u0131 ve performans g\u00f6stergeleri entegrasyon \u00f6ncesi seviyeye geldi (yani SDK entegrasyonundan sonra oyunda herhangi bir teknik sorun g\u00f6zlemlemedik) ve markal\u0131 reklamlar sayesinde reklamlardan elde edilen gelir \u00f6nemli \u00f6l\u00e7\u00fcde artt\u0131.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gelecek vadeden geli\u015ftiriciler i\u00e7in SDK ba\u015flang\u0131\u00e7 kiti<\/h2>\n\n\n\n<p>Olmas\u0131 gereken SDK\u2019lerden bahsetmi\u015fken, her \u015feyden \u00f6nce, bir geli\u015ftirici olarak oyun i\u00e7i sat\u0131n al\u0131mlarla \u00e7al\u0131\u015fman\u0131za olanak tan\u0131yan Unity In-App gibi uygulama i\u00e7i SDK\u2019leri g\u00f6z \u00f6n\u00fcnde bulundurmal\u0131s\u0131n\u0131z. Ard\u0131ndan, analitikle ilgilenmeniz gerekir ve Firebase SDK bunun i\u00e7in gayet uygun olacakt\u0131r. Uygulaman\u0131z i\u00e7in trafik sat\u0131n almay\u0131 planl\u0131yorsan\u0131z Appsflyer\/Adjust SDK\u2019ye (trafik ili\u015fkilendirme hizmetleri) de ihtiyac\u0131n\u0131z olacakt\u0131r. Bir de tabii ki, reklamlardan k\u00e2r elde etmek istiyorsan\u0131z, uyumlula\u015ft\u0131rmaya ve Google Ads, Ironsource, MAX veya Facebook gibi reklam SDK\u2019lerine ihtiyac\u0131n\u0131z olacak. Farkl\u0131 SDK\u2019lerle bo\u011fulmaman\u0131z\u0131, k\u00fc\u00e7\u00fckten ba\u015flaman\u0131z\u0131 ve uygulaman\u0131z\u0131n \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken minimum miktar\u0131 elde etmenizi \u00f6nerebilirim.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-16018d1d wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-background wp-element-button\" href=\"https:\/\/zimad.com\/?utm_source=mobidictum-outbound-link\" style=\"background-color:#be1625\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Zimad\u2019\u0131n \u00fcr\u00fcn ve h\u0130zmetler\u0130n\u0130 \u0130nceley\u0130n.<\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Geli\u015ftiriciler, oyun deneyimini geli\u015ftirmek i\u00e7in analitik ve sosyal a\u011f entegrasyonu gibi \u00f6zelliklerden faydalanmak i\u00e7in \u00f6nceden haz\u0131rlanm\u0131\u015f kod bloklar\u0131 sa\u011flayan yaz\u0131l\u0131m geli\u015ftirme kitlerine (SKD&#8217;ler) bel ba\u011flar. Bu makalede, ZiMAD COO&#8217;su Ilya Utemov, SDK entegrasyonlar\u0131 hakk\u0131nda s\u0131k sorulan sorular\u0131 yan\u0131tl\u0131yor ve gelecek vadeden geli\u015ftiricilerin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 potansiyel zorluklar\u0131 de\u011ferlendiriyor.<\/p>\n","protected":false},"author":63,"featured_media":161707,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[8862],"tags":[8715],"class_list":["post-161779","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","tag-featured"],"acf":[],"_links":{"self":[{"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/posts\/161779","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/comments?post=161779"}],"version-history":[{"count":12,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/posts\/161779\/revisions"}],"predecessor-version":[{"id":162078,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/posts\/161779\/revisions\/162078"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/media\/161707"}],"wp:attachment":[{"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/media?parent=161779"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/categories?post=161779"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mobidictum.com\/tr\/wp-json\/wp\/v2\/tags?post=161779"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}