![article thumbnail image](https://blog.kakaocdn.net/dn/WtBuy/btrUN2JEtY8/ggI7xHUHk0IptntN34z4Mk/img.png)
이번 포스팅에서는 Tuist에 App Extension을 추가하는 방법에 대해 알아보겠습니다.
저는 Widget으로 예시를 들겠습니다.
Target 만들기
AppExtension은 Target으로 생성해줘야 합니다.
Target(name: "WidgetExtension",
platform: .iOS,
product: .appExtension,
bundleId: bundleID + ".WidgetExtension",
deploymentTarget: .iOS(targetVersion: iosVersion, devices: [.iphone]),
infoPlist: .file(path: .relativeToRoot("WidgetExtension/Info.plist")),
sources: [.glob(.relativeToRoot("WidgetExtension/**"))],
resources: [.glob(pattern: .relativeToRoot("WidgetExtension/Resources/**"))],
entitlements: .relativeToRoot("Supporting Files/WidgetExtension.entitlements"),
dependencies: []
)
여기서 중요한점은 product는 .appExtension으로 설정하시면 됩니다.
저는 루트디렉토리를 기준으로 WidgetExtension 디렉토리를 생성해 위젯관련 파일을 넣어뒀습니다.
infoPlist, sources, resources 전부 glob패턴으로 해당 디렉토리를 명시해줬습니다.
보통 App Extension을 사용하면 본 서비스와 데이터를 공유하기 위해 App Groups를 사용할텐데 그때 entitlements가 생성됩니다. 해당 entitlements경로도 지정해줍니다.
Project에 Target 설정하기
Project함수로 프로젝트를 생성하실 때 targets 매개변수에 해당 타겟을 추가해주시면 됩니다. 여기서 주의하실 점은 product가 .app인 프로젝트에만 .appExtension 타겟을 추가할 수 있습니다. framework는 안됩니다.
추가 방법은 https://cheonsong.tistory.com/15 에 가시면 확인하실 수 있습니다.
Dependencies 추가하기
product가 .app 으로 설정된 프로젝트에 타겟을 주입했기 때문에 마찬가지로 .app으로 설정된 프로젝트에
아래 형태로 TargetDependency를 생성 후 dpendencies에 주입해줍니다.
.target(name: "WidgetExtension")
이후 tuist generate하시면 Target에 추가됩니다~~
target name설정등 추가적인 사항은 Tuist 공식 문서에서 확인 가능합니다.
https://docs.tuist.io/examples/app-extensions/#product-types
App Extensions | Tuist Documentation
This page documents how to declare and use App Extension targets.
docs.tuist.io
'iOS' 카테고리의 다른 글
[iOS] UIView를 생성할 때 연산프로퍼티(computed property)가 안되는 이유 (0) | 2022.12.29 |
---|---|
[iOS] UIButton Image와 Title사이 간격 조절하기 (0) | 2022.12.27 |
[iOS] Google Sheets와 Script로 현지화 자동화하기 (0) | 2022.12.27 |
[iOS] iOS프로젝트에 Script 설정하기 (with Tuist) (0) | 2022.12.21 |
[iOS] Tuist 외부라이브러리 가져오기 - Tuist (3/4) (0) | 2022.11.29 |