2014-10-22 22 views
10

Komut satırı aracılığıyla bir xcode projesine bir plist dosyası eklemeye çalışıyordum, blogların bazıları project.pbxproj dosyasını düzenlemek için önerildi. project.pbxproj dosyasını aradım ama hakkında fazla bilgi alamadım. Xcode içinde project.pbxproj dosyasının ne olduğunu bilen var mı? Biri buna nasıl girdi ekler?Komut satırı üzerinden Xcode projesine dosya ekle? Xcode içinde project.pbxproj dosyasının kullanımı?

Onunla çalışmak için this repo kullanıyorum.

şöyle yazdım script:

import sys 
import os 
from mod_pbxproj import XcodeProject 


def addPlistInProject(corodova_proj_name, xcode_proj_name, plist_file_name): 
    print "Cordova project name : " + corodova_proj_name 
    present_directory = os.getcwd() 
    path_to_xcode_proj = present_directory + '/' + corodova_proj_name + '/platforms/ios/' + xcode_proj_name + '.xcodeproj/project.pbxproj' 
    print "Xcode Project Path : " + path_to_xcode_proj 
    project = XcodeProject.Load(path_to_xcode_proj) 
    project.get_or_create_group('new group') 
    project.add_file(plist_file_name) 


if __name__ == "__main__": 
    corodova_proj_name = sys.argv[1] 
    xcode_proj_name = sys.argv[2] 
    plist_file_name = sys.argv[3] 
    print "Xcode Project Name = : " + xcode_proj_name 
    print "Plist File Path = : " + plist_file_name 
    addPlistInProject(corodova_proj_name, xcode_proj_name, plist_file_name) 
Ben senaryoyu çağırma olacak

:

python myscript.py hello HelloWorld manisha-rules_camdo.plist 

myscript.py Yazdığım senaryo, hello mevcut cordova projesi ve HelloWorld olduğu cordova platform add iOS kullanılarak oluşturulan Xcode projesidir. Ben şöyle olacak şu olacak

komut Sırası: hello cordova projenin adı ve iOS hedefin HelloWorld adıdır

cordova create hello com.example.hello HelloWorld 
cordova platform add iOS 
py myscript.py hello HelloWorld manisha-rules_camdo.plist 

.

cevap

3

Yapmak istediğiniz şey en basit şey değildir. Xcode pbxproj dosya formatı XML gibi görünüyor, ama sanırım ona pek çok tescilli/belgesiz parça var (her şey iOS gibi). Anlayabildiğim kadarıyla Xcode'un komut satırından dosya eklemenin herhangi bir yolu yok.

XCode'un proje dosyalarını değiştirmek için kullanabileceğiniz bir Python betiği buldum, ancak birkaç yaşında ve güncel olmayabilir.

Here is the Blog post that talks about it ve here is the current GitHub repo (Bu son yazım 5 gün önce).

Bunu bir deneyin ve işinize yarayıp yaramadığını bildirin.

+0

Blogunuzu bunun için kullandım! Ben tam olarak yaptığımı belirterek soruyu düzenlediniz! Eğer yazıyorsanız lütfen yazınız eğer ben nt proje –

+0

içine eklenmiş dosyaları alıyorum xcode 6 –

+0

darn aynı betik kullanarak dosya ekleyemiyorum! Araştırmacının bakması için Git'de bazı ['sayıları' '(yani hata raporları)] (https://github.com/kronenthaler/mod-pbxproj/issues) açmanız gerektiği gibi görünüyor. –

3

Başka mükemmel bir seçenek, özellikle Cordova projeleri için, XCODE düğüm modülünü kullanmaktır:: Aynı zamanda geliştiriciler aktif bir topluluk var node-xcode; NPM ile kolayca ekleyebilirsiniz.

Yerinde bir kez, her derlemede özel kaynak dosyaları, ek çerçeveler, vb, pbxproj değiştirmek için bir sonra_prepare kanca oluşturabilirsiniz. Aslında Cordova, kendi kendini oluşturma süreçlerinde bu modülü kullanıyor.Oluşturduğum sonra

npm install xcode --save-def 

Ve benim XCode projeye ekstra çerçeveler eklemek için after_prepare kanca:

var xcode = require('xcode'), 
    fs = require('fs'), 
    rootdir = process.argv[2], 
    projectPath = rootdir + '/platforms/ios/my-project/project.pbxproj', 
    proj = new xcode.project(projectPath); 

proj.parse(function(err) { 
    if (err) { 
     console.log("Oh noes! XCODE project failed to parse:"); 
     console.log(err); 
    } else { 
     proj.addFramework('Fabric.framework', {customFramework:true}); 
     proj.addFramework('Crashlytics.framework', {customFramework:true}); 
     proj.addFramework('AdSupport.framework'); 
     proj.addFramework('FacebookSDK.framework', {customFramework:true}); 

     fs.writeFileSync(projectPath, proj.writeSync()); 
     console.log("Updated XCODE project with references to social libs!"); 
    } 
}); 

XCODE modülüdür benim çözüm içinde

, ben ilk NPM aracılığıyla modülü eklendi Eklemeye çalıştığınız çerçevelerin/dosyaların/dosyaların zaten mevcut olup olmadığını bilecek kadar akıllıdır ve bunları tekrar eklemeyi denemeyecektir.