xcode - एक्सकोड 4.0 प्रतिलिपि बंडल संसाधनों का आयोजन



resources bundle (3)

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

क्या Xcode 4.0 में कॉपी बंडल संसाधनों के भीतर फ़ाइलों को व्यवस्थित करने का एक आसान तरीका है? मेरे पास मेरे प्रोजेक्ट के लिए कई लक्ष्य हैं, और हर बार जब मैं फाइल जोड़ता हूं, तो मुझे हर समय की जरूरत है, उन्हें हर प्रोजेक्ट में जोड़ें। अगर मैं गलती से प्रत्येक लक्ष्य को संसाधनों की प्रतिलिपि करने के लिए भूल गया था तो बंटल में फाइलों की गिनती को देखते हुए, जो अंततः प्रत्येक प्रोजेक्ट के लिए समान हो जाएगा )।

अगर संसाधन सूची के भीतर मैं फ़ोल्डर्स बना सकता हूं, तो यह बहुत आसान होगा, लेकिन ऐसा नहीं लगता कि मैं कर सकता हूं। कम से कम यह मदद कर सकता है अगर मैं उन्हें स्वचालित रूप से वर्णमाला सकता।


Answer #1

आपको क्या करना है। Pbxproj फ़ाइल को पार्स करना है। .pbxproj में सभी लिंक की गई फ़ाइल और संसाधन अपने स्वयं के UUID से पहचाने जाते हैं। इसलिए,

  1. rootObject के rootObject प्राप्त करें
  2. rootObject से rootObject के लक्ष्य की सूची प्राप्त करें
  3. प्रत्येक लक्ष्य के लिए Resource , Source और Framework लिए यूयूआईडी की सूची प्राप्त होती है। और तीन संसाधन प्रकारों के लिए यूआईआईआईडी फाइलों की सूची ढूंढें
  4. प्रत्येक लक्ष्य के लिए संसाधनों की सूची की तुलना करें

कुछ संकेत, प्रोजेक्ट फ़ाइल का प्रारूप ऐसा है, रूट ऑब्जेक्ट अन्य ऑब्जेक्ट्स को दर्शाता है।

{
    archiveVersion = 1;
    classes = {
    };
    objectVersion = 45;
    objects = {
         /* .... List of all objects are here .... */
        }
    rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}

रूट ऑब्जेक्ट से हम लक्ष्य मूल्य का अनुसरण कर सकते हैं।

/* Begin PBXProject section */
        29B97313FDCFA39411CA2CEA /* Project object */ = {
            isa = PBXProject;
            buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MyProject" */;
            compatibilityVersion = "Xcode 3.1";
            developmentRegion = English;
            hasScannedForEncodings = 1;
            knownRegions = (
                English,
                German,
                de,
            );
            mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
            projectDirPath = "";
            projectRoot = "";
            targets = (
                1D6058900D05DD3D006BFB54 /* TargetDebug */,
                C446CDCB12BA35A1001324C8 /* TargetAdHoc */,
                C446CF2D12BA3DDC001324C8 /* TargetAppStore */,
            );
        };
/* End PBXProject section */

प्रोजेक्ट फ़ाइल के लक्ष्य खंड में, बिल्डफ़ेस में कॉपी किए गए बंडल संसाधन सूची और लिंक का लिंक होता है।

    /* Begin PBXNativeTarget section */
            1D6058900D05DD3D006BFB54 /* TargetAdHoc */ = {
                isa = PBXNativeTarget;
                buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "TargetAdHoc" */;
                buildPhases = (
                    1D60588D0D05DD3D006BFB54 /* Resources */,
                    1D60588E0D05DD3D006BFB54 /* Sources */,
                    1D60588F0D05DD3D006BFB54 /* Frameworks */,
                );
                buildRules = (
                );
                dependencies = (
                );
                name = TargetAdHoc;
                productName = MyProject;
                productReference = 1D6058910D05DD3D006BFB54 /* MyProject.app */;
                productType = "com.apple.product-type.application";
            };


C446CDCC12BA35A1001324C8 /* Resources */ = {
            isa = PBXResourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                C446CDCD12BA35A1001324C8 /* MainWindow.xib in Resources */,
                    /* ....... list of all PNGs and XIB files..... */
                            81CDEBBF13B21B790067A088 /* AnImage.png in Resources */,
            );
            runOnlyForDeploymentPostprocessing = 0;
        };

Answer #2

(Xcode 3.2.x पर): आप चरण का चयन करके एक चरण में फ़ाइलों को वर्णमाला बना सकते हैं, फिर संपादित करें -> सॉर्ट करें -> नाम से
जहां तक ​​उन्हें "फ़ोल्डर्स" में बांट दिया जाता है - आपको कई प्रतिलिपि चरणों से कुछ नहीं रोक रहा है! आप प्रत्येक को एक वर्णनात्मक नाम भी दे सकते हैं।





bundle