Bilgisayar
OKUDUĞUNUZ KONU
APP Inventor – BELLEK Kısıtlamalarını Nasıl Aşarız ?
0

APP Inventor – BELLEK Kısıtlamalarını Nasıl Aşarız ?

Yazar : Turgut Güneysu16 Kasım 2018

Merhaba,

MIT AI ile çalışan herkesin gelip çakıştığı bir nokta projenin boyut limitleridir.

Bilindiği gibi AI’nın hem 10MB hem de 10 sayfa gibi limitleri var. Bundan dolayı yeni kodlamaya başlayan bir çok kimse bu limitlere vardıklarında zorluk çekerler. Bunun en önde gelen sebebi de ilk kodlamaya başlandığında sayfaları AI içinde yaratmanın kolaylığı. Fakat kısa bir süre sonra bu limitlere varıldığında proje çökebilir.

Genelde projeleri en az kaynak kullanacak yöntemlerle dizayn etmek en doğrusudur. Sayfa gereksinimleri değişik teknik uygulamalarla azaltılabilir.

Aşağıdaki teknikleri uygulayarak bu bellek limitlerini aşmak veya da daha optimize kullanmak mümkün:

1. AWS (Amazon Web Services) sunucu servisindeki APP Inventor’u kullanın:

Bu en kolay sonuca ulaştıran yöntem. Uygulamalarınızı AWS AI  sunucusunda geliştirirseniz 10MB limit ortadan kalkacaktır. Bildiğiniz AI kullanımıyla aynı, yalnız sunucusu başka.

2. Kullanmadığınız medya dosyalarını silin:

Bu da ikinci en kolay yöntem. Aslında ilk okunduğunda saçma bile zannedilebilir. Fakat alışkanlıktan, uygulamayı geliştirirken belki bir sürü değişik resim ve medyaları AI’ya yüklemiş olabilirsiniz. Uzun çalışmalar sonunda hangi medyaları kullanıp hangisini kullanmadığınızı kontrol etmek size epey yer kazandırabilir. Kullanmadıklarınızı MEDIA UPLOAD kısmından silmeniz gerekir. Yoksa programda kullanmasanız bile APK dosyanızın boyutu bütün bu medyalardan dolayı gereğinden fazla yer alacaktır.

3. MEDYA boyutlarını ufaltın:

Uygulamanızın ekranda sunacağı resim boyutlarına yakın boyutta resim yüklerseniz daha kullanışlı olur. Örneğin 7MB resim yüklediniz, fakat ekrandaki yer gayet ufak. AI otomatikman bu resmi cihaz grafiğine sığacak şekilde yeniden boyutlandırır. Fakat uygulama boyutu yüklediğiniz boyuta göre hesaplandığından gene de 7MB yer alır ve program boyutuna aksi bir etkisi olur. Çözünürlük haricinde resimlerinizin renk derinliğinin de aynı şekilde aksi etkileri olabilir. Eğer 8- veya 16-bit derinlik yetecekse, 24- veya 32-bit renk derinliğine lüzum yok. JPEG le çalışırken sıkıştırma oranlarını kontrol edin. Aşağıdaki tablo 500×500 trueColor bir resim için değişik sıkıştırma oranlarının boyuta etkisini gösteriyor. Resimleri ayrı sekmelerde açıp karşılaştırın. 155K ile 22K arasındaki farkı ekranda görebiliyormusunuz? Eğer 22K işinize yarar da 155K kullanıyorsanız, 86% fazla yer harcıyorsunuz demektir.

TrueColor: 155K   Orijinal
JPEG 99%:  144K   S99
JPEG 98%:  126K   S98
JPEG 90%:   78K   S90
JPEG 80%:   57K   S80
JPEG 50%:   32K   S50
JPEG 25%:   22K   S25

4. HTML sayfalarını AI nın içine yüklemek:

Burada ilk dikkatinizi çekecek şeyin “HTML SAYFA” olması gerekir. Evet, uygulama sayfalarınızı HTML olarak da kodlayabilirsiniz. Hatta aşağıdaki örnekte yapıldığı gibi, sayfadaki resimleri bile Internet’ten yükleyebilirsiniz.

