क्यों Xcode 7 * .dylib के बजाय * .tbd दिखाता है?


138

Xcode 7 इन टार्गेट> BuildPhases> लिंक बाइनरी लाइब्रेरीज़ के साथ> टैप + बटन

जोड़ने के लिए चौखटे चुनते समय, आप * .dylib को नहीं ढूँढ सकते, आप इसके बजाय * .tbd देखेंगे।

इसका क्या कारण है?

** जिन लोगों को dylib की आवश्यकता होती है, उनके लिए इस पोस्ट का अनुसरण करें

  1. "अन्य जोड़ें" चुनें
  2. एक बार फ़ाइल चयन विंडो में "CMD" + Shift + G (फ़ोल्डर पर जाएं) और टाइप / usr / lib / करें
  3. / उपयोगकर्ता / lib से आप * .dylib फ़ाइलें पा सकते हैं

11
यह सेब के सभी "गुप्त योजना" का हिस्सा है ...
l'L'l

/। usl / lib / से .dylib जोड़ना / यह केवल मेरे लिए काम करता है जब सिम्युलेटर पर अपना ऐप चला रहा है, यह डिवाइस के साथ काम नहीं करता है।
केशव विश्वकर्मा

जवाबों:


153

मैंने Google को परिमार्जित किया है, लेकिन केवल एक चीज जो मैं अब तक पा सकता हूं वह है Apple डेवलपर फ़ोरम के निम्नलिखित उद्धरण :

जो लोग उत्सुक हैं, .tbd फाइलें नई "टेक्स्ट-बेस्ड स्टब लाइब्रेरीज़" हैं, जो एसडीके में उपयोग के लिए स्टब लाइब्रेरीज़ का एक बहुत अधिक कॉम्पैक्ट संस्करण प्रदान करते हैं, और इसके डाउनलोड आकार को कम करने में मदद करते हैं।

उम्मीद है कि जल्द ही और भी दस्तावेज आने वाले हैं।

अपडेट करें

एक उदाहरण के रूप में, यहाँ libsqlite3.tbd की संपूर्ण सामग्री है । यह केवल एक पाठ फ़ाइल है। ध्यान दें कि इंस्टॉल-नाम libsqlite3.dylib है

