美文网首页
2019-02-26 Xcode 里targets 和 sche

2019-02-26 Xcode 里targets 和 sche

作者: KingAmo | 来源:发表于2019-02-26 21:22 被阅读0次

    targets

    Projects can have multiple targets—multiple apps and multiple configurations of the same app. A target specifies a product to build, such as an iOS, macOS, tvOS, or watchOS app. Most projects you create from a template have one target for the main app and other targets for test apps. For watchOS apps, there’s a target for the iOS app, the WatchKit extension, and the WatchKit app.

    每当你复制一个targets 时,项目里就会多一个对应的 info.plist 文件,编辑这个info.plist文件,可以打包出不同配置( build setting 以及 build phases)的app

    scheme

    A scheme is a collection of settings that specify the targets to build, the build configuration, and the executable environment. Xcode creates a default scheme for each target in your project

    scheme 是用来决定运行哪个 target 的。
    当你运行(Build),打包(archive)app的时候,其实是在运行或打包某一个scheme的配置


    image.png

    如上,如果点击运行,就是在运行 test_ios_proj copy 这个scheme。这个scheme是在复制 test_ios_proj这个targets生成了test_ios_proj copy这个targets的时候自动生成的相同的名字的scheme,默认情况下,这个scheme 的run的时候 配置的运行的targets 就是 test_ios_proj copy ,但是你可以编辑修改选择。编辑这个scheme,如下图,有三个targets,可以选择其他 targets,使得选择这个scheme在run的时候,运行的是其他targets

    • 所有的scheme


      所有的scheme
      image.png
    • scheme后面的Shared 选项如果没勾选,那么这个scheme就是自己的scheme,只能自己使用,这个scheme的配置就在.xcodeproj/username.xcuserdata/xcschemes(username是你的名字)目录下面,而这个目录是不会被版本控制的。

    • 如果Shared 选项勾选了,那么这个scheme就是共享的scheme,这个scheme的项目配置就在.xcodeproj/xcshareddata/xcschemes目录下, 这个目录是被 source control的,别人就可以使用你的这个scheme

    什么?你看不到这些目录?可以看看我的这篇文章:.xcodeproj的真实面貌

    每一个scheme 都是属于某一个 Container的,很多第三方库也会有scheme。比如 Lottie 这个scheme 的ContainerLottie project 这个导入的第三方库

    • 编辑某一个scheme
      可以选择不同的 configuration 和不同的 targets
      image.png
    编辑某一个scheme

    configuration

    configurationproject 的配置,被 targets 所继承 (下图我复制新增了一个releaseStagingconfiguration)

    image.png

    然后可以在 Preprocessor Macros 中新增不同 configuration 的宏(macros) ,在代码中就可以直接使用。

    还可以添加不同的 User-Defined Setting,如下图,具体使用见我的另一篇文章
    可以针对不同的configuration 定义不同的值,以便在设置(plist)中以$(xxxx) 的方式使用。
    Build Settings也可以把Bundle Identifier用这种方法做环境分离打出不同环境的包,这样不同环境的包就可以在手机上并存了。(当然也可以在不同targets的plist文件里修改,然后打包不同的targets)
    plist里所有值都可以按上面方法做到环境分离。

    image.png image.png

    点击某一个文件,右边的 inspector area 有个 Target Membership ,显示了这个文件在哪个 target 中生效,同一个文件可以同时归属多个 target。

    • 左边导航栏有四个 Group , 前三个对应初始的三个 Target ,并且都在第四个 Products 中有对应的一个文件; 复制出来的 Target 并没有对应的 group ,但是在 Products 中有对应的一个文件(.app 或者 .xctest 文件), 一个Target对应一个Product。

    • 当添加新的Target的时候,在创建类或其他文件时,在Targets中会多出对应的Target,注意你要选中放到那个Target中。

    相关文章

      网友评论

          本文标题:2019-02-26 Xcode 里targets 和 sche

          本文链接:https://www.haomeiwen.com/subject/nloayqtx.html