Proje sayfalarınızı HTML ile dizayn etmeniz size büyük bir avantaj sağlayacaktır. AI’nın sayfa dizayn kısıtlamalarını aşarak JavaScript, JQuery, Hammer.js, CSS gibi ek kodlamalarla sayfalarınız daha kullanışlı hale gelebilir, AI’da mümkün olmayan sayfa kaydırma gibi özellikleri ekleyebilirisiniz. Eğer HTML ile oynamaya başlarsanız yeni eklenen “App Inventor için Webview Javascript işlemcisi” özelliğini de gözden geçirin.

Bu bloğu kullanarak uygulamanız ve HTML sayfasındaki JavaScript kodunuz arasında veri takası yapıp daha esnek bir işlem yapma yöntemi kazanabilirsiniz. Bu blokun kullanım detaylarını AI Referans sayfalarından okuyabilirsiniz: WebViewer Öğesi.

Ayrıca sayfalarınızı hem bu kısımda anlattığım AI’ya yükleme ile veya da 5ci kısımda anlattığım gibi dışarıdan yükleyerek bellek kullanımını azaltabilirsiniz.

HTML sayfalarınız AI’nın WEB VIEWER öğesinde kullanılır ve MEDIA gibi ASSET olarak sisteme yüklenir. Bunun yapılması MEDIA / UPLOAD FILE yöntemiyle olur. Bu şekilde sisteme yüklediğiniz HTML sayfalara WEB VIEWER Home URL ayarını değiştirerek direkt olarak ulaşabilirsiniz.

Bunu uygularken göz önünde tutmanız gereken önemli bir PÜF noktası var:

AI programlarının ASSET’leri ANDROID sistemde nerede tutuluyor ?

Bu sorunun cevabı iki değişik dosya adı:

  • Programı yaratırken ve test ederken, yani CEP telefonunuzdaki MIT AI COMPANION a bağlı olarak çalışırken kullanacağınız dosya adı:

file:///mnt/sdcard/AppInventor/assets/

  • Programı bitirdikten sonra APK yaratma safhasında, yani CEP telefonunuza yüklenecek versiyonu yaptığınız kademede ise:

file:///android_asset/

Şimdi bu bilgiyi uygulayarak HOME URL öğesini nasıl ayarlayacağımızı göstereyim:

Eğer HTML sayfamızın dosya adının TEST1.HTML olduğunu farzedersek, programımızı geliştirirken HOME URL şöyle olmalı:

Programımızı bitirdikten sonra ise APK yaratma kademesinde HOME URL i şöyle ayarlamak gerekli:

Bu işi kolaylaştırmak için programımıza bir değişken eklememiz lazım. Bu değişken program geliştirmenin iki safhasını kontrol etmemize yardımcı olacak ve HOME URL ayarını ona göre ayarlamamızı sağlayacak. Değişkenimizin adı devMode olsun, yani ‘development mode’:

Programımızı yazıp test ederken bu değişkeni TRUE (DOGRU) olarak ayarlayalım. Programımız bitince APK safhasında da bunu FALSE (YANLIŞ) olarak ayarlayalım.

Şimdi bu yeni değişkeni kodumuza ekleyerek HOME URL dosyasını her iki safhada da doğru olarak ayarlayabiliriz:

Aynı teknikle BUTON basma kodları da ayarlanabilir:

Geliştirme projesi:

  • Simdi bu tekniği uygulayarak üç tane HTML sayfası yaratın.
  • Bunların HTML dosyalarını MEDIA ASSET kısmına UPLOAD (yükle) edin.
  • AI programınızda bir sayfaya üç tane BUTON koyun.
  • BUTONların kodlarını bu üç sayfaya ulaşacak şekilde ayarlayın.
  • Buton sayfasının üst kısmına bir WEB VIEWER öğesi koyun.
  • Bunun HOME URL ayarını her sayfa düğmesine basıldığında üç sayfadan birine değiştirerek web sayfalarınıza ulaşın.

