Aracılığıyla paylaş


React Native SDK Sorunlarını Giderme

Önemli

Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.

Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.

'React/RCTDefines.h' dosyası bulunamadı

Bu hata, RN çekirdek kitaplıklarına doğru başvurulmadığında ortaya çıkar ve bunun nedeni farklı türlerde tümleştirme veya bağlama sorunları olabilir. Bağımlılıklarınız genellikle bir projede statik olarak değil, bir pod dosyasında göreli yol kullanılarak bağlandığında gerçekleşir.

Bağlama betiğimiz yalnızca podları bağlamanın standart yolunu desteklediğinden sorunu çözmek için:

  1. öğesinizdeki Podfile bağımlılıkları göreli bağlama yollarıyla değiştirin:

    Önce:

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

    Sonra:

    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. Klasörden iOS komutunu çalıştırınpod install.

  3. AppDelegate.m içinde içeri aktarmaları değiştirin:

    Önce:

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

    Sonra:

    #import "AppCenterReactNative.h"
    #import "AppCenterReactNativeAnalytics.h"
    #import "AppCenterReactNativeCrashes.h"
    
  4. AppCenter bağımlılıklarını projeden kaldırın (bağımlılığı kaldır bağımlılığına > sağ tıklayın).

    • YOUR_APP> -Kitaplıklar'ı seçin< ve sonraki dosyaları kaldırın:>
      • AppCenterReactNative.xcodeproj
      • AppCenterReactNativeAnalytics.xcodeproj
      • AppCenterReactNativeCrashes.xcodeproj
    • Proje ayarlarınızı açın ve Bağlı Çerçeveler ve Kitaplıklar bölümündeki Genel sekmesinin altında, önceki adımda kaldırılan hedef kitaplıklara başvuran yeni öğeleri kaldırın:
      • libAppCenterReactNative.a
      • libAppCenterReactNativeAnalytics.a
      • libAppCenterReactNativeCrashes.a
    • AppCenter React Native eklentileri projelerinden üst bilgileri kaldırmak için Üst Bilgi Arama Yollarını değiştirin. Proje ayarlarınızı açın ve Üst Bilgi Arama Yolları bölümündeki Derleme Ayarları sekmesinin altında üst bilgi dosyaları için aşağıdaki konumları kaldırın:
      • $(SRCROOT)/../node_modules/appcenter/ios/AppCenterReactNative
      • $(SRCROOT)/../node_modules/appcenter-analytics/ios/AppCenterReactNativeAnalytics
      • $(SRCROOT)/../node_modules/appcenter-crashes/ios/AppCenterReactNativeCrashes

Makinenize yüklediyseniz yarn uygulamanızı react-native init {myapp} başlatır ve yerine kullanarak yarnnpmbağımlılıkları yükler. çalıştırırken react-native linkaşağıdaki hata iletisini görürseniz, App Center bağımlılıkları bunun yerine yarn add {package}npm yerine öğesinden npm install {package} yüklenir ve yarn yükleme sırasında karıştırılır.

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

Bu durumda komutunu çalıştırın npm install ve yeniden deneyin react-native link .

'AppCenterCrashes/MSACErrorReport.h' dosyası bulunamadı gibi derleme hatası

React-Native 0,60 ve üzeri

Bunun olası nedeni, Apple SDK'mızdaki hataya neden olan bir değişiklik nedeniyle ana paket sürümleri arasındaki çakışmadır.

  1. Tüm appcenter paketlerin aynı ana sürümü kullandığından emin olun. Bunları veya gerekirse ile npm installyarn güncelleştirin.

  2. Projenizin ios klasörüne gidin ve Podfile.lock dosyasını ve Pods klasörünü kaldırın.

  3. ios klasörünüzde komutunu çalıştırınpod install --repo-update.

  4. Podfile.lock dosyasının aynı ana sürüme ait bağımlılıklar içerdiğini appcenter doğrulayın.

React Native 0,60'tan düşük

