Search Unity

Can we remove frameworks from the Xcode player?

Discussion in 'iOS and tvOS' started by marjan, May 23, 2012.

  1. marjan

    marjan

    Joined:
    Jun 6, 2009
    Posts:
    563
    With 3.5 there are more and more frameworks added to a build, often not in use. I for example do not need twitter or gamecenter and video support in a current project. But trying to remove those frameworks just resulted in errors. I have older projects to maintain, but cannot use 3.5 because all those frameworks on top of others lead to the fact, that I could not compile for armv6 any more (forgot the error message).

    Anybody knows if this is possible?
     
  2. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    sounds like you added 3rd party libraries from Prime31. if you do you will need the framework in there.

    of those listed, Unity only uses GameCenter (without pro, Unityengine.Social uses it) and potentially video if you are on iOS pro I guess, but all as optional normally

    And they will not change the build size actually either as those are iOS frameworks.
    That you can not build is likely related to the fact that Twitter didn't even exist on pre 5.0 with ARMV6 ceasing to exist with 4.3 already.
     
  3. marjan

    marjan

    Joined:
    Jun 6, 2009
    Posts:
    563
    Hello thanks for the answer. But no, i did not use Prime31. I rather had "normal" xcode project and just hooked unity in. For the normal part i needed some frameworks for the normal part.

    As of now Unity itself creates a project with:

    - Foundation
    - UIKit
    - OpenGLEs
    - Quartzcore
    - OpenAL
    - CFNetwork
    - AudioToolbox
    - iAd (i definatly don´t need this)
    - CoreMedia
    - CoreVideo
    - AVFoundation (i think i don´t need this for now)
    - Coregraphics
    - CoreMotion
    - Gamekit (i definatly don´t need this)


    Edit:
    Now, if i remove Gamekit and iAd Frameworks and want to compile i get this:

    Undefined symbols for architecture armv7:
    "_OBJC_CLASS_$_GKLocalPlayer", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_OBJC_CLASS_$_GKAchievementDescription", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_OBJC_CLASS_$_GKAchievementViewController", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_ADBannerContentSizeIdentifier480x32", referenced from:
    __ZL35InitializeADSizeIdentifierConstantsv in libiPhone-lib.a(iAd.o)
    "_ADBannerContentSizeIdentifierLandscape", referenced from:
    __ZL35InitializeADSizeIdentifierConstantsv in libiPhone-lib.a(iAd.o)
    "_OBJC_CLASS_$_GKLeaderboardViewController", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_ADBannerContentSizeIdentifier320x50", referenced from:
    __ZL35InitializeADSizeIdentifierConstantsv in libiPhone-lib.a(iAd.o)
    "_OBJC_CLASS_$_GKPlayer", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_OBJC_CLASS_$_GKAchievement", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_OBJC_CLASS_$_GKScore", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
    "_ADBannerContentSizeIdentifierPortrait", referenced from:
    __ZL35InitializeADSizeIdentifierConstantsv in libiPhone-lib.a(iAd.o)
    "_GKErrorDomain", referenced from:
    __ZN6iphone15CreateUserImageEP7UIImageP7NSError in libiPhone-lib.a(iPhoneGameCenter.o)
    "_OBJC_CLASS_$_GKLeaderboard", referenced from:
    objc-class-ref in libiPhone-lib.a(iPhoneGameCenter.o)
     
    Last edited: May 24, 2012
  4. Dreamora

    Dreamora

    Joined:
    Apr 5, 2008
    Posts:
    26,601
    The ones you claim to don't need are required for Unity 3.5 core functionality.
    AV is for movie as you understood right.
    GameKit is for GameCenter in UnityEngine.Social
    iAd is for the iAd support in Unity 3.5

    without iOS pro your only option is to go back to Unity 3.4 but as mentioned, including them should be no problem at all as these things are part of the iOS install and don't impact build size, nor should they impact ARMV6 builds unless you set the wrong deployment target by error.
     
  5. marjan

    marjan

    Joined:
    Jun 6, 2009
    Posts:
    563
    What has this to do with iOs pro, which i happen to have?
     
  6. Moonjump

    Moonjump

    Joined:
    Apr 15, 2010
    Posts:
    2,572
    Go to Build Phases. Expand Link Binary With Libraries. Change the problem Frameworks from Required to Optional.