Versi Facebook SDK mana yang didapat aplikasi Flutter, dan apa yang menentukannya
Terakhir diperbarui 7 Agustus 2026
Versi mana yang sebenarnya Anda dapat
Plugin mendeklarasikan rentang versi di setiap platform, dan build Anda me-resolve ke sebuah versi di dalam rentang itu. Tiga deklarasi, satu untuk tiap jalur integrasi, dan itulah jawaban atas pertanyaannya:
| Platform | Dideklarasikan di | Batasan |
|---|---|---|
| Android | android/build.gradle | com.facebook.android:facebook-android-sdk:[18.0,19.0) |
| iOS, CocoaPods | ios/facebook_app_events.podspec | s.dependency 'FBSDKCoreKit', '~> 18.0' |
| iOS, Swift Package Manager | ios/facebook_app_events/Package.swift | facebook-ios-sdk pada "18.0.0"..<"19.0.0" |
Ketiganya mengatakan hal yang sama dalam tiga dialek: 18.x apa pun, tidak ada yang dari 19. Podspec menyebut alasannya dalam komentar di baris di atasnya:
Do not specify PATCH version of FBSDKCoreKit. See README file for explanation.
Itulah batasan yang dikirim di plugin 0.30.5. Nilainya hanya berubah dalam sebuah rilis plugin, dan CHANGELOG mencatatnya ketika berubah.
Mengapa plugin mengikuti versi major, bukan minor
Ini keputusan, bukan kebetulan, dan README menyatakannya: plugin mengikuti versi major dari Facebook SDK yang berlaku, supaya sekompatibel mungkin dengan dependensi lain di proyek Anda.
Konsekuensinya adalah bagian yang mengejutkan orang, dan README mengatakannya terang-terangan. Anda mendapat "the latest version" sampai rilis major berikutnya, dan itu bisa menjadi sumber perilaku tak terduga kalau Anda tidak menyadarinya. Sekarang Anda menyadarinya.
Alternatifnya sudah dipertimbangkan dan ditolak. Mengunci plugin ke versi minor tertentu dari SDK menimbulkan ketidakcocokan dengan plugin dan dependensi lain di proyek pemakainya. Minor mana pun yang kami pilih akan salah bagi seseorang, dan orang itu tidak punya jalan keluar selain fork. Sebuah rentang membiarkan resolver Anda memilih versi yang memenuhi seluruh graf dependensi Anda, bukan hanya graf kami.
Jadi ini sebuah pertukaran, dinyatakan dengan jujur: Anda mendapat plugin yang bisa hidup bersama sisa dependensi Anda, dan Anda melepaskan kepastian tentang build SDK mana yang Anda punya tanpa memeriksanya. Bagian terakhir halaman ini adalah cara memeriksanya.
Kedua platform tidak berada di 18.x yang sama
Inilah yang sebenarnya dihasilkan oleh rentang mengapung yang hanya dikunci pada major, dan inilah yang tidak bisa Anda pelajari dari halaman rilis mana pun milik Meta.
Di plugin 0.30.5, rentang Maven untuk Android mencakup rilis 18.x terbaru, yaitu 18.3.0. Kuncian iOS mencakup rilis 18.x terbaru, yaitu 18.1.0.
Plugin yang sama, kebijakan yang sama ditulis dalam tiga bentuk, dua versi minor berbeda di dalam satu aplikasi. Itu bukan cacat dan bukan ketidaksesuaian yang perlu dibetulkan. SDK Android dan iOS adalah proyek terpisah dengan riwayat rilis terpisah, jadi "18.x terbaru" memang angka yang berbeda di masing-masing sisi.
Tiga konsekuensi praktisnya:
- Baca catatan rilis tiap platform secara terpisah. Tidak ada satu nomor versi Facebook SDK yang bisa dimiliki aplikasi Anda.
- Ketika melaporkan masalah, sebutkan kedua versi hasil resolve. Satu saja meninggalkan separuh pertanyaan terbuka.
- Kalau build Android dan iOS Anda berperilaku berbeda, periksa kedua versi hasil resolve sebelum Anda menganggap perbedaannya ada di kode Anda sendiri. Bisa saja memang di situ, tapi yang ini lebih murah untuk disingkirkan.
Batas bawah yang harus Anda penuhi
Empat batas bawah, dan keempatnya dideklarasikan di manifest milik plugin sendiri, bukan di dokumentasi yang harus Anda percayai:
| Batas bawah | Nilai | Dideklarasikan di |
|---|---|---|
| Flutter | flutter: '>=3.38.0' | pubspec.yaml |
| Dart | sdk: '>=3.3.0 <4.0.0' | pubspec.yaml |
| iOS deployment target | 13.0 | podspec dan Package.swift |
| Swift | 5.9 | podspec dan Package.swift |
Mengapa Flutter 3.38
Bukan selera. Sisi iOS plugin memakai API plugin scene delegate milik Flutter, FlutterSceneLifeCycleDelegate dan addSceneDelegate, yang ditambahkan di Flutter 3.38. Di bawah rilis itu simbolnya tidak ada. Apa yang Anda dapat darinya dibahas di panduan Swift Package Manager.
iOS 13.0, dan mengapa aplikasi contoh bukan kontraknya
13.0 sudah menjadi minimum sebenarnya plugin ini sejak 0.26.0, dideklarasikan baik di s.ios.deployment_target di podspec maupun di platforms: [.iOS(.v13)] di Package.swift.
Setelan proyek Xcode pada aplikasi contoh masih 12.0 sampai 0.30.5, ketika nilainya dinaikkan agar sesuai. Setelan itu memang belum pernah diperbarui. Kalau Anda membaca aplikasi contoh untuk mencari tahu minimumnya, Anda membaca file yang salah. Podspec dan manifest paket adalah kontraknya; contoh hanyalah sampel yang harus bisa dikompilasi.
Toolchain Android, di 0.30.5
Berguna ketika yang gagal adalah build Anda, bukan event Anda: Kotlin 2.4.10, AGP 8.13.0, Gradle dikunci di 8.13 supaya sepadan dengan AGP 8.13.x, compileSdk dan targetSdk 36, serta minSdk 21. Itu angka milik plugin sendiri, dari android/build.gradle dan Gradle wrapper, dan CHANGELOG mencatat setiap perubahannya.
Versi Graph API yang dikunci plugin
Satu versi di halaman ini bukan rentang dependensi, dan itulah alasan plugin menyetel apa pun saat startup. Facebook SDK 18.x dikirim dengan versi Graph API bawaan yang sudah dihapus Meta, dan bawaannya berbeda per platform.
| Platform | Bawaan SDK | Dihapus Meta |
|---|---|---|
| iOS SDK 18.x | v17.0 | 12 September 2025 |
| Android SDK 18.x | v16.0 | 14 Mei 2025 |
Plugin menimpa bawaan itu saat inisialisasi, jadi sebagian besar aplikasi tidak perlu konfigurasi apa pun untuk hal ini. Pada plugin 0.30.5 versi yang disetelnya adalah v24.0. Anggap README dan CHANGELOG plugin sebagai sumber kebenaran untuk nilai yang berlaku, karena nilainya bergerak seiring rentang yang didukung Meta.
Apa yang sebenarnya terjadi pada versi yang sudah dihapus
Ia tidak membuat permintaan Anda gagal. Panduan versioning milik Meta menyatakan bahwa begitu sebuah versi tidak lagi bisa dipakai, panggilan ke versi itu disetel agar default ke versi berikutnya yang paling tua namun masih bisa dipakai. Aplikasi yang tertinggal di bawaan yang sudah dihapus tetap berjalan, dilayani oleh versi yang tidak dipilih siapa pun.
Yang mendarat di meja Anda adalah pemberitahuannya. Meta mengirim email kepada pemilik aplikasi berisi tenggat penghapusan, dan tenggat itu berasal dari batas bawah pemberitahuan pengembang Meta yang berlaku saat itu, bukan dari tanggal kedaluwarsa versi yang kebetulan Anda pakai. Batas itu bergerak mengikuti jadwal Meta, terlepas dari kedaluwarsa versi mana pun. Issue #474 di plugin ini adalah salah satu email itu, dan ceritanya lengkap ada di Facebook App Events tidak muncul di Events Manager.
Kalau Anda butuh versi tertentu
Panggil setGraphApiVersion sedini mungkin saat startup, sebelum apa pun yang bisa memicu permintaan Graph API. Panggilan Anda yang menang: plugin menyetel bawaannya ketika ia melekat ke engine, dan panggilan Dart Anda berjalan setelah itu.
final facebookAppEvents = FacebookAppEvents();
// Opsional. Plugin sudah menyetel bawaan yang berlaku saat inisialisasi.
await facebookAppEvents.setGraphApiVersion('v24.0');
await facebookAppEvents.activateApp();Memeriksa versi apa yang dipilih build Anda
Jangan menyimpulkannya dari halaman ini. Bacalah dari file tempat setiap toolchain mencatat versi yang benar-benar dipilihnya.
iOS
Dengan CocoaPods, ios/Podfile.lock menyebut versi FBSDKCoreKit hasil resolve. Dengan Swift Package Manager, Package.resolved menyebut versi facebook-ios-sdk hasil resolve.
Android
Gradle akan mencetak versi yang dipilihnya untuk sebuah konfigurasi:
cd android
./gradlew :app:dependencies --configuration releaseRuntimeClasspath | grep facebook-android-sdkLaporan dependensi menyebut versi yang dipilih Gradle dari rentang itu, dan itu sebuah jawaban, bukan dugaan.
Apa yang terjadi di Facebook SDK 19
[18.0,19.0) dan "18.0.0"..<"19.0.0" keduanya mengecualikan 19 secara konstruksi. Rilis Facebook SDK 19 karena itu tidak akan sampai ke aplikasi Anda dengan sendirinya: rentangnya harus digeser lebih dulu, dan itu terjadi dalam sebuah rilis plugin. Jadi ketika Anda merencanakan upgrade melewati sebuah major Facebook SDK, CHANGELOG plugin adalah file yang memberi tahu apakah versi itu sudah tersedia. Catatan rilis Meta hanya memberi tahu bahwa SDK-nya ada.
Periksa pengaturan Anda
- Flutter adalah 3.38.0 atau lebih baru, dan batasan Dart SDK Anda berada di dalam >=3.3.0 <4.0.0
- iOS deployment target Anda 13.0 atau lebih tinggi
- Podfile.lock atau Package.resolved menyebut versi Facebook SDK di dalam 18.x
- Laporan dependensi Gradle menunjukkan facebook-android-sdk me-resolve ke versi di dalam 18.x
- Tidak ada apa pun di Podfile atau build.gradle Anda sendiri yang mengunci versi Facebook SDK sehingga berbenturan dengan rentang plugin
- Anda membaca CHANGELOG plugin, bukan hanya catatan rilis Meta, sebelum merencanakan upgrade
- Anda memang mengharapkan Android dan iOS berada di versi 18.x yang berbeda, bukan menganggapnya bug
Dokumentasi referensi Meta
Referensi API plugin
Masih terhambat?
Ini defek pada plugin
Jika plugin melakukan sesuatu yang tidak dilakukan Facebook SDK native, itu bug kami. Buka issue dan kami perbaiki. Gratis, selalu, tanpa syarat.
Buka issue di GitHubIni pertanyaan soal penggunaan
Pertanyaan soal konfigurasi dan integrasi paling baik diajukan di tempat yang bisa ditemukan developer lain nanti.
Tanya di StackOverflowAngka Anda salah dan ada uang yang bergerak
Jika kampanye instalasi Meta terus mengeluarkan biaya dan atribusinya tidak sesuai, itu masalah yang berbeda dari build yang rusak. Satu jam, 300 USD, dikreditkan ke biaya audit jika Anda melanjutkan.
Lihat panggilan diagnostik dan audit