HMS Kitleri İle Mobil Uygulama Geliştirme

Hsdyalova
6 min readOct 7, 2022

--

Merhaba, ben Arif Karaçalıoğlu. Huawei Mobile Developer olmaya karar verip, Harmony OS ve Android’e yönelik bir uygulamayı Huawei Mobile Services kitleri ile geliştirmek istediğimde, Türkçe kaynakların azlığından ve yetersizliğinden çok yakınmıştım. Sorunsuz olarak uygulamamı çalıştırmak ve Huawei kitlerini kullanabilmek için parça parça bir çok dökümantasyon taramak zorunda kalmıştım.
İnternetten online olarak izlediğim bir çok kaynak eskimiş, veya eksik kalmıştı.
Tüm parçaları birleştirirken geçen vakit kaybını, siz yaşamayın ve eksiksiz bir Türkçe kaynak da olsun amacıyla, HSD Yalova ekibi olarak bu yazıyı hazırlamaya karar verdik.

Öncelikle belirtelim ki, bu yazı hali hazırda bir huawei developer hesabınız olduğu varsayımı ile ilerleyecek. Yani Huawei Developer Account açma kısmı anlatılmayacak.

Başlayalım, ilk iş olarak Huawei Developer Console’a giriş yaparak, AppGallery Connect’e ve ardından My apps kısmına giriyoruz. Burada New App’e tıklayarak yeni bir uygulama oluşturmaya başlayacağız.

Yeni uygulama oluşturma ekranında, içeriği bu şekilde dolduralım : (uygulamanızın_ismi yazan yerde kendi belirlediğiniz isim olabilir)

Güzel, uygulamamızı ve projeyi oluşturduk. Şimdi, App Information sayfası karşınıza gelmiş olmalı. Ama burası ile şimdilik işimiz yok (Yayınlayana kadar da olmayacak).
My apps yazan butona tıklayıp, My projectse geçelim. Oluşturduğunuz proje seçili değilse projenizi üst bardan değiştirin. İlk defa projeye girdiğinizde, karşınıza bir pop-up pencere geliyor, burada sizden paket ismi vermenizi istiyor.

Biz paket ismimizi ne olur ne olmaz diyerek manuel olarak gireceğiz, peki burada istenen paket ismi ne? Bu paket ismi geliştirdiğiniz mobil uygulamanızın paket ismi ile aynı olmalı. Örneğin Android Studio’da yeni bir proje oluştururken paket ismi olarak com.example.helloworld tarzında bir paket ismi default olarak gelir ve siz onu değiştirirsiniz ya, işte bu, o. Bu paket isimleri, projeye özeldir ve bir app gallery veya play store’da aynı paket ismine sahip 2 uygulama olamaz. Paket isminizi eşsiz olarak seçmeye özen gösterin. Şimdi “Manually enter a package name” seçeneğine tıklayarak uygulamanıza koymuş olduğunuz paket ismini girin ve kaydedin.

Şimdi karşınızda General Information başlığı altında Şöyle bir sayfa gelmiş olmalı ;

Not: Üstünü karaladığım bilgileri, siz de kimse ile paylaşmamaya özen gösterin.

Bu sayfada bulunan API Key, agconnect-services.json SHA-256 certificate fingerprint kısımlarını uygulamamızı geliştirirken kullanacağız.
Kısa kısa neler olduklarını açıklayalım;

API Key : Huawei Api’lerine erişim sağlarken, Huawei bu api’leri kimin kullandığını anlayabilmesi için herkese unique bir API Key atar.

agconnect-services.json : JSON tipinde bir konfigürasyon dosyasıdır, içerisinde size ve projenize ait bazı bilgilerin yanı sıra, hangi kitleri kullanacağınıza dair bilgiler de barındırır. Uygulamayı geliştirirken olmazsa olmaz bir dosyadır ve her yeni kiti açtıktan sonra dosyanın güncel halini uygulamaya koymanızı gerektirir.

SHA-256 Certficate fingerprint : Uygulamanızı imzalarken kullanacağınız şifrelenmiş bir değer. Yine olmazsa olmaz bir konu, neyse ki nasıl alınacağını anlatacağız.

Şimdilik Huawei Console açık kalsın fakat biz uygulamamızı oluşturmaya başlayalım..
Geliştirme ortamı olarak Android Studio kullanacağız.

Uygulamayı oluştururken, Empty Activity seçeneği ile devam ediyoruz, dil olarak Java seçiyoruz (İsterseniz kotlinde kullanabilirsiniz, biz java ile tercih ettik) ve Package Name’ini belirlerken unutmayın, Huawei Developer Console’da oluşturduğumuz projede verdiğimiz Package Name ile aynı olmalı.

Android Uygulamamızı oluşturduk. Şimdi Huawei kütüphanelerini kurabilmek ve çalıştırabilmek için gerekli konfigürasyonları şu başlıklar altında öğreneceğiz ;

1-) agconnect-services.json dosyasının yerleşimi
2-) Kütüphaneleri Gradle ile eklemek

