23 Mart 2018 Cuma

Android Studio Admob Free Plugin Hatası


ionic ile uygulama geliştirirken admobfree eklentisini kurduysanız ve imzalanmış sertifika çıktısını alırken eğer android studio kullanıyorsanız aşağıdakine benzer hatalar alabilirsiniz.

örnek Hata : 

error: package name.ratson.cordova.admob.banner does not exist


İlgili admobfree hatası muhtemelen sizin cordova admob free eklentinizin versiyonu ile ilgili olabilir,  bu hatayı gidermek için son versiyonu aşağıdaki github hesabından giderebilirsiniz. Bu işlem için sırası ile console (terminal) ekranında aşağıdaki komutları çalıştırmanız yeterlidir.


Mevcut plugin i silmek için: 

cordova plugin rm cordova-plugin-admob-free

Yeni versiyonu yüklemek için : 

cordova plugin add https://github.com/RenaudROHLINGER/lycwed-cordova-plugin-admob-free

Yunus Emre Web Developer

Morbi aliquam fringilla nisl. Pellentesque eleifend condimentum tellus, vel vulputate tortor malesuada sit amet. Aliquam vel vestibulum metus. Aenean ut mi aucto.

15 Mart 2018 Perşembe

ionic ile Geliştirilen Projemizi Android Store'da Yayına Almak




İonic framework ile uygulamamızı geliştirdik. Şimdi sıra geldi yayınlamaya, normalde https://ionicframework.com/docs/v1/guide/publishing.html linki takip ederek bu işlemi yapabilirsiniz ama ionic in kendi sitesinde hem işleri uzatıyor hemde biraz kafa karıştırıyor. Ayrıca android play store console için de gerekli bilgi bulunmuyor.


Yapmamız gereken temel işlemler neler  : 


1.Play Stre Developer Hesabı:  Android Play Store dan 100 TL gibi bir ödeme ile hesap açıyoruz. Aşağıdaki linke girerek google mail hesabımız ile oturum açıp ödeme işlemini gerçekleştirebiliriz.

Play Store Developer Hesabı için Giriş :
https://play.google.com/apps/publish

2.Release APK Çıkarma :

 - İonic uygulamamıza Console/Terminal üzerinden cd komutu ile giriş yapıyoruz.

 - Terminal/Console üzerinde "ionic cordova build android --prod --release" komutunu çalıştırıyoruz.

Buradaki --prod ve --release komutları oldukça önemli.

--prod  : uygulamanızı production için derliyor ve uygulama localinizde çalışandan çok daha hızlı hale geliyor.

--release : Uygulamamızı imzalanmamış release apk sını release klasörüne taşıyor. Bu bizim imzalama yapabileceğimiz .apk dosyamız oluyor.

bu işlem sonrasında "UygulamaDizini/Platforms/android/app/release/" klasöründe app-release.apk ismi ile dosyamızı görebiliriz.

3.İmzalanmış Apk Üretimi : 

Bunun için ionic framework sitesinde ne kadar karmaşık şeyler bulunsa da console dan bunlarla uğraşmaya hiç gerek yok.

Sırası ile aşağıdaki işlemleri yapıyoruz.
- Android Studio uygulamamızı açıyoruz.
- "Var olan bir android studio projesini aç" seçeneğini seçiyoruz.
- "UygulamaDizini/Platforms/android/" dizinini android studio da açıyoruz.
- Build Menüsünden "İmzalanmış Sertifika Oluştur" seçeneğini seçiyoruz.(Generate Signed APK)
- İlk çıkan pencerede ileri diyoruz, Ardından aşağıdaki gibi bir ekran karşımıza gelecektir.