---
archs:           [ armv7, armv7s, arm64 ]
platform:        ios
install-name:    /usr/lib/libsqlite3.dylib
current-version: 216.4
compatibility-version: 9.0
exports:         
  - archs:           [ armv7, armv7s, arm64 ]
    symbols:         [ __sqlite3_lockstate, __sqlite3_purgeEligiblePagerCacheMemory, 
                       __sqlite3_system_busy_handler, __sqlite_auto_profile, 
                       __sqlite_auto_profile_syslog, __sqlite_auto_trace, 
                       __sqlite_auto_trace_syslog, _sqlite3OsShmHasMultipleLinks, 
                       _sqlite3OsShmRenamedWhileOpen, _sqlite3OsShmWasTruncated, 
                       _sqlite3OsShmWasUnlinkedWhileOpen, _sqlite3VersionNumber, 
                       _sqlite3VersionString, _sqlite3_aggregate_context, 
                       _sqlite3_aggregate_count, _sqlite3_auto_extension, 
                       _sqlite3_backup_finish, _sqlite3_backup_init, _sqlite3_backup_pagecount, 
                       _sqlite3_backup_remaining, _sqlite3_backup_step, 
                       _sqlite3_bind_blob, _sqlite3_bind_blob64, _sqlite3_bind_double, 
                       _sqlite3_bind_int, _sqlite3_bind_int64, _sqlite3_bind_null, 
                       _sqlite3_bind_parameter_count, _sqlite3_bind_parameter_index, 
                       _sqlite3_bind_parameter_name, _sqlite3_bind_text, 
                       _sqlite3_bind_text16, _sqlite3_bind_text64, _sqlite3_bind_value, 
                       _sqlite3_bind_zeroblob, _sqlite3_blob_bytes, _sqlite3_blob_close, 
                       _sqlite3_blob_open, _sqlite3_blob_read, _sqlite3_blob_reopen, 
                       _sqlite3_blob_write, _sqlite3_busy_handler, _sqlite3_busy_timeout, 
                       _sqlite3_cancel_auto_extension, _sqlite3_changes, 
                       _sqlite3_clear_bindings, _sqlite3_close, _sqlite3_close_v2, 
                       _sqlite3_collation_needed, _sqlite3_collation_needed16, 
                       _sqlite3_column_blob, _sqlite3_column_bytes, _sqlite3_column_bytes16, 
                       _sqlite3_column_count, _sqlite3_column_decltype, 
                       _sqlite3_column_decltype16, _sqlite3_column_double, 
                       _sqlite3_column_int, _sqlite3_column_int64, _sqlite3_column_name, 
                       _sqlite3_column_name16, _sqlite3_column_text, _sqlite3_column_text16, 
                       _sqlite3_column_type, _sqlite3_column_value, _sqlite3_commit_hook, 
                       _sqlite3_compileoption_get, _sqlite3_compileoption_used, 
                       _sqlite3_complete, _sqlite3_complete16, _sqlite3_config, 
                       _sqlite3_context_db_handle, _sqlite3_create_collation, 
                       _sqlite3_create_collation16, _sqlite3_create_collation_v2, 
                       _sqlite3_create_function, _sqlite3_create_function16, 
                       _sqlite3_create_function_v2, _sqlite3_create_module, 
                       _sqlite3_create_module_v2, _sqlite3_data_count, 
                       _sqlite3_data_directory, _sqlite3_db_config, _sqlite3_db_filename, 
                       _sqlite3_db_handle, _sqlite3_db_mutex, _sqlite3_db_readonly, 
                       _sqlite3_db_release_memory, _sqlite3_db_status, 
                       _sqlite3_declare_vtab, _sqlite3_enable_shared_cache, 
                       _sqlite3_errcode, _sqlite3_errmsg, _sqlite3_errmsg16, 
                       _sqlite3_errstr, _sqlite3_exec, _sqlite3_expired, 
                       _sqlite3_extended_errcode, _sqlite3_extended_result_codes, 
                       _sqlite3_file_control, _sqlite3_finalize, _sqlite3_free, 
                       _sqlite3_free_table, _sqlite3_get_autocommit, _sqlite3_get_auxdata, 
                       _sqlite3_get_table, _sqlite3_global_recover, _sqlite3_initialize, 
                       _sqlite3_intarray_bind, _sqlite3_intarray_create, 
                       _sqlite3_interrupt, _sqlite3_last_insert_rowid, 
                       _sqlite3_libversion, _sqlite3_libversion_number, 
                       _sqlite3_limit, _sqlite3_log, _sqlite3_malloc, _sqlite3_malloc64, 
                       _sqlite3_memory_alarm, _sqlite3_memory_highwater, 
                       _sqlite3_memory_used, _sqlite3_mprintf, _sqlite3_msize, 
                       _sqlite3_mutex_alloc, _sqlite3_mutex_enter, _sqlite3_mutex_free, 
                       _sqlite3_mutex_leave, _sqlite3_mutex_try, _sqlite3_next_stmt, 
                       _sqlite3_open, _sqlite3_open16, _sqlite3_open_v2, 
                       _sqlite3_os_end, _sqlite3_os_init, _sqlite3_overload_function, 
                       _sqlite3_prepare, _sqlite3_prepare16, _sqlite3_prepare16_v2, 
                       _sqlite3_prepare_v2, _sqlite3_profile, _sqlite3_progress_handler, 
                       _sqlite3_randomness, _sqlite3_realloc, _sqlite3_realloc64, 
                       _sqlite3_release_memory, _sqlite3_reset, _sqlite3_reset_auto_extension, 
                       _sqlite3_result_blob, _sqlite3_result_blob64, _sqlite3_result_double, 
                       _sqlite3_result_error, _sqlite3_result_error16, 
                       _sqlite3_result_error_code, _sqlite3_result_error_nomem, 
                       _sqlite3_result_error_toobig, _sqlite3_result_int, 
                       _sqlite3_result_int64, _sqlite3_result_null, _sqlite3_result_text, 
                       _sqlite3_result_text16, _sqlite3_result_text16be, 
                       _sqlite3_result_text16le, _sqlite3_result_text64, 
                       _sqlite3_result_value, _sqlite3_result_zeroblob, 
                       _sqlite3_rollback_hook, _sqlite3_rtree_geometry_callback, 
                       _sqlite3_rtree_query_callback, _sqlite3_set_authorizer, 
                       _sqlite3_set_auxdata, _sqlite3_shutdown, _sqlite3_sleep, 
                       _sqlite3_snprintf, _sqlite3_soft_heap_limit, _sqlite3_soft_heap_limit64, 
                       _sqlite3_sourceid, _sqlite3_sql, _sqlite3_status, 
                       _sqlite3_status64, _sqlite3_step, _sqlite3_stmt_busy, 
                       _sqlite3_stmt_readonly, _sqlite3_stmt_status, _sqlite3_strglob, 
                       _sqlite3_stricmp, _sqlite3_strnicmp, _sqlite3_table_column_metadata, 
                       _sqlite3_temp_directory, _sqlite3_test_control, 
                       _sqlite3_thread_cleanup, _sqlite3_threadsafe, _sqlite3_total_changes, 
                       _sqlite3_trace, _sqlite3_transfer_bindings, _sqlite3_update_hook, 
                       _sqlite3_uri_boolean, _sqlite3_uri_int64, _sqlite3_uri_parameter, 
                       _sqlite3_user_data, _sqlite3_value_blob, _sqlite3_value_bytes, 
                       _sqlite3_value_bytes16, _sqlite3_value_double, _sqlite3_value_int, 
                       _sqlite3_value_int64, _sqlite3_value_numeric_type, 
                       _sqlite3_value_text, _sqlite3_value_text16, _sqlite3_value_text16be, 
                       _sqlite3_value_text16le, _sqlite3_value_type, _sqlite3_version, 
                       _sqlite3_vfs_find, _sqlite3_vfs_register, _sqlite3_vfs_unregister, 
                       _sqlite3_vmprintf, _sqlite3_vsnprintf, _sqlite3_vtab_config, 
                       _sqlite3_vtab_on_conflict, _sqlite3_wal_autocheckpoint, 
                       _sqlite3_wal_checkpoint, _sqlite3_wal_checkpoint_v2, 
                       _sqlite3_wal_hook ]
...

मुझे यह और अन्य .tbd फाइलें मिलीं

Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/

यदि आप अपने Xcode प्रोजेक्ट के जनरल टैब पर जाते हैं और फिर लिंक्ड फ्रेमवर्क और लाइब्रेरी के तहत लाइब्रेरी जोड़ते हैं, तो आप एक .tbd फ़ाइल भी देख सकते हैं। .Tbd फ़ाइल को आपके प्रोजेक्ट में कॉपी किया जाएगा।

तो ऐसा प्रतीत होता है कि .dylib फ़ाइल बाइनरी कोड की वास्तविक लाइब्रेरी है जिसे आपकी परियोजना उपयोग कर रही है और उपयोगकर्ता के डिवाइस पर / usr / lib / निर्देशिका में स्थित है। दूसरी ओर .tbd फ़ाइल, केवल एक पाठ फ़ाइल है जो आपकी परियोजना में शामिल है और आवश्यक .dylib बाइनरी के लिंक के रूप में कार्य करती है। चूंकि यह पाठ फ़ाइल बाइनरी लाइब्रेरी की तुलना में बहुत छोटी है, इसलिए यह एसडीके के डाउनलोड आकार को छोटा बनाती है।

इस बिंदु पर, मैं केवल दी गई जानकारी से बच रहा हूं, इसलिए यदि मैं गलत हूं तो कृपया मुझे सुधारें।


3
TBD फाइल प्रारूप वास्तव में केवल एक YAML फाइल है। लिंकर सिर्फ कुछ टैग के लिए लग रहा है।
C0deH4cker

