Error: Error code 65 hatası ve çözümleri

Standard

Merhaba arkadaşlar.

Bu yazımda Error: Error code 65 for command: hatası ve çözümüne bakacağız elimden geldiğince.

Bu hatanın tek bir sebebi yok maalesef ve dolayısı ile de tek bir çözümü bulunmuyor. Genellikle Xcode signing profile sorunları nedeni ile yaşanıyor; ancak hata metnini doğru analiz etmek gerekir. Biz bu yazıda iki farklı sebebini ele alarak işleyeceğiz. Umarım faydalı olur birilerine.

Editörünüzden (genellikle Visual Studio Code kullanılır) ionic projenizi ios platform için build ettiğinizde Xcode içerisinde Provisioning Profile içerisinde takım seçilmemiş ya da doğru takım seçilmemesi nedeni ile oluşuyor. Hatta bazı durumlarda Xcode tarafında linker command failed with exit code 1 (use -v to see invocation) şeklinde hata ile birleştiğinde insanı canından bezdirecek hale gelebiliyor. İnternette araştırdığım ve denediğim çözümleri aşağıdaki şekilde sıralayabilirim.

Eğer editörünüzde build sonrası aldığınız hata içerisinde

You may not have the required environment or OS to run this project

şeklinde bir ibare var ise çözüm önerilerim aşağıdaki şekilde olacaktır.

Çözüm 1:

Xcode tarafında Target>General>Singing kısmından Automatically manage singing kutusunu işaretledikten sonra editörünüzden tekrar ionic cordova build ios komut satırını çalıştırmayı deneyin.

Çözüm 2:

  1. Xcode içerisinde Target>General>Signing yolunda doğru takımı seçtiğinizden emin olun.
  2.  Target>Build Settings>Build Options>Enable Bitcode seçeneğini “YES” olarak değiştirin.
  3. Editörünüzden ionic cordova build ios komut satırını çalıştırın.

Çözüm 3:

ionic cordova platform rm ios ve ionic cordova platform add ios komut satırlarını çalıştırdıktan sonra tekrar build etmeyi deneyin.

Eğer hata metni içerisinde You may not have the required environment or OS to run this project şeklinde bir ibare bulunmuyor ise çözüm için aşağıdaki adımları deneyin.

 

Çözüm 1:

Xcode içerisinde Product>Clean menü yolundan önce temizliğimizi bir yapalım ardından da tekrar editörünüzden ionic cordova build ios komut satırını çalıştırmayı deneyin.

Çözüm 2:

Bu seçenek her ne kadar kesin çözüm olmasa bile bazı durumlarda Xcode sürümü eski kaldığında ya da cordova sürümü ile uyuşmadığında faydalı olabiliyor. Xcode sürümünüzü güncelleyin ya da kaldırıp yeniden kurun.

Hata metni içerisinde linker command failed with exit code 1 (use -v to see invocation) ibaresi var ise;

Çözüm 1:

İnternette araştırma yaparken bir de böyle bir çözüm buldum; benim yaşadığım soruna ilaç olmadı hatta biraz da ilginç geldi ama belki birilerinin işine yarar düşüncesi ile buraya ekleyelim.

Projenizi xcodeproj olarak değil de xcworkspace uzantılı dosya üzerinden Xcode’ta açıp build etmeyi deneyebilirsiniz.

Çözüm 2:

Xcode>Target>Build Settings>Build Active Architecture seçeneğini “NO” olarak işaretleyip tekrar build yapmayı deneyebilirsiniz.

Çözüm 3:

  • Bazen bu hataya 4 duplicate symbols for architecture arm64 ibaresi var ise Target>General sekmesinde Linked Frameworks and Libraries bölümünde aynı içeriğe sahip frameworklerin yer alması neden olabiliyor. Çözüm olarak ise Build Settings içerisinde bulunan No Common Blocks “NO” olarak seçin ve tekrar build etmeyi deneyin. Gerçi duplicate symbols hatası başlı başına bir konu olarak işlenebilirdi belki ama konunun ana başlığı ile ilintili olduğu için yine bu konu altında yazıyorum. Tekrarında ise yine Build Settings te Build Options içerisinde Enable Testability seçeneğini “NO” olarak işaretleyerek deneyin.
  • Eğer aynı hatayı almaya devam ederseniz; Visual Studio Code içerisinden node_modules klasörünü kaldırıp npm i komut satırını çalıştırın ve uygulamanızı tekrar ionic cordova build ios komut satırı ile build edin.
  • Bu da çözüm olmaz ise aşağıdaki komut satırlarını sırası ile çalıştırın.

rm -rf node_modules/ platform/ios
npm i
npm run-script build => bu satır ile paketlerin tamamının kurulumu gerçekleştirilecektir.

Şimdi sıra geldi uygulumanın ana sizininde bulunan package.json dosyasını editlemeye. cordova-ios sürümünün güncel olduğundan emin olalım. Bende codova-ios’un 4.5.4 sürümü bulunuyor. Aşağıdaki satır değişikliğini yapın.

"cordova-ios": "4.5.4" yerine "cordova-ios": "^4.5.4" “^” karakterini sürüm numarasının başına ekleyin. Aynı değişikliği config.xml dosyası için de yapın ve build işlemini yenileyin.

  • Sorun halen devam ediyor ve cordova-plugin-console pluginini kullanıyorsanız, kullanmayın 🙂 Bu plugini kaldırarak tekrar build etmeyi deneyin. Çünkü bu plugin işlevi 4.5.0 ve üzeri ips platformu içerisinde varsayılan olarak hali hazırda mevcut. Duplicate hatasına sebep olabilir.
  • Console pluginini kaldırmak da işe yaramadıysa aşağıdaki çözümü deneyin.

Ionic app-script son sürümü kullanıyorsanız eğer (bende mevcutta 3.1.6 sürümü var) zaman zaman sürüm çakışması nedeni ile sorunlara sebep verebiliyor. Eski bir sürümü kullanmayı deneyebilirsiniz. npm install @ionic/app-scripts@3.0.0 --save-dev komut satırını çalıştırarak tekrar build etmeyi deneyebilirsiniz. Muhtemelen siz de build etmeye çalıştığınızda Cannot find module '@angular/tsc-wrapped/src/tsc' hatasını alacaksınız. Aşağıdaki komut satırlarını sırası çalıştırın ve ardından build işlemini yineleyin.

npm install -g angular-cli
npm install @angular/tsc-wrapped autoprefixer

  • Bu satıra kadar geldiyseniz aynı hatayı almaya devam ediyorsunuz demek ki. Üzüldüm; öyleyse farklı çözümler denemeye devam edelim.

Öncelikle package.json ve config.xml dosyasında birbiri ile aynı işi yapan plugin olmadığına dikkat edin. Benim yaşadığım durumda local notification plugini iki farklı şekilde eklenmiş durumda idi. cordova-plugin-local-notification pluginini kaldırarak tekrar build denediğimde build işlemi başarılı bir şekilde tamamlanmış oldu.

<plugin name="cordova-plugin-local-notification" spec="^0.9.0-beta.2" />
<plugin name="de.appplant.cordova.plugin.local-notification" spec="^0.8.5" />

Umarım faydalı olmuştur.