Bu ekrandan "Generate new.." seçeneğini seçip formu dolduruyoruz. şifre kısmına istediğiniz bir şifreyi girebilirsiniz ama unutmayın bu şifre artık uygulamayı her yayınlamak istediğinizde kullanacağınız bir şifre, ayrıca uygulamakey.keystore dosyasını da sakın kaybetmeyin yoksa sonra uygulamanızı bu sertifika ile imzalamadıkça uygulamanızı store da güncelleyemezsiniz.

 - Oluşturma işlemi sonrası "key store password:"   kısmına keystore formunda girdiğiniz şifreyi girin.
 - "key alias" kısmına uygulama adınızı girebilir aşağıdaki şifreye de istediğiniz şifreyi yine belirleyebilirsiniz. Sonrasında ileri ileri diyerek tamamlıyorsunuz işlemi.
 - Android studio size imzalanmış apk çıktığında sağ altta bildirim olarak görüntülüyor. Ve Tıklayıp ilgili dizine ulaşıyorsunuz.

Artık imzalanmış apk mız hazır store a bu dosyayı atmamız yeterli :)

4. APK Dosyamızı Store ya Yükleme ve Android Projemizi Yayına Alma İşlemi :




 - Play Store Console hesabımıza girdiğimizde yukarıdaki gibi bir ekran görüyor olacağız. Sağ üst kısımda duran "Uygulama Oluştur Butonuna Tıklıyoruz."
 - Ardından gelen sayfadaki formu dolduruyoruz ve kayıt ediyoruz. Şimdi artık detay sayfasına geliyoruz. sol kısımda ünlem olan menülerin içeriklerini dolduruyor ve uygulamamız için gerekli bilgileri tamamlıyoruz.
 - APK Dosyamızı ise sol menüdeki "Uygulama Sürümleri" menüsünden "Uygulama Sürümleri" kısmına tıklayarak gelen sayfadan sağ üstteki "Üretim Sürümünü Yönet" butonuna tıklayarak çıkan sayfadan yüklüyoruz.

 - Yükleme sonrası Sağ alttan sırası ile önce kaydet, sonrada incele butonlarına tıklıyor ve sonraki sayfadan yayınla butonuna tıklayarak uygulamamızı yayınlıyoruz.

Hepsi bu kadar artık uygulamamız 1-2 saate yayında :)



Yunus Emre Web Developer

Morbi aliquam fringilla nisl. Pellentesque eleifend condimentum tellus, vel vulputate tortor malesuada sit amet. Aliquam vel vestibulum metus. Aenean ut mi aucto.

14 Mart 2018 Çarşamba

Bitbucket ve Git Kullanarak projemizi cloud ortamda takım ile paylaşmak


Takım olarak çalıştığımız projeler için bir yerden sonra mutlaka bir versiyon takip sistemine ihtiyacımız oluyor. Bu ihtiyacı karşılamak için arayışa girdiğimizde ise karşımıza çok çeşitli servis ve seçenekler çıkıyor ve kafamızı biraz karıştırıyor açıkcası.

Bu yazımda son zamanlarda front-end ağırlıklı projelerimde takım projelerimde kullanmaya başladığım bitbucket.org dan bahsediyor olacağım.

Bitbucket Hakkında

Versiyon Takip
Bitbucket kısaca takımınız ile birlikte cloud ortamda kodlarınızı saklayarak çalışmalarınızın her bir versiyonunu takip edebilmenizi sağlayarak takım halinde proje geliştirmenize imkan sağlayan bir servistir.

Proje Yönetim
Bitbucket kendi içerisinde proje yönetim imkanı sağlamasının yanı sıra trello, jira gibi proje yönetiminde kullandığınız uygulamalara da entegre çalışıp proje takibinizi yapmanızı sağlıyor.

Ücretlendirme
Ücret politikası geliştiriciler için oldukça makul düzeyde, eğer 5 kişi ve altında ekip üyeniz var ise sınırsız boyutta ve adette proje için tamamen ücretsiz kullanabiliyorsunuz. 5 kişi ve üstü ekipler için ücretlendirmeyi aşağıdaki görselde inceleyebilirsiniz.





Detaylı bilgi için: https://bitbucket.org/ web sitesini ziyaret edebilirsiniz.