Olası nedenlerden biri, CocoaPods yüklü olmadan çalışırken react-native link olmasıdır.

Nedenini react-native linkdoğrulamak için , ve günlüklerinde aşağıdaki satırı denetleyin:

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

Bu satır günlüklerin aşağıdaki bölümünde bulunur:

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

Bu hatayı görürseniz, CocoaPods'tan gelen komutun sisteminizin PATH ortam değişkeninde kullanılabilir olduğundan emin olunpod.

CocoaPods yüklemenizi düzeltdikten sonra, projenizi düzeltmek için ios klasöründe komutunu çalıştırınpod install.

sırasında react-native linkaşağıdaki CocoaPods hata iletisini görürseniz, CocoaPods spec deposunun yerel kopyanızın (~/.cocoapods/reposmakinenizde) güncel olma olasılığı vardır.

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

Belirtim deposunu güncelleştirmek için komutunu çalıştırın pod repo update ve yeniden deneyin react-native link . CocoaPods komutları hakkında daha fazla bilgi için bkz . CocoaPods komut satırı başvurusu.

App Center SDK kullanarak uygulamayı React Native 0.59'dan 0.60'a yükseltme

React Native 0.60.0 sürümüne yükseltmek için aşağıdaki komutu kullanın:

react-native upgrade 0.60.0

Not

Yükseltme sırasında bu hatayı Command failed: git status -s fatal: not a git repository (or any of the parent directories): .gitalırsanız, sonraki adımları gerçekleştirin:

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

Yükseltmeyi tamamladıktan sonra dizini kaldırabilirsiniz .git .

iOS React Native güncelleştirme

  1. Podfile dosyasını açın ve App Center bağımlılıklarını aşağıdaki satırda değiştirin:

    use_native_modules!
    
  2. Şu komutu çalıştırın:

    pod repo update
    

React Native SDK'sını en son sürüme güncelleştirme

SDK'mızı uygulamanızla zaten tümleştirdiyseniz ve SDK'nın daha yeni bir sürümüne yükseltmek istiyorsanız, yükseltmek için aşağıdaki adımları izleyin:

  1. npm uninstall --save appcenter appcenter-analytics appcenter-crashes eski App Center paketlerini kaldırmak için.

  2. npm install --save-exact appcenter appcenter-analytics appcenter-crashes en son App Center paketlerini yüklemek için.

  3. pod repo update CocoaPods spec deponuzun güncel olduğundan emin olmak için.

  4. react-native link.

İpucu

sırasında react-native linkaşağıdaki CocoaPods hata iletisine benzer bir hata iletisi görürseniz, ios klasörünüzde otomatik olarak oluşturulan Podfile.lock dosyasını silin ve yeniden çalıştırınreact-native link.

[!] 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)`

jCenter'den Maven Central'a geçiş

jCenter desteğinin sona ermesi nedeniyle tüm derlemelerimiz Maven Central deposuna taşındı. App Center'ı kullanmak için aşağıdaki gibi Gradle dosyanızdaki depoya eklemeniz mavenCentral() gerekir:

repositories {
   google()
   mavenCentral()
}

App Center gizli dizi değerini koruma

app_secret uygulamanızın tanımlayıcısıdır; trafiğin hangi uygulamaya uygulandığını bilmeniz gerekir ve mevcut verileri almak veya düzenlemek için kullanılamaz. Uygulamanız app_secret kullanıma sunulursa en büyük risk uygulamanıza hatalı veri göndermektir, ancak verilerin güvenliği üzerinde bir etkisi olmaz.

Hassas verileri almak için istemci tarafında oluşturulan bir uygulama/kullanıcı belirteci sağlamanız gerekir. İstemci tarafında verileri tamamen güvenli hale getirmenin bir yolu yoktur.

Uygulama gizli dizisini kodunuza eklemek için bir ortam değişkeni kullanarak uygulamanızın güvenliğini geliştirebilirsiniz. Bu şekilde gizli dizi kodunuzda görünmez.