Merhabalar
Android projelerinizde mutlaka dışarıdan dahil edeceğiniz, başkalarıyla paylaşmayacağınız, size özel API keyler ya da buna benzer değişkenleri nasıl barındırmamız gerekiyor bu yazıda bundan bahsetmeye çalışacağım.
Şimdi şöyle düşünün bir projeniz var ve içerisinde sadece sizin görmek isteyeceğiniz başkalarıyla paylaşmamanız gereken bir API key kullanıyorsunuz ve projenizi bir VCS(Github,Bitbucket,Gitlab vs) ile paylaşmak durumundasınız. İşte bu durumda alttaki adımları takip ederek API key değişkeninizi rahatlıkla gizleyebilirsiniz.
Öncelikle bir Git VCS ile çalışacağımızdan projenizin ana dizinine .gitignore
dosyası oluşturuyoruz. Bunun için Android Studio’da sol tarafta bulunan Project görünümünden alttaki gibi Project kısmını seçiyoruz.
Daha sonra projenin ana dizinine sağ tıklayıp New -> File -> .gitignore dosyası oluşturuyoruz.
Ayrıca yeri gelmişken belirteyim bu dosya içerisine yazdığınız dosya isimleri kesinlikle git servera push edilmeyecektir. Şimdi bu dosya içerisine gradle.properties
dosya ismini ekliyoruz. Evet git kısmı ile ilgili işlemlerimiz bitti. Şimdide API key değişkenini nasıl tanımlayacağımıza geçelim. Bunun için altta gördüğünüz gibi biraz önce .gitignore
dosyasına eklediğimiz gradle.properties
dosyasını açıyoruz ve içerisine API key değişkenini ekliyoruz.
1 |
APIKEY="e0bsg32fw28fsvm26nsba4g" |
Şimdi yine aynı dizinde bulunan build.gradle (Module:app)
dosyasını açıp android kapsamının sonuna alttaki kodları ekliyoruz ve üst barda çıkan Sync Now tıklıyoruz.
1 2 3 4 5 6 |
android { ... buildTypes.each{ it.buildConfigField 'String','MY_API_KEY', APIKEY } } |
Evet şimdi sıra geldi bu değişkeni çalıştığımız java kodları arasına almaya.
Şu aşamaya kadar alttaki kodlarla bu değişkeni bir String değişkene atayıp kendi kodlarımız arasına alabiliriz.
1 |
String apiKey = BuildConfig.MY_API_KEY |
Ancak benim size tavsiyem bu şekilde değilde daha çok OOP standartlarına uymak amaçlı alttaki yöntemle kodlarınızda kullanmanız. Bunun için Constants adında bir class oluşturun ve içerisine static bir değişken tanımlayın.
1 2 3 4 5 |
public class Constants { public static final String API_KEY = BuildConfig.MY_API_KEY; } |
Kendi kodlarınızda da artık
1 |
Contants.API_KEY |
şeklinde kullanabilirsiniz.
Hepsi bu kadar. Umarım faydalı olmuştur.
Kaynaklar :
- http://www.rainbowbreeze.it/environmental-variables-api-key-and-secret-buildconfig-and-android-studio/
- https://azevedorafaela.wordpress.com/2015/09/17/environmental-variables-buildconfig-gradle-properties-and-android-studio/
- http://stackoverflow.com/questions/33134031/is-there-a-safe-way-to-manage-api-keys
- http://stackoverflow.com/questions/21894603/use-crashlytics-within-a-product-flavor-in-android-studio