Nasıl Başlarım?  

Adım adım aşağıdaki süreci izleyerek mevcut projemizi bitbucket a taşıyabiliriz.
1.https://bitbucket.org adresinden siteyi biraz inceleyin.
2.https://bitbucket.org/account/signup/ linkini ziyaret ederek üyelik işleminizi tamamlayalım.
3.Ardından Repositories kısmından yeni bir git reposu oluşturalım. Karşımıza aşağıdaki gibi bir ekran geliyor olacak.

4. Bu ekranda "Get Started with command line" kısmının altndaki ilk seçenek olan "I have an exist project" seçeneğini seçiyoruz ve karşımıza aşağıdaki ekran geliyor.

5. Bu ekrandaki direktifler doğrultusunda git bash console umuzu açıyor ve öncelikle cd projedosyayolu yazarak ilgili dizine giriyoruz. Sonrasında 2.step kısmındaki komutları yazıyor ve projemizi git repository mize ekliyoruz.
6. Hepsi bu kadar şimdi tek yapmamız gereken kodlarımız için ilk commit işlemimizi yapmak.
Aşağıdaki kodları sırası ile yazıyoruz.

git status                                           (Bu işlem commit edilecek kodlarımızı bize gösterecek)
git add -A                                         (Bu işlem kodlarımızı commit için local repository de hazırlıyor)
git commit -m "proje ilk commit"   (commit açıklamamızı yazıyoruz.)
git push                                             (Kodlarımızı bitbucket repository mize gönderiyoruz.)

İşte bu kadar artık bundan sonrasu için git pull ve git push işlemleri ile projemizde ekibimiz ile çalışmaya başlayabiliriz.




Yunus Emre Web Developer

Morbi aliquam fringilla nisl. Pellentesque eleifend condimentum tellus, vel vulputate tortor malesuada sit amet. Aliquam vel vestibulum metus. Aenean ut mi aucto.

13 Mart 2018 Salı

Readonly ve Const Değişken arasındaki fark nedir ?


Bu yazımda günlük kullanımda genellikle karıştırılan tipler olan readonly ve const değişkenleri inceliyor olacağız.

Öncelikle bu tipleri temel anlamda inceleyelim.

Readonly : Gerçek zamanlı olarak uygulamamız çalışırken güncellenebilir. Fakat bu güncellenme işlemi sadece contructor da yapılabilir. Constructor metodumuzda readonly değişkeni dilediğimiz kadar güncelleyebiliriz.


Const : Sadece uygulama derleme öncesi bir değer ataması yapabilir. Sonrasında uygulama çalışması esnasında bir güncelleme yapamayız.



Kullanım Alanları 

Const : 

Genel kullanım aşağıdaki şekildedir : 

public class Urun{

const string urunBirimi = "Adet";
const bool garantiDurumu =true;

/*
.
.diğer tanımlamalarımız burada
.
*/

//constructor
public Urun(){



}//Constructor Kapanış

}//Class Kapanış





Aşağıdaki şekilde kullanımı yapamayız : 


public class Urun{


/*Burada bir hata alıyor olacağız. Atama işlemi program çalıştırılmadan önce yapılmalıdır şeklinde.*/
const string urunBirimi ;

const bool garantiDurumu =true;

/*
.
.diğer tanımlamalarımız burada
.
*/

//constructor
public Urun(){

/*burada da uygulama çalışması esnasında atama yapamadığımız için bir hata alıyor olacağız.*/
this.urunBirimi = "Kilogram";

}//Constructor Kapanış

}//Class Kapanış


Özet:
Özet olarak yalnızca uygulama bazında genel tanımlamalarımız için const değişken tiplerini kullanırız.




Readonly : 

Genel kullanım aşağıdaki şekildedir : 

