Evet arkadaşlar CMake ile ilgili ikinci yazımıza hoş geldiniz. İlk yazı için aşağıdaki linki takip edebilirsiniz: Merhaba CMake Bu yazımda CMake ile ilgili diğer kabiliyetlere değinip daha fazla örnekleri inceleyeceğiz. Şunu belirtmem gerekiyor ki her konuda olduğu gibi CMake’i de en iyi öğrenme şekillerinden biri kendi kişisel veya diğer projelerinizde bunu kullanmak ve diğer örnek… Continue reading
VS 2017 ile C/C++ Kütüphanelerin (SFML) Android için Oluşturulması
Tekrar merhaba yazılımperver dostlarım. SDL2’den sonra çoklu platform çalışmalarım için (öncelikle android tabiki) bir süredir kullanmayı planladığım SFML kütüphanesine ilişkin ilk kümeyi hazırladım. Bu amaçla son sürüm olan SFML 2.5.0’ı baz aldım. Ne yazık ki şimdilik sadece X86 ABI’lar için başarılı bir şekilde kullanabildim. Her ne kadar kütüphaneleri başarılı bir şekilde oluştursam da, bir türlü… Continue reading
GitHub Readme.md Şablonu
GitHub’tan “repository” oluşturdunuz ve ReadMe.md dosyasını doldurmak istiyorsunuz. Aşağıda bu konuda size yardımcı olacak bir şablon bulabilirsiniz. https://github.com/yazilimperver/Utilities/blob/master/Readme.md Bunun yanında daha da detaylı düzenleme ipuçları için aşağıdaki adreslere göz atabilirsiniz. https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet https://help.github.com/articles/basic-writing-and-formatting-syntax/ Bu arada ben de bir an önce kendi “repository” ‘lerimin giriş sayfalarını düzenlesem iyi olacak 🙂
Eski Güzel Oyunlar
Sizleri bilmem ama her ne kadar son teknoloji oyunları oynamak keyif verse de. Çocukluğumda oynadığım ve beni bilgisayarın başın mıhlayan nostaljik (eski demekten imtina ederim 🙂 oyunları görmek ve oynamak kadar heyecanlandırmıyor. İşte aşağıdaki site bu anlamda tam bir hazine bir göz atın derim 🙂 Zaten ismi de güzel değil mi? http://www.bestoldgames.net Ayrıca oyunları oynamak… Continue reading
Android İpucu – Thumb Modu
Android veya Arm işlemciler için yazılım geliştiren arkadaşlar VS içerisindeki “General->Project Defaults” altındaki “Thumb Mode” ayarı sizlerin de merakınızı cezbetti mi?
Bu çok kısa yazımda bu ayardan çok kısaca bahsedeceğim. Bu konu hakkında daha detaylı bilgi için aşağıdaki referansları karıştırabilirsiniz. Bu yazımda da Stackoverflow’daki cevaplardan faydalandım.
ARM işlemciler iki temel komut seti sunuyorlar:
- ARM: Buradaki bütün komutlar 32-Bit uzunluğunda,
- Thumb: Burada ise çoğu komut 16-Bit olmak ile birlikte bazı 32-Bit komutlar da sunulmakta.
Hangisini kullanacağınızı VS de olduğu gibi yazılımı oluştururken belirliyorsunuz ve bunlardan çalışma zamanında sadece biri aktif olmakta (Thumb ise komutlar Thumb komut setine göre ayrıştırılır, ARM ise ARM komut satırına göre).
Her ne kadar bunlar farklı komut satırları olarak da görünseler, aslında aynı kabiliyetlerı sunarlar ve aynı Assembly kodları ile ifade edilirler.
Ör:
1 |
ADDS R0, R1, R2 |
kodu
1 2 3 4 5 |
ARM durumunda E0910002 / 11100000 10010001 00000000 00000010 Thumb durumunda ise 1888 / 00011000 10001000 |
olarak ifade ediliyor. Elbette bu iki komutta aynı işlevi yerine getiriyorlar sadece kodlama türleri ve uzunlukları farklı. Thumb’ta bulunan her komutun ARM’da da bir karşılığı bulunmaktadır.
Gelelim Android durumuna. Varsayılan olarak Android Thumb setini kullanıyor, çünkü bu daha kompak kod üretiyor ve kod biraz daha küçülüyor (tabi burada da anlatıldığı üzere bu küçülme öle yarıya inme kadar olmuyor).
Kısaca söylemek gerekirse Thumb ile oluşturulan kodlar biraz daha yavaş olsa da, ARM ile oluşturulan kodlara göre daha kompak oluyorlar. Hikayenin özeti bu 🙂
Bir sonraki paylaşımda görüşmek üzere.
Kaynaklar:
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:
1 2 3 4 5 6 7 8 9 10 11 |
2> [taskdef] Could not load definitions from resource anttasks.properties. It could not be found. 2> [taskdef] Could not load definitions from resource emma_ant.properties. It could not be found. 2> 2>-check-env: 2> 2>BUILD FAILED 2>C:\ProgramData\Microsoft\AndroidSDK\25\tools\ant\build.xml:396: Problem: failed to create task or type checkenv 2>Cause: The name is undefined. 2>Action: Check the spelling. 2>Action: Check that any custom tasks/types have been declared. 2>Action: Check that any <presetdef>/<macrodef> declarations have taken place. |
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,
- Windows => https://dl.google.com/android/repository/tools_r25.2.5-windows.zip
- MacOsX => https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip
- Linux => https://dl.google.com/android/repository/tools_r25.2.5-linux.zip
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.