HarmonyOS, çapraz platform mimarisi desteğine sahip dağıtık bir mikro çekirdek üzerine inşa edilmiş Huawei'nin tescilli işletim sistemidir. Uygulama geliştirme, ArkUI çerçevesi ile DevEco Studio ortamında ArkTS ve C++ ile yapılır. Sistem, akıllı telefonlar, tabletler, saatler ve IoT cihazlarının sorunsuz entegrasyonu için tasarlanmıştır. Huawei'ye göre HarmonyOS, dünya çapında 700 milyondan fazla cihazda kuruludur.
Önemli Noktalar
HarmonyOS, Huawei tarafından geliştirilen ve ilk olarak 2019 yılında şirketin yeni cihazlarında Google hizmetlerine erişimin kısıtlanmasına yanıt olarak duyurulan dağıtık bir işletim sistemidir. HarmonyOS, Linux'tan farklı olarak kendi mikro çekirdeği üzerine inşa edilmiştir ve akıllı telefonlar, tabletler, akıllı saatler, televizyonlar, otomotiv sistemleri ve IoT cihazları arasında sorunsuz çalışma için tasarlanmıştır.
Huawei'ye (HarmonyOS Ekosistem Raporu, 2026) göre sistem, 300 milyon akıllı telefon dahil olmak üzere 700 milyondan fazla cihazda kuruludur. Çin pazarı, kurulumların %95'ini oluşturmaktadır. HarmonyOS 5.0 (NEXT, 2024) ile birlikte sistem, Android AOSP uyumluluğunu tamamen terk etmiştir — tüm uygulamalar ArkTS veya C++ ile ArkUI kullanılarak yazılmalıdır.
HarmonyOS'un temel özelliği dağıtık mimarisidir: bir uygulama aynı anda birden fazla cihazda çalışabilir ve arayüzü ekranlar arasında taşıyabilir. Örneğin, kullanıcı telefonda navigasyon başlatırken arayüz araç ekranında görüntülenir — yeniden derleme veya ek kod gerektirmez.
HarmonyOS 1.0 (2019) — akıllı telefonlar için değil, Smart Screen için ilk sürüm. HarmonyOS 2.0 (2021) — akıllı telefonlar, tabletler ve saatler için açıldı, AOSP uygulama desteği. HarmonyOS 3.0 (2022) — gelişmiş dağıtık mimari, Super Device, Multiscreen Collaboration. HarmonyOS 4.0 (2023) — ArkUI 3.0, Live View, gelişmiş performans. HarmonyOS NEXT (5.0, 2024) — AOSP'nin tamamen terk edilmesi, yalnızca yerel HarmonyOS uygulamaları.
| HarmonyOS sürümü | Yıl | Temel yenilik |
|---|---|---|
| 1.0 | 2019 | Smart Screen TV için ilk sürüm |
| 2.0 | 2021 | Akıllı telefonlar, tabletler, AOSP uyumluluğu |
| 3.0 | 2022 | Super Device, Multiscreen Collaboration |
| 4.0 | 2023 | ArkUI 3.0, Live View, Celia Voice Assistant |
| NEXT (5.0) | 2024 | AOSP'nin tamamen terk edilmesi, mikro çekirdek, yalnızca ArkTS |
HarmonyOS mimarisi, Android ve iOS'tan temel olarak farklıdır. Monolitik Linux çekirdeği yerine HarmonyOS, minimum ayrıcalıklı işlevleri uygulayan kendi mikro çekirdeğini kullanır: bellek yönetimi, işlem planlaması ve süreçler arası iletişim. Diğer tüm hizmetler kullanıcı alanında çalışır.
HarmonyOS mikro çekirdeği yaklaşık 10.000 satır koddan oluşur (Linux çekirdeği 20 milyondan fazladır). Daha küçük kod tabanı, daha küçük saldırı yüzeyi anlamına gelir. Sistem biçimsel doğrulama — çekirdek kodunun doğruluğunun matematiksel kanıtı — kullanır. HarmonyOS, biyometri, ödemeler ve şifreleme anahtarları için donanım düzeyinde Trusted Execution Environment (TEE) destekler. Süreçler arası iletişim, Android'deki Binder'dan 5 kat daha performanslı olan IPC aracılığıyla uygulanır.
HarmonyOS mimarisi dört katmandan oluşur: Kernel Subsystem (mikro çekirdek + sürücüler), System Service Layer (sistem hizmetleri: dağıtık veri, dosya sistemi, güvenlik), Framework Layer (ArkUI, multimedya, telefon, AI hizmetleri), Application Layer (kullanıcı uygulamaları). Her katman, IPC aracılığıyla alt katmandan izole edilmiştir.
HarmonyOS, tüm kullanıcı cihazlarının depolama alanını tek bir sanal alanda birleştiren bir Dağıtık Dosya Sistemi (DFS) sağlar. Bir uygulama, cihaz belirtmeden URI ile dosyalara erişir — sistem isteği dosyanın fiziksel olarak depolandığı cihaza yönlendirir. DFS, uçtan uca şifreleme ve sık kullanılan verilerin otomatik çoğaltılmasını destekler.
// HarmonyOS dağıtık dosya sistemi ile çalışma
#include <dfs/storage_manager.h>
#include <uri/uri_helper.h>
using namespace OHOS::Storage;
// Dağıtık bir cihazda dosya URI'si alma
Uri GetDistributedFileUri(const std::string& localPath) {
DistributedFileManager manager;
auto deviceList = manager.GetOnlineDevices();
for (const auto& device : deviceList) {
Uri uri = manager.GetFileUri(device.deviceId, localPath);
if (uri.IsValid()) {
return uri; // Dosya cihazlardan birinde bulundu
}
}
return Uri::Empty();
}
// Uzak bir cihazdan veri okuma
std::string ReadDistributedFile(const Uri& uri) {
DistributedFile file(uri);
if (!file.Open(OpenMode::READ_ONLY)) {
return "";
}
char buffer[4096];
size_t bytesRead = file.Read(buffer, sizeof(buffer));
file.Close();
return std::string(buffer, bytesRead);
}Örnekte, DistributedFileManager kullanıcının tüm çevrimiçi cihazlarında bir dosya arar ve dağıtık bir URI döndürür. DistributedFile, uygulama için şeffaf bir şekilde IPC aracılığıyla uzak cihazda dosyayı fiziksel olarak açar. Geliştiricinin verilerin nerede depolandığını bilmesi gerekmez — sistem isteği otomatik olarak yönlendirir.
ArkUI, Huawei tarafından geliştirilen HarmonyOS'un bildirimsel UI çerçevesidir. Arayüz, SwiftUI (iOS) veya Jetpack Compose (Android) benzeri şekilde reaktif veri bağlamalı bileşenler hiyerarşisi olarak tanımlanır. ArkTS, ek statik tipleme ve @Component, @State, @Prop, @Link dekoratörleri aracılığıyla ArkUI ile entegrasyon sağlayan TypeScript tabanlı bir geliştirme dilidir.
ArkTS, UI çerçevesi uyumu için TypeScript'i genişletir: @Component — bir UI bileşeni bildirmek için dekoratör, build() — UI öğeleri ağacı döndüren zorunlu yöntem, @State — değişiklikleri bileşeni otomatik olarak yeniden çizen reaktif değişken, @Prop — ebeveynden giriş özelliği, @Link — çift yönlü bağlama. Tüm ArkUI bileşenleri, değiştiricilerle (.width, .height, .backgroundColor) zincirleme sözdizimi kullanır.
// ArkTS — ArkUI'de kullanıcı profili ekranı
@Component
struct ProfileScreen {
@State userName: string = "Anna Petrova";
@State avatarUrl: Resource = $r("media.avatar_default");
@State isLoading: boolean = false;
@Prop onEditClick: () => void;
aboutToAppear(): void {
this.loadUserData();
}
async loadUserData(): Promise<void> {
this.isLoading = true;
try {
const data = await UserService.getProfile();
this.userName = data.name;
this.avatarUrl = data.avatarUrl;
} catch (error) {
console.error("Yükleme hatası", error);
} finally {
this.isLoading = false;
}
}
build(): void {
Column() {
if (this.isLoading) {
LoadingProgress()
.width('50%')
.height('50%');
} else {
Stack({ alignContent: Alignment.Center }) {
Image(this.avatarUrl)
.width('100%')
.height('100%')
.objectFit(ImageFit.Cover);
Column() {
Text(this.userName)
.fontSize('24fp')
.fontWeight(FontWeight.Bold)
.fontColor(Color.White);
Button("Düzenle", {
type: ButtonType.Capsule,
stateEffect: true
})
.onClick(() => {
this.onEditClick();
})
.margin({ top: '12vp' });
}
.alignItems(HorizontalAlign.Center)
.width('100%');
}
.width('100%')
.height('300vp');
}
}
.padding('16vp')
.width('100%')
.height('100%');
}
}
// Uygulama giriş noktası
@Entry
@Component
struct MainApp {
build(): void {
Column() {
ProfileScreen({
onEditClick: () => {
console.info("Profil düzenleyiciyi aç");
}
});
}
.width('100%')
.height('100%');
}
}ArkTS'deki ProfileScreen bileşeni şunları gösterir: reaktif değişkenler için @State, giriş geri araması için @Prop, Column/Stack/Text/Image/Button temel UI bileşenleri olarak, async/await ile asenkron veri yükleme. Yükleme sırasında LoadingProgress görüntülenir. Tüm boyutlar vp (sanal piksel) cinsinden belirtilir — iOS'te pt veya Android'de dp'ye benzer uyarlanabilir birimler.
ArkUI, ekran genişliğine karşılık gelen Kesme Noktaları (xs, sm, md, lg, xl) sistemi aracılığıyla duyarlı tasarımı destekler. Bileşenler, telefondan tablete veya saate geçiş yaparken otomatik olarak yeniden düzenlenir. GridRow ve GridCol, kesme noktasına bağlı olarak sütun sayısını değiştiren uyarlanabilir kapsayıcılardır. Boyut birimleri: vp (sanal piksel), fp (yazı tipi pikseli — yazı tipi ayarlarıyla ölçeklenir), lpx (saatler için mantıksal piksel).
| Cihaz türü | Kesme noktası | Köşegen | Birim |
|---|---|---|---|
| Akıllı saat | xs | 1.2"–2.0" | lpx |
| Akıllı telefon | sm | 4.7"–6.9" | vp |
| Tablet | md | 7.0"–12.0" | vp |
| Dizüstü bilgisayar | lg | 13.0"–16.0" | vp |
| Monitör / TV | xl | 24.0"–65.0" | vp |
DevEco Studio, IntelliJ IDEA Community Edition tabanlı HarmonyOS için resmi entegre geliştirme ortamıdır (IDE). ArkTS ve C++ desteği içeren kod düzenleyici, görsel ArkUI düzenleyici (sürükle-bırak), HarmonyOS cihaz emülatörü, anlık UI görüntüleme için Preview ve performans analizi için Profiler içerir.
DevEco Studio, QEMU tabanlı bir emülatör içerir ve akıllı telefonlar (farklı ekran boyutları), tabletler, saatler ve televizyonları destekler. Emülatör, dağıtık bir ortamı simüle eder: birden fazla sanal cihaz çalıştırabilir ve cihazlar arası etkileşimi test edebilirsiniz. Emülatör, sanallaştırma gerektirir (Windows'ta Hyper-V, Linux'ta KVM).
ArkUI Preview, derleme veya emülatör başlatmadan anlık UI görüntüleme özelliğidir. Kod değişiklikleri 1-2 saniye içinde Preview'de görünür. Tüm standart bileşenler ve animasyonlar desteklenir. Preview, uyarlanabilirliği test etmek için farklı kesme noktalarıyla çalışır. Live Preview, gerçek donanımda test için USB veya Wi-Fi üzerinden gerçek bir cihaza bağlanır.
HarmonyOS SDK şunları içerir: ArkUI (UI bileşenleri), Multimedia Kit (ses/video yakalama ve oynatma), Connectivity Kit (Bluetooth, Wi-Fi, NFC), Location Kit (coğrafi konum), Sensor Kit (sensörler), AI Kit (Huawei NPU'da cihaz içi çıkarım ile ML Kit). API sürümleri: API 9 (HarmonyOS 3.x), API 10 (4.x), API 11 (NEXT).
// Multimedia Kit ile HarmonyOS'ta kamera başlatma
import multimedia.CameraManager;
import multimedia.CameraInput;
import multimedia.PreviewOutput;
@Component
struct CameraView {
@State isPreviewActive: boolean = false;
cameraManager: CameraManager = CameraManager.getInstance();
cameraInput?: CameraInput;
previewOutput?: PreviewOutput;
async startPreview(): Promise<void> {
try {
// Kamera izni isteme
const granted = await Permissions.request("ohos.permission.CAMERA");
if (!granted) return;
// Kamera alma (0 — arka, 1 — ön)
const camera = await this.cameraManager.getCamera(0);
// Kamera girişi oluşturma
this.cameraInput = await this.cameraManager.createCameraInput(camera);
await this.cameraInput.open();
// Surface'de önizleme başlatma (ArkUI XComponent)
this.previewOutput = await this.cameraManager.createPreviewOutput({
width: 1920,
height: 1080
});
await this.previewOutput.start();
this.isPreviewActive = true;
} catch (error) {
console.error("Camera error: " + error.message);
}
}
async stopPreview(): Promise<void> {
await this.previewOutput?.stop();
await this.cameraInput?.close();
this.isPreviewActive = false;
}
}CameraView bileşeni, Multimedia Kit ile çalışmayı gösterir: Permissions.request ile izin isteme, CameraManager ile kamera alma, CameraInput ve PreviewOutput oluşturma. ArkUI Surface (XComponent aracılığıyla) video akışını görüntüler. Tüm işlemler, try/catch ile hata yönetimi ile asenkrondur.
HarmonyOS'un dağıtık mimarisi rakiplerinden temel farktır. Bir uygulama, her biri en uygun cihazda çalışan birden fazla atomik hizmetten (Atomic Services) oluşabilir. Kullanıcı bir cihazda göreve başlar ve bağlamı kaybetmeden başka bir cihazda devam eder.
Atomic Service, HarmonyOS'taki minimum dağıtım birimidir. Her hizmet, bir veya daha fazla Ability (Android'deki Activity'ye benzer) uygular. Page Ability — UI'li ekran, Service Ability — arka plan görevi, Data Ability — veri erişimi. Bir uygulama, Ability'yi başka bir cihaza devredebilir: örneğin, UI tablette görüntülenirken AI işleme NPU'lu bir telefonda çalışır.
Dağıtık Veri Yönetimi (DDM) sistemi, uygulama durumunu cihazlar arasında senkronize eder. DDM, Dağıtık Veri Nesneleri — tüm kullanıcı cihazlarında otomatik olarak çoğaltılan reaktif nesneler kullanır. Bir cihazdaki veri değişiklikleri anında diğer tüm cihazlara yansıtılır. DDM, şifrelemeyi destekler ve ağ bağlantısını (Bluetooth, Wi-Fi, hücresel veri) dikkate alır.
| Teknoloji | Amaç | Benzeri |
|---|---|---|
| Distributed Data Objects | Cihazlar arası reaktif veri senkronizasyonu | iCloud / Firebase |
| Distributed File System | Cihazlar arası birleşik dosya alanı | iCloud Drive |
| Ability Distribute | Ekranın başka bir cihaza devredilmesi | — |
| Super Device | Cihazları tek bir sistemde birleştirme | Apple Continuity |
| Multiscreen Collaboration | Birden fazla ekranda tek uygulama ile çalışma | Sidecar (iPad + Mac) |
Super Device — 7 adede kadar Huawei cihazını tek bir bilgi işlem ortamında birleştirmeye olanak tanıyan bir HarmonyOS özelliğidir. Kullanıcı, Super Device arayüzünde cihaz simgelerini sürükler: hoparlörler ses çıkışı olur, tablet ikinci ekran olur, saat telefondaki bir fitness uygulaması için kalp atış hızı monitörü olur. Tüm cihazlar, 5 ms'nin altında gecikmeyle Dağıtık Veri Yolu (Distributed Bus) aracılığıyla senkronize olur.
Huawei AppGallery, HarmonyOS'un resmi uygulama mağazasıdır ve Google Play ile App Store'dan sonra dünyada üçüncü büyüktür. Huawei'ye (2026) göre AppGallery'nin 580 milyondan fazla aylık aktif kullanıcısı vardır. Geliştirici kaydı bireyler için ücretsizdir (Apple'ın 99 $'ının aksine).
Geliştirici, uygulamayı DevEco Studio'da (.hap formatı — HarmonyOS Ability Package) derler. AppGallery Connect aracılığıyla yayınlama: HAP dosyasını yükleme, açıklamayı doldurma (ad, simge, ekran görüntüleri), fiyatlandırma modelini yapılandırma. Ortalama denetim süresi 1-3 iş günüdür. Huawei, güvenliği (statik analiz), API uyumluluğunu ve politika uygunluğunu kontrol eder.
AppGallery şunları destekler: ücretli uygulamalar (Huawei komisyonu %15-30), abonelikler (%15 komisyon), Huawei Ads Kit aracılığıyla reklam ve IAP Kit aracılığıyla uygulama içi satın alımlar. Huawei Pay, Alipay ve WeChat Pay'i destekleyen Çin pazarı için bir ödeme geçididir. Uluslararası geliştiriciler, PayPal veya banka havalesi yoluyla ödeme alır.
| Gereksinim | Açıklama |
|---|---|
| Biçim | HAP (HarmonyOS Ability Package) veya App Pack (birden çok HAP) |
| İmza | DevEco Studio aracılığıyla dijital imza (Huawei Sertifikası) |
| Hedef API | HarmonyOS 3.x için API 9+, HarmonyOS NEXT için API 11+ |
| Boyut | App Pack için 4 GB'a kadar, temel HAP için 200 MB'a kadar |
| Diller | Çin için basitleştirilmiş Çince zorunlu destek |
| Politika | Huawei Geliştirici Kurallarına ve AB için GDPR'ye uygunluk |
HMS Core, Google olmayan Huawei cihazlarında Google Play Services'in yerini alan bir hizmetler kümesidir. Şunları içerir: Push Kit (push bildirimleri), Map Kit (navigasyonlu haritalar), Location Kit (coğrafi konum), Ads Kit (reklam), Analytics Kit (analitik), Account Kit (Huawei ID ile yetkilendirme). HMS Core, HarmonyOS cihazlarında ve Huawei Android cihazlarında (AppGallery aracılığıyla) kullanılabilir.
Sıkça sorulan sorular
Birincil dil ArkTS'dir, ArkUI entegrasyonlu bir TypeScript uzantısıdır. Performans açısından kritik modüller için Native API (NAPI) aracılığıyla C++ kullanılır. Java, HarmonyOS 3-4'teki eski uygulamalar için desteklenir. Huawei, HarmonyOS NEXT'ten itibaren tüm yeni projeler için ArkTS ve C++ önermektedir.
HarmonyOS kendi mikro çekirdeğini (Linux değil), dağıtık cihazlar arası mimariyi, birleşik DFS dosya sistemini ve reaktif DDM senkronizasyonunu kullanır. HarmonyOS NEXT, AOSP uyumluluğunu tamamen terk etmiştir ve APK uygulamalarını desteklemez. Tüm uygulamalar ArkTS veya C++ ile yazılır.
ArkUI, ArkTS ve C++ ile HarmonyOS için bildirimsel bir UI çerçevesidir. Arayüz, @Component aracılığıyla build() yöntemi ve reaktif değişkenlerle (@State) tanımlanır. ArkUI, Kesme Noktaları (xs-xl), GridRow/GridCol ve GPU hesaplamaları için özel Canvas oluşturma yoluyla uyarlanabilir düzeni destekler.
Resmi mağaza Huawei AppGallery'dir. Geliştirici kaydı ücretsizdir. Uygulama HAP (HarmonyOS Ability Package) veya App Pack formatında dağıtılır. Denetim 1-3 gün sürer. Mağaza komisyonu, para kazanma modeline bağlı olarak %15-30'dur. Çin için basitleştirilmiş Çince desteği zorunludur.
DevEco Studio, IntelliJ IDEA tabanlı HarmonyOS için resmi IDE'dir. ArkTS/C++ düzenleyici, görsel ArkUI düzenleyici, QEMU tabanlı emülatör, anlık UI görüntüleme için Preview, CPU/bellek için Profiler ve CI/CD için AppGallery Connect entegrasyonu içerir. Windows, macOS ve Linux'u destekler.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun