İOS 9'daki yeni uyarılar: “tüm bit kodları kaldırılacak”


387

Uygulamamdaki Google Framework hakkında şu yeni uyarıyı aldım:

(null): ACİL: '/ Users / myname / Library / Mobile Documents / com ~ apple ~ CloudDocs / foldername / appname / GoogleMobileAds.framework / GoogleMobileAds (GADSlot + AdEvents.o)' bit kodu olmadan oluşturulduğu için tüm bitcode atılacak . Bit kodu etkinken yeniden oluşturmalısınız (Xcode ayarı ENABLE_BITCODE), satıcıdan güncellenmiş bir kitaplık almalı veya bu hedef için bit kodunu devre dışı bırakmalısınız. Not: Bu gelecekte bir hata olacaktır.

Xcode 7 bana aynı kavram hakkında 204 uyarı veriyor ve bununla başa çıkamadım. Ayrıca uygulamamdan ağa erişirken bir sorunum var. Hata Ayıklama Alanındaki hata:

-canOpenURL: URL için başarısız oldu: "kindle: // home" - hata: "Bu uygulamanın düzen kindle'sini sorgulamasına izin verilmiyor"

Bu sorunların tümü iOS 8'de yoktu.


Yani Xcode hedefinizde bit kodunu etkinleştirdiniz mi?
Droppy

Üzgünüm bu konuda yeniyim, bana nasıl lütfen söyleyebilir misiniz?
C.Farrugia

Bunu hiç yapmadım, ama kasten ayarlamanız gereken bir şey gibi görünüyor. Bunu yapmış gibisin.
Droppy

4
@Sıkık AFAIK ayarı varsayılan olarak açıktır, ancak proje ayarlarınızda istediğiniz zaman devre dışı bırakabilirsiniz.
HAS

Onları kapattım ve tüm uyarılar kayboldu. Biraz araştırdım ve Google'ın bu hatanın kapalı olması için çerçevelerini güncellemesi gerekiyor, şimdiye kadar sadece kapatmak işe yarayacak. Herkes -canOpenURL: URL için başarısız oldu biliyor mu: "kindle: // home" - hata: "Bu uygulama düzeni kindle sorgulamak için izin verilmiyor"? Bu
Xcode'un

Yanıtlar:


1023

Kitaplığınız bit kodu olmadan derlendi, ancak proje ayarlarınızda bit kodu seçeneği etkinleştirildi. Say NOiçin Enable Bitcodeuyarıları kaldırmak için hedef Yapı Ayarları ve Kütüphane Oluşturma Ayarlarında.

Bit kodunu etkinleştirmenin gerekli olup olmadığını merak edenler için:

İOS uygulamaları için bit kodu varsayılan, ancak isteğe bağlıdır. WatchOS ve tvOS uygulamaları için bit kodu gereklidir. Bit kodu sağlarsanız, uygulama paketindeki (projedeki tüm hedefler) tüm uygulamaların ve çerçevelerin bit kodunu içermesi gerekir.

https://help.apple.com/xcode/mac/current/#/devbbdc5ce4f


@Centurion önceki google analytics lib kullanımdan kaldırıldı ve xcode 7 / ios9 ile derlenmiyor
zonabi

1
@goelv evet bit kodu devre dışı bırakılmış uygulamaları gönderebilmeniz gerekir. şu anda isteğe bağlıdır. gelecekte gerekli olabilir.
zonabi

2
Arşivleme için benim için çalışmadı. Ön XCODE 7 projesi iyi çalışıyordu, şimdi Bitcode'u Etkinleştir NO olarak ayarlanmış olsa bile ARŞİV olamaz. Bu AWS kütüphanesi içindir.
ort11

1
Tüm hedeflerde Bitcode'u devre dışı bıraktıktan sonra hala hatayı alıyorum.
datWooWoo

110

Xcode 7'den sonra, bitcode seçeneği varsayılan olarak etkinleştirilecektir. Kitaplığınız bit kodu olmadan derlenmiş ancak proje ayarlarınızda bit kodu seçeneği etkinleştirilmişse şunları yapabilirsiniz:

  1. Kitaplığınızı bit koduyla güncelleyin,
  2. Hedef Oluşturma Ayarlarınızda Bitcode'u Etkinleştirmek için HAYIR deyin

Resim açıklamasını buraya girin

Ve Kütüphane Derleme Ayarları uyarıları kaldırmak için.

Daha fazla bilgi için geliştirici kitaplığındaki bit kodu belgelerine bakın .

Ve WWDC 2015 Oturum 102: "Birliğin Platformları Devleti"

