Bagikan melalui


Pemecahan Masalah SDK React Native

Penting

Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang dapat Anda pertimbangkan untuk bermigrasi.

Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.

File 'React/RCTDefines.h' tidak ditemukan

Kesalahan ini muncul ketika pustaka inti RN tidak direferensikan dengan benar, yang dapat disebabkan oleh berbagai jenis masalah integrasi atau penautan. Ini sering terjadi ketika Anda memiliki dependensi yang ditautkan menggunakan jalur relatif dalam podfile, daripada secara statis dalam proyek.

Skrip penautan kami hanya mendukung cara standar untuk menautkan pod, jadi untuk menyelesaikan masalah:

  1. Ganti dependensi di Anda Podfile dengan jalur penautan relatif:

    Sebelumnya:

    pod 'AppCenter/Analytics', '~> 1.14.0'
    pod 'AppCenter/Crashes', '~> 1.14.0'
    pod 'AppCenterReactNativeShared', '~> 1.13.0'
    

    Setelahnya:

    pod 'appcenter', path: '../node_modules/appcenter/ios'
    pod 'appcenter-analytics', path: '../node_modules/appcenter-analytics/ios'
    pod 'appcenter-crashes', path: '../node_modules/appcenter-crashes/ios'
    
  2. Jalankan pod install dari iOS folder.

  3. Di dalam AppDelegate.m, ganti impor:

    Sebelumnya:

    #import <AppCenterReactNative/AppCenterReactNative.h>
    #import <AppCenterReactNativeAnalytics/AppCenterReactNativeAnalytics.h>
    #import <AppCenterReactNativeCrashes/AppCenterReactNativeCrashes.h>
    

    Setelahnya:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. Hapus dependensi AppCenter dari proyek (klik kanan dependensi > Hapus dependensi).

    • Pilih <YOUR_APP> ->Pustaka dan hapus file berikutnya:
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Buka pengaturan proyek Anda dan di bawah tab Umum di bagian Kerangka Kerja dan Pustaka Tertaut menghapus item baru yang merujuk pustaka target yang dihapus pada langkah sebelumnya:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • Ubah Jalur Pencarian Header untuk menghapus header dari proyek plugin AppCenter React Native. Buka pengaturan proyek Anda dan di bawah tab Pengaturan Build di bagian Jalur Pencarian Header hapus lokasi berikut untuk file header:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Jika Anda telah yarn menginstal di komputer Anda, react-native init {myapp} akan menginisialisasi aplikasi Anda dan menginstal dependensi menggunakan yarn daripada npm. Jika Anda melihat pesan kesalahan berikut saat menjalankan react-native link, kemungkinan dependensi App Center diinstal dari npm install {package} bukannya yarn add {package} sehingga npm dan yarn dicampur selama penginstalan.

Command `link` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project.

Dalam hal ini, jalankan npm install dan coba react-native link lagi.

Kesalahan build seperti file 'AppCenterCrashes/MSACErrorReport.h' tidak ditemukan

React-Native 0,60 ke atas

Kemungkinan penyebabnya adalah konflik antara versi paket utama karena perubahan yang melanggar di Apple SDK kami.

  1. Pastikan semua appcenter paket menggunakan versi utama yang sama. Perbarui dengan npm install atau yarn jika diperlukan.

  2. Buka folder ios proyek Anda dan hapus Podfile.lock dan folder Pod.

  3. Jalankan pod install --repo-update di folder ios Anda.

  4. Verifikasi bahwa Podfile.lock berisi appcenter dependensi dari versi utama yang sama.

React Native lebih rendah dari 0,60

Salah satu kemungkinan penyebabnya adalah ketika berjalan react-native link tanpa CocoaPods terinstal .

Untuk mengonfirmasi penyebabnya, jalankan react-native link, dan di log, periksa baris berikut:

Could not configure AppCenter for iOS. Error Reason - spawn pod ENOENT

Baris ini terletak di bagian berikut dari log:

Added code to initialize iOS AppCenter SDK in ios/TestApp/AppDelegate.m
Installing Cocoapods dependencies...
Could not configure AppCenter for iOS. Error Reason - spawn pod ENOENT
rnpm-install info Platform 'ios' module appcenter-analytics is already linked
rnpm-install info Platform 'android' module appcenter-analytics is already linked