Uygulama imzalamayı ise bu içeriğin 2.Partında, Huawei kitleri ile örnek uygulamamızı yaparken ele alacağız. Aksi halde bu içerik gereğinden fazla uzayacak.

Başlayalım,
agconnect-services.json dosyası, My Projects içerisinde uygulamanızı seçtikten sonra General Information altında bulunur.

agconnect dosyasını indirdikten sonra, Android projemizin app modülü içerisine isim değişikliği yapmadan yerleştirmemiz gerekiyor. Bunun için Android Studio’da default olarak sol üstte bulunan ve Android seçili olan görünüm sekmesinde, Project seçeneğini işaretleyelim.

Şimdi agconnect dosyasını app klasörü altına yerleştirelim.

Agconnect dosyasını içeriğin 2.Partında uygulama geliştirme aşamasında kullanıma açacağımız kitlerle beraber tekrar güncelleyeceğiz. Şimdilik bu şekilde durabilir.

Şimdi, kütüphanelerin kurulabilmesi için gerekli konfigürasyonları yapmamız ve kütüphaneleri gradle dosyasına eklememiz gerekiyor. Ama bu konuda bilmeyen ve ilk defa yapacak olanlar için bir kaç önemli nokta var ve eksik yapıldığında senkronizasyonda kütüphane yolunu bulamayan veya kütüphanenin indirilemediğini belirten hatalar döndürüyor.
Bu konu genellikle, farklı gradle sürümlerinde farklı yollar izlememiz gerektiğinden dolayı oluşuyor.

Örneğin biz, 7.2.2 Gradle sürümlü uygulamamıza hms kitlerini entegre edelim, 7.0 ve 7.0'dan düşük gradle seviyelerinde çalışma yapanlar için farklılıkları gösteren huawei dökümantasyonunu link olarak verelim ;

3 Aşamalı konfigürasyonumuza, app seviyesinde build.gradle dosyasından başlayalım.

Dosya içerisinde bulunan dependencies içerisine yeni bir implementation daha ekleyelim ;

implementation ‘com.huawei.agconnect:agcp:1.6.0.300’

Henüz sync now yapmamıza gerek yok, birazdan tüm eklemeleri yapınca yapacağız. Şuan da zaten yolu bulamayacağı için senkronize işlemini gerçekleştirmez. Hata döndürmese de, Build ekranına baktığınızda şu uyarı ile karşılaşırsınız ;
“ Failed to resolve: com.huawei.agconnect:agcp:1.6.0.300 “

Projede bulunan settings.gradle dosyasına geçelim, bu işlemi gradle sürümü 7.0'dan daha düşük olan geliştiricilerin yapmasına gerek yok. 7.0 ve daha üstünde ise farklılıklar olabiliyor, biz şuan da 7.1 ve üstü için çalışıyoruz unutmayalım.

Bu dosyayı şu şekilde güncelleyelim ;

pluginManagement { 
repositories {
gradlePluginPortal()
google()
mavenCentral()
// Configure the Maven repository address for the HMS Core SDK.
maven { url 'https://developer.huawei.com/repo/' }
}
}
dependencyResolutionManagement {
...
repositories {
google()
mavenCentral()
// Configure the Maven repository address for the HMS Core SDK.
maven { url 'https://developer.huawei.com/repo/' }
}
}

Burada eklediğimiz maven repoları ile artık kütüphanelerin nereden indirileceğini projemize tanıttık. Güzel.

Şimdi, proje seviyesindeki build.gradle dosyasına geçelim, ilk açtığımız ve içerisinde impelementations’ların bulunduğu dosya değil bu, dikkat edelim.

Bu dosyanın ilk hali şöyleydi ;

plugins {
id 'com.android.application' version '7.2.2' apply false
id 'com.android.library' version '7.2.2' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}

Dosyayı, şu hale güncelleyelim ;

buildscript {
repositories {
google()
mavenCentral()
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
classpath "com.android.tools.build:gradle:7.2.2"
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
plugins {
id 'com.android.application' version '7.2.2' apply false
id 'com.android.library' version '7.2.2' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}

classpath’lerde gradle sürümünüzü kendinizinki ile değiştirebilirsiniz.
buildscript bloğunun plugins bloğundan önce geldiğine lütfen dikkat edin, eğer plugins üst kısımda yer alırsa hata alacaksınız.

Eveeet, mobil uygulamamıza huaweinin agconnect kütüphanesini ve repolarını kurduk, ilk kütüphanemizi de entegre ettik. Bu içeriği çok fazla bilgi bombardımanı olmaması ve her şeyin birbirine karışmaması için, burada bırakalım ve uygulamamızda örnek bir huawei kitini kullanmayı, diğer kütüphaneleri kurmayı ve bu doğrultuda agconnect dosyasını güncellemeyi, uygulama imzalamayı ve SHA-256 fingerprint almayı bu içeriğin 2.Partına bırakalım.
2.Partta Account Kit kullanarak Huawei ID’miz veya hesabımız ile uygulamaya giriş işlemlerini yapacağız ve uygulamamızın buildini alarak çalıştıracağız.

Görüşmek üzere!

--

--