问题
I have developed a cocoa project and right now it has two versions, both sandboxed and non-sandboxed version.
there are some differences between the sandboxed and non-sandboxed version, but the majority is the same. ie. for sandboxed version I will have limited access to certain directories, and in order to access some directories like desktop I'll have to add the entitlement. for the non-sandboxed version, I'll have no limitation on the directories, also I am allowed to add the "check for update" aka sparkle framework etc.
both are still in testing mode (ie. not yet submitted to the mac app store) and right now, how I separate them was, I have the master branch for the non-sandboxed version, and a new branch for the sandboxed version.
however updating code is a pain in the butt. Once I have implemented some features for the non-sandboxed version, I had to commit the changes, then merge the changes back to the sandboxed branch. The thing is, I can't just merge all the changes to the sandboxed version, I have to be careful, only merge the feature changes I made.
So for those of you who developed app for both sandboxed and non-sandboxed, how do you deal with such situation. Is there any easy way to maintain the code?
回答1:
I think a good approach is to use a define (SANDBOX for example) and to create two targets one for the sandbox version which include the entitlements file and the SANDBOX define, and one which has no entitlements file and no SANDBOX define.
In the classes, functions in which the program must behaves different, you can easily separate the code for the sandboxed and non-sandboxed versions using this define (SANDBOX).
来源:https://stackoverflow.com/questions/15682384/one-project-two-versions-sandboxed-and-nonsandboxed-version-any-easy-way-to