Get-task-allow Xcode'da ne işe yarar?


96

İPhone uygulama projemde yetkilerimi ayarladığımda yeni bir Entitlements.plist oluşturuyorum ve get-task-allow değerini false olarak ayarlıyorum. Ama neden? Bu anahtar neyi temsil ediyor?

Bunun, iPhone cihazı için uygulama oluştururken Uygulama doğrulanamadı hatasıyla ilgili olduğunu unutmayın - Bu anahtarın değerini true olarak çevirmenin uygulamayı cihazıma yüklememe izin verdiğini öğrendim.

Yanıtlar:


165

ADC'deki bu başlıktan :

get-task-allow, bir uygulamada oturum açıldığında, diğer işlemlerin (hata ayıklayıcı gibi) uygulamanıza eklenmesine izin verir. Dağıtım profilleri bu değerin kapatılmasını gerektirirken geliştirme profilleri bu değerin açık olmasını gerektirir (aksi takdirde Xcode hiçbir zaman uygulamanızı başlatamaz ve uygulamanıza eklenemez).


2
Öyleyse, projelerin iki Entitlements.plist dosyasına sahip olması gerekiyor mu, biri bu değerin Hata Ayıklama profillerini hedefleyen YES olarak ayarlandığı ve diğeri HAYIR'ı belirleyen Dağıtım profillerini hedefleyen?
Greg Maletic

2
Nevermind, kendi sorumu çözdüm. Entitlements.plist'i Hata Ayıklama derleme ayarlarınızın dışında bırakırsanız, sorun yaşamazsınız.
Greg Maletic

1
Ancak Entitlements.plist, Geliştirici profili ile Hata Ayıklama modunda projeye dahil edilmediğinde bile hata ayıklayabiliyordum. Biri bana bunu açıklayabilir mi?
spd

1
hata ayıklama için varsayılan doğru, serbest bırakma için varsayılan yanlıştır. Bunu yanlışa çevirmek, hata ayıklamayı devre dışı bırakır.
Tembel Coder

1
Ancak dağıtım yapılandırmaları genellikle 'sürüm'den türetilir. Bu, AdHoc için FALSE belirtmenize gerek olmadığı anlamına gelmemeli mi? (veya bu konularda bir Yetki dosyası var mı?)
Nicolas Miari

13

İPhone'da uygulamanızda hata ayıklama yeteneği.


1
İlginç! Hepsi buysa, o zaman değeri yanlışa çevirmenin neden uygulamayı cihazıma yüklememi engellediğini merak ediyorum. (İlgili SO sorusu: stackoverflow.com/questions/997884/… )
Codebeef

Yaptığı şey bu ... ama bunu yapmanıza izin veren GERÇEKTEN ne yapıyor?
Ryan Detzel

1
Bu yanıt, Codebeef'inki gibi daha fazla bilgi içeriyorsa büyük ölçüde geliştirilebilir.
Jadar

@Codebeef Bunun Xcode'un doğasında olanlardan ziyade dayattığı bir kısıtlama olduğuna inanıyorum.
saagarjha

9

Cevabınız doğru olsa da , sadece tam olarak ne anlama get_task_allowgeldiğini bilmek isteyenlerin yapabilmesi için bu konuda daha spesifik olmak istiyorum .

get_task_allowdiğer uygulamaların uygulamanızın görev bağlantı noktasını almasına izin veren bir yetkidir. Bu task_for_pid(), uygulama işlem kimliğinizle çalışan başka herhangi bir uygulamanın uygulamanızın görev bağlantı noktasını alacağı anlamına gelir; böylece, örneğin bellekte bir şeyler yazma ve okuma gibi şeyler yapabilirler, böylece bir şeyleri yamayabilir ve davranışını değiştirebilirler. uygulamanız.

Bir jailbreak'in nasıl çalıştığına bakarsanız, yaptıkları ilk şeylerden birinin değerli bir şey task_for_pid(mach_task_self(),0,&kernel_task);olmak olduğunu fark edeceksiniz , böylece çekirdek belleğine dokunabilirler.kernel_taskmach_port_t0

Çekirdek yetkilerinin yetkisi olmadığından get_task_allowve Apple tfp0( task_for_pid 0) yapma olasılığını bile ortadan kaldırdığından, bir yamaya ihtiyaçları vardır.

Yani temelde Xcode'un uygulamanızın belleğine dokunması ve hata ayıklamak için onunla çalışması gerektiğinden, hata ayıklama için bunu etkinleştirmeniz gerekir, ancak uygulamanızı dağıtmak için bunu devre dışı bırakmanız gerekir, aksi takdirde herhangi bir uygulama sizin görev bağlantı noktası.


-7

Xcode 4 için: Yeni dosyadan Entitlements.plist dosyası oluşturmanız gerekir. ve Hedefler-> Ayarlar -> Kod İmzalama Yetkilerini buraya "Entitlements.plist" yazmanız gerekir

Bunu yaptım ve xcode artık hata almıyor

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.