Jika Anda melihat kesalahan tersebut pod , pastikan perintah dari CocoaPods tersedia dalam variabel lingkungan PATH sistem Anda.

Setelah Anda memperbaiki penginstalan CocoaPods , jalankan pod install di folder ios untuk memperbaiki proyek Anda.

Jika Anda melihat pesan kesalahan CocoaPods berikut selama react-native link, kemungkinan klon lokal Anda (~/.cocoapods/repos di komputer Anda) dari repositori spesifikasi CocoaPods tidak diperbarui.

Analyzing dependencies [!] Unable to find a specification for AppCenterReactNativeShared (~> {version})

Jalankan pod repo update untuk memperbarui repositori spesifikasi, dan coba react-native link lagi. Untuk informasi selengkapnya tentang perintah CocoaPods, lihat Referensi baris perintah CocoaPods.

Cara meningkatkan aplikasi menggunakan App Center SDK dari React Native 0,59 ke 0,60

Untuk meningkatkan React Native ke versi 0.60.0, gunakan perintah berikut:

react-native upgrade 0.60.0

Catatan

Jika selama peningkatan, Anda mendapatkan kesalahan Command failed: git status -s fatal: not a git repository (or any of the parent directories): .gitini , lakukan langkah berikutnya:

git init
git add .
git commit -m "Upgrade react-native"

Setelah selesai memutakhirkan, Anda dapat menghapus .git direktori.

Memperbarui iOS React Native

  1. Buka Podfile dan ganti dependensi App Center pada baris berikut:

    use_native_modules!
    
  2. Jalankan perintah berikut:

    pod repo update
    

Cara memperbarui SDK React Native ke versi terbaru

Jika Anda telah mengintegrasikan SDK kami ke dalam aplikasi Anda dan ingin meningkatkan ke versi SDK yang lebih baru, ikuti langkah-langkah berikut untuk meningkatkan:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes untuk menghapus instalan paket App Center lama.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes untuk menginstal paket App Center terbaru.

  3. pod repo update untuk memastikan repositori spesifikasi CocoaPods Anda sudah diperbarui.

  4. react-native link.

Tip

Jika Anda melihat pesan kesalahan yang mirip dengan pesan kesalahan CocoaPods berikut selama react-native link, hapus Podfile.lock yang dibuat secara otomatis di folder ios Anda dan jalankan react-native link lagi.

[!] Unable to satisfy the following requirements:

- `AppCenter/Core (= 1.0.0)` required by `Podfile.lock`
- `AppCenter/Core (= 1.0.0)` required by `AppCenter/Crashes (1.0.0)`
- `AppCenter/Core (= 1.0.0)` required by `AppCenter/Analytics (1.0.0)`
- `AppCenter/Core (= 1.0.1)` required by `AppCenterReactNativeShared (1.0.1)`

Migrasi dari jCenter ke Maven Central

Karena penghentian dukungan jCenter , semua rakitan kami dipindahkan ke repositori Maven Central. Untuk menggunakan App Center, Anda perlu menambahkan mavenCentral() ke repositori dalam file Gradle Seperti di bawah ini:

repositories {
   google()
   mavenCentral()
}

Lindungi nilai rahasia App Center

app_secret adalah pengidentifikasi aplikasi Anda, perlu mengetahui aplikasi mana yang berlaku untuk lalu lintas dan tidak dapat digunakan untuk mengambil atau mengedit data yang ada. Jika Anda app_secret terpapar, risiko terbesar adalah mengirim data buruk ke aplikasi Anda, tetapi tidak akan berpengaruh pada keamanan data.

Untuk mengambil data sensitif apa pun, Anda harus menyediakan token aplikasi/pengguna, yang dihasilkan di sisi klien. Tidak ada cara untuk membuat data di sisi klien benar-benar aman.

Anda dapat meningkatkan keamanan aplikasi dengan menggunakan variabel lingkungan untuk menyuntikkan rahasia aplikasi ke dalam kode Anda. Dengan begitu, rahasia tidak terlihat dalam kode Anda.