public class Urun{

/*varsayılan değeri olarak Adet belirleniyor */
readonly string urunBirimi = "Adet";
readonly bool garantiDurumu =true;

/*
.
.diğer tanımlamalarımız burada
.
*/

//constructor
public Urun(string _urunBirimi, bool _garantiDurumu){

/*Constructor içerisinde ilgili class ı oluştururken değer ataması yapabilir class ın hareket durumları ve tanımlama birimini belirleyebilirsiniz. */
this.urunBirimi = _urunBirimi;
this. garantiDurumu =  _garantiDurumu;

}//Constructor Kapanış

}//Class Kapanış





Aşağıdaki şekilde kullanımı yapamayız : 


public class Urun{

readonly string urunBirimi ;

readonly bool garantiDurumu =true;
readonly urunAdi;

/*
.
.diğer tanımlamalarımız burada
.
*/

//constructor
public Urun() {

//constructor içerisinde tanımlama yapabiliyoruz..
this.urunBirimi = "Kilogram";

}//Constructor Kapanış


public UrunEkle(string urunAdi,string urunBirimi, string garantiDurumu){
this. urunAdi = urunAdi;


/*Aşağıdaki iki atama işleminde hata alıyor olacağız. Çünkü readonly değişkenler constructor dışında değiştirilemezler.*/
this.urunBirimi = urunBirimi;
this.garantiDurumu  = garantiDurumu;

}


}//Class Kapanış


Özet:
Özet olarak uygulamamız içerisinde class nesne örneklerinin oluşturulmaları esnasında nesnelerin kimliklerini ve hareket kabiliyetlerini belirlemek istiyor ve sonrasında uygulama akışında ilgili değişkenlerin değiştirilmemesini istiyor isek readonly değişkenleri kullanabiliriz.

Readonly ve Const Arasındaki Temel Farklar

 - Const tipine sadece tanımlama sırasında değer atanır, readonly tiplerine tanımlanırken ve constructor metodları içerisinde değer ataması yapılabilir.

 - Const tipleri metodlar içerisinde tanımlanabilir, fakat readonly tiplerini metodlar içeirsinde tanımlayamayız.

 - Const tipini statik anahtar kelimesi ile statik metod ve tanımlama olarak kullanamayız fakat readonly tipleri statik olarakta kullanabiliriz.

 - Const tipleri sadece derleme aşamasında tanımlanan sabitlerdir, readonly tipleri uygulama çalışma zamanında tanımlanan sabitlerdir.



Örnek : (Dependency Injection,  Readonly Değişken Kullanımı)

Biraz daha üst seviye bir örnek vermek gerekir ise Dependency Injection Design Pattern ını implemente ederken, soyut tipleri sadece constructor da değiştirmemiz ve uygulamanın geri kalanında ilgili değişkenlerin değiştirilmemesi gerekir. Bunun için readonly değişkenleri kullanabiliriz.


public interface IDBUrun{

void Ekle(string urunAdi);

void Guncelle(string urunAdi, string urunDurumu);

void Sil(string urunAdi);

}//Class Kapanış



public class DBUrun : IDBUrun {

void Ekle(string urunAdi){

//ürün ekleme kodları
}

void Guncelle(string urunAdi, string urunDurumu){

//ürün Güncelleme kodları
}

void Sil(string urunAdi){

////ürün silme kodları
}



}//Class Kapanış



public class Urun{

private readonly IDBUrun dbUrunIslem = null;


//constructor
public Urun(IDBUrun _IDBUrun){

//dependency injection ile constructor da ilgili soyut class ımızı implemente ediyoruz.
this.dbUrunIslem = _IDBUrun;

}


void UrunEkle(string urunAdi){

//dependency injection ile elde ettiğimiz class ımızın ekle metodunu kullanıyoruz.
this. dbUrunIslem.Ekle(urunAdi);

}


}//Class Kapanış














Yunus Emre Web Developer

Morbi aliquam fringilla nisl. Pellentesque eleifend condimentum tellus, vel vulputate tortor malesuada sit amet. Aliquam vel vestibulum metus. Aenean ut mi aucto.