VS NDK Güncellemeleri

Tekrar merhaba arkadaşlar. Bu sefer kısa bir hatırlatma ve sizleri bir zahmetten kurtaracağını düşündüğüm bir husustan bahsedeceğim 🙂

VS 2017 ile C/C++ Kütüphanelerin (SDL) Android için Oluşturulması

yazımdan hatırlayacağınız üzere çoklu platformlar için VS ile yazılım geliştirmede kullandığımız SDL’i hem android hem Windows için nasıl oluşturabileceğimiz görmüştük. O yazımızda VS henüz NDK15c ve Clang 5.0 kullanmıyordu. Her neyse benzer şekilde SFML’i de oluşturma ihtiyacı hasıl oldu ve SDL için izlediğimiz adımları izleyerek VS de ilgili projeleri oluşturmaya başladım. Kütüphaneleri oluşturmada herhangi bir problem ile karşılaşmadım ta ki kaynak kod ile gelen örnek uygulamayı oluşturana kadar.

SFML şu an resmi olarak Android’i desteklemiyor ama açıkçası daha önceden ilgili “Graphics” kütüphanesini SDL aracılığı ile Android’te kullanmıştım. Gel gelelim başka bir uygulamam için SFML’i direk kullanmak istedim ve bunun için de bu örnek uygulamayı derleme yoluna gittim. İlk farklılığı oluşturma aracında fark ettim, örnek uygulama Gradle aracını kullanıyordu ve açıkçası daha önce NDK için bunu kullanmamıştım (Gradle nedir ne eder konusu ayrı bir mevzu ama kısaca Ant ve Maven‘a bir alternatif diyebiliriz). SDL için de Ant‘ı kullanmıştım. Neyse Gradle ile istediğimi alamayınca hemen daha önce SDL için oluşturduğum Ant tabanlı bir “Native-Activity Application (Android)” projesi VS de oluşturup, örnek uygulamayı bunun aracılığı ile paketlemeyi planladım. Gel gelelim ki bir türlü paketleme işlemini Ant ile başaramadım. Aşağıdaki gibi bir hata alıyordum:

Açıkçası google ile biraz didindikten sonra hemen daha önce hazırladığım SDL örneğine döndüm ve onu paketlemeyi denedim. Ta ta! Ne yazık ki aynı sıkıntıyı orada da yaşadım. Sonrasında biraz daha google ile cebelleştikten sonra sorunun kaynağına ulaştım. Google Android SDK 25.3.0 Tools ile birlikte artık eski ant betiklerinin bir kısmını SDK’den kaldırmış (yani adam Gradle kullanın diyor) bu sebeple de VS veya komut satırında NDK projelerini oluşturmaya kalktığınız böyle bir problem ile karşılaşıyorsunuz.

https://developer.android.com/studio/releases/sdk-tools.html SDK Tools, Revision 25.3.0 (March 2017):

“Changes:

  • Obsolete/deprecated tools have been removed:
    • android
    • ddms (instead see Using DDMS)
    • draw9patch (instead see Draw 9-patch)
    • hierarchyviewer (instead see Profile Your Layout with Hierarchy Viewer)
    • traceview (instead see Profiling with Traceview and dmtracedump)
    • ant scripts
    • Project and activity templates”

Gelelim çözüme. Önünüzde iki seçenek var:
1) Aşağıda verdiğim sitelerden geliştirme platformunuza göre ilgili araç dizinlerini indirip Android SDK Tool dizini (varsayılan konumu C:\ProgramData\Microsoft\AndroidSDK\25\tools) ile yer değiştirebilirsiniz,

2) Ya da uygulamanızın paketlemesini Gradle kullanacak şekilde güncellersiniz.  Açıkçası bu önerilen yöntem ve gördüğüm kadarı SFML dahil bir çok proje bu yönde devam ediyor. Açıkçası ben Gradle’ı henüz çok detaylı bilmiyorum ve aslında sadece bir kaç hususu denemek istiyorum bunun için ben ilk yöntemi takip ettim. Muhtemelen VS de bu tarz kullanımları düşünerek halen Ant tabanlı Android proje oluşturma şablonlarını koruyor.