Resim açıklamasını buraya girin


42

Bu sorunu önlemek için benim durumumda:

  1. Daha düşük sürümler değil, Xcode 7 ile uğraştığınızdan emin olun . Alt versiyonda bu bayrak mevcut değildir.

  2. Kurulum: Proje> Derleme Ayarları> Tümü> Derleme Seçenekleri> Bitcode'u Etkinleştir = HAYIR

resim açıklamasını buraya girin


2
Bu nedenle, projenize dahil edilen kitaplıkları XCode7 ve EnableBitcode ile YES olarak yeniden derlemeniz gerekir. Üçüncü taraflarla çalışıyorsanız oldukça karmaşıktır. Bir kütüphaneci.
Javier Calatrava Llavería

15

Yöntem canOpenUrl iOS 9'da (gizlilik nedeniyle) değişti ve artık ücretsiz değil. Banner sağlayıcınız yüklü uygulamaları kontrol eder, böylece önceden yüklenmiş bir uygulama için banner göstermezler.

Bu gibi tüm günlük ifadeleri verir

-canOpenURL: URL için başarısız oldu: "kindle: // home" - hata: "Bu uygulamanın düzen kindle'sini sorgulamasına izin verilmiyor"

Sağlayıcılar bunun için mantıklarını güncellemelidir.

Yüklü uygulamaları / kullanılabilir şemaları sorgulamanız gerekiyorsa bunları info.plistdosyanıza eklemeniz gerekir .

'LSApplicationQueriesSchemes' anahtarını plistinize bir dizi olarak ekleyin. Ardından bu diziye 'kindle' gibi dizeler ekleyin.

Tabii ki bu gerçekten banner reklamlar için bir seçenek değil (bunlar dinamik olduğu için), ancak yine de kendi uygulamalarınız veya Twitter ve Facebook gibi belirli diğer uygulamalar için bu şekilde sorgulayabilirsiniz.

CanOpenUrl: yönteminin belgeleri canOpenUrl:

LSApplicationQueriesSchemes anahtarı ile ilgili belgeler


Statik bir kütüphanenin bir üst uygulama derin bağlantısını kontrol edeceği varsayılırsa, statik kütüphanede 'LSApplicationQueriesSchemes' istisnası nasıl kullanılır? Normalde bunun için Info.plist'iniz yoktur.
loretoparisi

Bu konuda gerçekten emin değilim, eğer bir kütüphanenin üstündeki uygulamaları kontrol etmesi gerekiyorsa, üst öğe info.plist içindeki url'leri tanımlamalıdır (bu yüzden çerçeve için belgeleyin). CanOpenUrl da üst uygulama üstesinden gelemez irade, i (varsayalım) da info.plist olanlar da eklemeniz gerekir
Saren Inden

13

CocoaPods kullanıyorsanız ve tüm kütüphaneler için Bitcode'u devre dışı bırakmak istiyorsanız, Poddosyasında aşağıdaki komutu kullanın

post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['ENABLE_BITCODE'] = 'NO'
        end
    end
end

8

Feragatname: Bu, otomatik bir işlem gerektiren sürekli bir entegrasyon iş akışını destekleyenlere yöneliktir . Bunu yapmazsanız, lütfen Javier'in yanıtında açıklandığı gibi Xcode'u kullanın .

Bu benim için ENABLE_BITCODE = NOkomut satırı üzerinden ayarlamak için çalıştı :

find . -name *project.pbxproj | xargs sed -i -e 's/\(GCC_VERSION = "";\)/\1\ ENABLE_BITCODE = NO;/g'

Bunun Xcode sürümlerinde kararsız olabileceğini unutmayın. Xcode 7.0.1 ve Cordova 4.0 projesinin bir parçası olarak test edildi.



-2

Bu sorun kısa süre önce Google tarafından giderildi (Kasım 2010), bkz. Https://code.google.com/p/analytics-issues/issues/detail?id=671 . Ancak, iyi bir düzeltme olarak daha fazla hata getirdiğini unutmayın :)

Ayrıca burada listelenen başlatma yöntemini de uygulamanız gerekir: https://developers.google.com/analytics/devguides/collection/ios/v2 .

En son talimatlar, kapsülde bulunmayan yardımcı programlara atıfta bulunduğundan size bir baş ağrısı verecektir. Aşağıda cocoapod ile başarısız olacak

// Configure tracker from GoogleService-Info.plist.
NSError *configureError;
[[GGLContext sharedInstance] configureWithError:&configureError];
NSAssert(!configureError, @"Error configuring Google services: %@", configureError);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.