5
यह ऐप का आकार छोटा क्यों करता है? यह संकलन / लिंक समय पर वैसे भी वास्तविक dylib से लिंक नहीं है? यह कहते हुए कि आप गलत हैं, बस समझने की कोशिश कर रहे हैं
पत्थरबाज

3
यह आपके द्वारा डाउनलोड किए जा रहे एसडीके के आकार को कम कर देता है, न कि आपके द्वारा बनाए जा रहे ऐप का आकार।
जोकी

धन्यवाद, @ जोकी मैंने अपने उत्तर में त्रुटि को ठीक किया। क्या आप जानते हैं कि यदि बिनरी एसडीके में नहीं हैं, तो ऐप में क्या जोड़ा जाता है? और वे कहाँ से आते हैं? क्या उन्हें .tbd फ़ाइलों के उपयोग के आधार पर आवश्यकतानुसार डाउनलोड किया जाता है?
सुरगाछ

5
SDK में dylibs OS स्थापित होने पर डिवाइस पर मौजूद होते हैं। इसलिए वे एसडीके में बेकार थे, लेकिन जब आप ऐप को लिंक करते हैं तो लिंकर को अपना काम करने की अनुमति देता है (डायनेमिक लाइब्रेरी ऐप में कॉपी नहीं होती हैं और अलग रहती हैं)। तो tbd फ़ाइलों के साथ परिवर्तन केवल जानकारी है कि लिंकर द्वारा इस्तेमाल किया गया था, और इस नए प्रारूप को समझने के लिए लिंकर को अद्यतन रखने के लिए dylib पट्टी है।
जोकी J ’

22

.dylib संकलित बाइनरी है जिसमें मशीन कोड होता है। .tbd एक क्रॉस-प्लेटफ़ॉर्म मॉड्यूल मैप के समान एक छोटी टेक्स्ट फ़ाइल है।


8
आपने यह कहां से सीखा? क्या आपके पास कोई लिंक है जो मैं इस बारे में अधिक शोध कर सकता हूं?
सुरगाछ

2
सिर्फ एक .tds की सामग्री को देखें
पीटर लैपिसु

6
.Tds फ़ाइल .tdb फ़ाइल के समान है? इसकी सामग्री देखने के लिए मुझे ऐसी फ़ाइल कहाँ मिलेगी?
सुरगाछ

7
यह टीबीडी है, टीडीएस या टीडीबी नहीं। यह पाठ आधारित dylib परिभाषा के लिए है।
क्रेग ६५५३५

4

.tbd- Text Based dylib stubs। यह एक प्रकार का अनुकूलन है जिसका मतलब है कि आपको .dylibअपने बंडल में फ़ाइल (जो किसी लक्ष्य पर मौजूद है) की प्रतिलिपि नहीं बनानी है (जैसे अनुप्रयोग)। इस फ़ाइल में बाइनरी कोड नहीं है जिसका फ़ाइल आकार पर एक बड़ा प्रभाव है।

यह केवल इसके लिए लागू होता है:

  1. Dynamic libraries क्योंकि वे रनटाइम-लिंक्ड हैं
  2. फ़ाइल को लक्ष्य पर एक प्रासंगिक पथ होना चाहिए। एक परिणाम के रूप में यह के लिए सबसे अच्छी जगह है standard system libraries

IOS डेवलपमेंट के लिए आप .tbd फाइल्स पा सकते हैं जिन्हें आप यहां इस्तेमाल कर सकते हैं

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib

उदाहरण के लिए libiconv.tbdजैसा दिखता है

यहां छवि विवरण दर्ज करें

इस फ़ाइल में कुछ मेटा जानकारी है जैसे:

  • .dylib स्थान
  • प्रतीकों (वर्ग के गुण, तरीके)
  • आर्किटेक्चर
  • मंच

1
इसमें विधि घोषणाएँ शामिल नहीं हैं। केवल कक्षाओं के नाम और पुस्तकालय से निर्यात किए गए मुफ्त कार्यों के नाम।
एंटन कुकोबा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.