Gelelim sadede. Araçlar ve kütüphanelerin (özellikle açık kaynaklı olanların ama aslında her durumda) yeni sürümlerini kullanmadan önce muhakkak değişiklikleri inceleyin 🙂 Bu arada yeni yazımız için de bir aday ortaya çıkmış oldu: “Oluşturma Araçları”. Bakalım vakit bulabilirsem bir sonraki yazılarımdan birini buna ayırmayı planlıyorum.

Tekrar görüşmek üzere sevgili yazılımperver dostlarım.

Overload 146. Sayı / Ağustos 2018

Arkadaşlar sayfamda uzunca bir süredir takip ettiğim ve iki ayda bir yayınlanan Overload dergisinden kısaca bahsedip, bundan sonra yeni sayıları geldiğinde sizleri bilgilendireceğim. Dergi ACCU organizasyonu tarafından yayınlanmakta ve 1993 yılından beri yayınlanıyor.  En son 146. sayısı yayınlanan Ağustos 2018 sayılı dergi uzunca bir süredir yayınlanıyor, dergi içerisinde ağırlıklı olarak C++ ve yazılım geliştirme konularını… Continue reading

Tetris – v2.0

Evet arkadaşlar bir süre önce yazmaya başladığım ve sizlerle paylaştığım Tetris oyununu nihayetlendirdim. Biraz vakit aldı ama değdi. Burada uzun uzadıya bir önceki sürümden bu yana ne yaptığımı anlatmaktansa kısaca neler eklediğimi sekme sekme anlatıp, tadını çıkarmayı size bırakacağım. İnternette her ne kadar bu tarz oyunlara ilişkin kodlar olsa da çoğu genelde hızlıca yazılmış veya… Continue reading

Modern C++ (6) : Lambda İfadeleri

Evet arkadaşlar, C++ yazılarımıza kaldığımız yerden devam ediyoruz. Lambda yazım ile temel C++ 11 özelliklerini tamamlamış olacağız. Sonrasında belki STL için de bir yazı yazıp, daha sonra C++ 14/17/20’e yelken açabiliriz. Aslında oldukça geniş konu, fakat ben bu yazımda sizlere temel noktaları aktarmaya çalışacağım. Öncelikle  benim gibi bilgisayar bilimleri ile uğraşanlarımız Lambda denilince hemen aklınıza… Continue reading

“C++ as a ‘Live at Head’ Language” Konuşması

C++ konferans videoları izlerken denk geldiğim videolardan birisine ve konu olan kütüphaneye kısaca değineceğim. Kısaca diyorum, çünkü kendim de daha detaylı henüz inceleme şansı bulamadım, incelediğimde, veyahut kullandığımda (ki kullanacağım gibi duruyor) bu yazı üzerinden veya yeni yazılarımda buna değineceğim. Evet konuşmanın (aslında “keynote” imiş kendisi) başlığı: CppCon 2017: Titus Winters “C++ as a “Live… Continue reading

Visual Studio 15.7.4 Güncellemesi

Uzun süre sonra yeni bir VS güncellemesi yazısı atalım. Arada baya bir güncelleme gelmiş oldu. En önemlilerini aşağıda sıralamaya çalıştım: 15.6 güncellemesi ile birlikte Android NDK r15C desteği geldi, LLVM STL düzeltmeleri, C++ 17 standardı güncellemeleri. Daha detaylı değişiklikler için aşağıdaki adrese başvurabilirsiniz: https://docs.microsoft.com/tr-tr/visualstudio/releasenotes/vs2017-relnotes-v15.6 https://docs.microsoft.com/tr-tr/visualstudio/releasenotes/vs2017-relnotes#whats-new-in-157