Bu projenin ÖRNEK koduna ve HTML sayfalarına şu linklerden ulaşabilirsiniz:

AI Proje Linki:   HTMLPageLoad.aia

AI Proje APK:  HTMLPageLoad.apk

HTML1: testPG1.html

HTML2: testPG2.html

HTML3: testPG3.html

 

5. HTML sayfalarını AI ya dışarıdan yüklemek:

Bu teknik evvelkinden daha da güçlüdür, çünkü sayfa yaratma kodunuz tamamen AI programının dışında olduğundan 10 sayfa limiti sizi kısıtlamaz. Tabi ki çok fazla kod yazarak gene de 10MB limitine ulaşma imkanı vardır. Fakat hiç olmazsa yazacağınız kodlar sayfa yaratmaya değil program detaylarını çalıştırmaya yarayacaktır.

Evvelki  “4. HTML Sayfalarını AI’nın içine yükleme” kısmında olduğu gibi aynı projeyi kullanarak bu tekniği deneyebilirsiniz.

Arada iki tane değişiklik olacak:

  • devMode değişkenine lüzum yok ! Çünkü hem geliştirirken hem de APK yaratırken kodumuz aynı işi yapacak.
  • HOME URL ayarı HTML dosyalarınızı yüklemeniz gereken web site veya hosting servis URL ine göre ayarlanacak

Bunları uygulayarak kodumuz söyle olmalı:

Yukarıdaki kod parçaları kullanabileceğiniz komutların nasıl ayarlanması gerektiğini gösteriyor.

Dikkat edilmesi gereken birkaç nokta var:

  • HTML dosyalarınızı hosting sitesine yüklemeniz gerekir ve yüklediğiniz klasör adını hatırlayıp bir kenara yazın. Hosting için varsa kendi sitenizi, yoksa ücretsiz ulaşılabilen  değişik servisleri, veya da Google Drive gibi bir ortamı kullanabilirsiniz.
  • <websiteadresi>  ve <klasör> alanlarını sizin kullanacağınız web site adres URL ine ve klasörüne göre değiştirmeniz gerekir.
    Örneğin: web sitenizin URL i ‘www.benimsitem.com’ ise ve HTML dosyalarının tutulduğu klasör de ‘public’ ise, ayarlama şöyle olmalı:

http://www.benimsitem.com/public/TEST1.html

  • Yüklemenizin doğru çalıştığını denemek için tarayıcınıza site adresini girerek sayfaya ulaşmaya çalısın. Sayfa gelirse adres doğru demektir. Programınızı buna göre sonuçlandırabilirsiniz.
    Örneğin: yukarıdaki aynı adlarla tarayıcınıza

http://www.benimsitem.com/public/TEST1.html

yazıp yolladığınızda TEST1 HTML sayfasını tarayıcı da görmeniz gerekir. Çıktıysa adresler / linkler doğru demektir.

Evvelki örnekteki proje dosyalarını kullanarak bu değişiklikleri yapın ve uygulamayı da deneyin.

Bu tekniklerle projelerinizi limitlerden muaf tutmayı başarmanızı dilerim.

SİZCE NASIL OLMUŞ?
Beğendim
0%
İlginç
0%
Eh İşte
0%
Anlamadım
0%
Kötü
0%
Berbat
0%
YAZAR HAKKINDA
Turgut Güneysu
Turgut Güneysu
Anadolu'nun tam ortasında ufak bir köyden memleketimizin çocuklarına STEM programlarına uygun bilgisayar, robotik, yazılım, donanım, mikro işlemciler hakkında yardımcı olmaya çalışıp, emekli hayatımın zevkini çıkarıyorum. Gençlerimizin kabiliyetlerinin sonsuz olduğuna ve onları doğru yönlendirirsek değerli katkılarla ortamımızı dünya çapına ulaştıracaklarına inanıyorum.
YORUMLAR

YORUM YAP