< 증분적으로 확인하고 변경된 사항들을 추가하고 있으니 꼭 끝까지 읽어보고 해당 내용을 반영할 것>
현재 상황은
ruby 버전 올리고
cocoapods 버전 올리고
User Script Sandboxing -> No 인 상황.
그 상황에서 지속적으로 mac os 로 넘어와서 빌드할때 build fail 이 나는 상황이었고, 해당 build fail 의 경우가 google admob sdk 와 관련있다는 내용을 파악해서 그러한 부분에 대해서는 pod file 을 수정하고 pod install 을 해주라는 형태의 내용들을 여러개 파악할 수 있어서 그와 관련된 방향으로 해결 방향을 결정해서 시도해보았다.
처음 unity 에서 빌드해서 얻은 폴더 상태에서는 pods 폴더가 없고 Unity-iPhone.xcodeproj 가지만 있는 상태였는데,
이와같은 build fail 상황에서 pod install 을 이용해서 문제를 해결하기 위해서 현 상황과 원하는 문제 해결 방향과 그에 대한 실행 사항들을 chatGPT-4o 를 통해 검색해본 결과 pod file 에 Google-Mobile-Ads-SDK 에 대한 사항을 편집하였다.
그리고 pod Install 실행을 통해서 정의된 종속성을 설치하는 과정을 거쳤다.
이때에 해당 pod install 명령어를 수행하는 directory 의 경우는 유니티 프로젝트 빌드를 통해서 얻게 되는 폴더이고 xcodeproj 파일이 존재하는 폴더이다. 해당 폴더 경로로 터미널로 이동한뒤에 그 위치에서 pod install 을 진행
그렇게 하고나면 해당 디렉토리에 Pods 폴더, Podfile.lock, 그리고 .xcworkspace 파일이 생기게 된다.
그 후에 xcodepoj 파일이 아니라 xcworkspace 파일을 열고 들어가서 거기서 product 에서 archive 를 하면, 그동안 정상적으로 빌드되지 않던 프로젝트가 정상적으로 빌드됨을 확인할 수 있다.
이때에 Build Stettings -> Build Options -> User Script Sandboxing 의 경우는 No 상태이다.
(현재 xcode 의 경우는 15.4 이고 IOS 17.5 인 상황인데, xcode 에서 Update to recommended settings 를 통해서 그냥 모두 추천하는 설정을 세팅해 버리면 그 내부 사항중에 있는 User Script Sandboxing 이 Yes 로 되면서 빌드오류가 발생하는 경우가 있다.
그 경우는 권한문제와 관련된 형태로 빌드 실패가 되는데 주의하도록. 모든 버전에서 이와 같은 문제가 발생하는지는 모르겠으나, User Script Sandboxing 이 Yes 로 되어있는 경우 발생하는 build fail 에 대한 내용이 많으니 참고해볼것. (현재 사용하는 장비는 2015 MBP 이고 OpenCore Legacy Patcher 를 이용해서 Sonoma 14.5 까지 올려놓은 상황이다. 기본적으로는 Mac OS 12.7 까지가 한계라 xcode 를 사용할 수 없어서 강제로 올렸다. xcode 버전은 15.4 , IOS 17.5 ))
위의 경우 기존에 존재하던 Podfile 을 연결 프로그램을 vscode 로 열어서 수정한 상황이고, 이때에 추가한 것은 10 행에 존재하는
pod 'Googole-Mobile-Ads-SDK'
를 추가하였는데, 그 위에 target 'UnityFramework' 에 동일하게 pod 'Google-Mobile-Ads-SKD' 가 있어서, 내가 새롭게 추가한 내용이 정상적으로 동작하는데 영향을 미치지 않았을수도 있다는 생각은 들지만, 이 부분에 대해서는 현재 상황에서 확실하게 아래에도 따로 명시적으로 작성해주는것이 반드시 필요한지에 대해서는 확인하고 넘어가지 않을 것이다. ruby 에 대해서도, cocoapods 에 대해서도 더 자세하게 파고들어 가는건 현재 상황에서는 내가 초점을 맞추어야 하는 부분을 넘어서는 영역이라는 생각이 들고, 다음에 다시 새롭게 빌드하는 상황이 올때 예외처리를 하면서 영향을 미치는지, 아니면 그냥 pod install 을 통해서 얻어낸 .xcworkspace 파일을 통한 빌드가 가장 핵심인지에 대해서 확인해보도록 하자.
가장 도움이 되었던 GPT 답변을 아래에 첨부해둔다.
=========================================
Unity로 생성된 Xcode 프로젝트에서 `pod install`을 통해 필요한 CocoaPods 종속성을 설치하려면, 다음 단계를 따르시면 됩니다. 이 과정에서는 프로젝트 디렉터리 구조를 확인하고, 올바른 위치에 Podfile을 작성하여 CocoaPods 설치를 진행합니다.
### 단계별 지침
1. **Xcode 프로젝트 디렉터리로 이동**:
Unity에서 빌드한 Xcode 프로젝트 파일(`.xcodeproj`)이 위치한 디렉터리로 이동합니다. 일반적으로 Unity 프로젝트의 `Build` 폴더나 `iOS` 폴더에 위치합니다.
```bash
cd /path/to/your/unity/project/Build/iOS
```
2. **Podfile 생성**:
해당 디렉터리에 Podfile을 생성합니다. 이 파일은 CocoaPods 종속성을 정의합니다.
```bash
touch Podfile
```
3. **Podfile 편집**:
생성한 Podfile을 텍스트 편집기로 엽니다. 이 예제에서는 Google Mobile Ads SDK를 추가합니다.
```ruby
platform :ios, '12.0'
use_frameworks!
target 'Unity-iPhone' do
pod 'Google-Mobile-Ads-SDK'
end
```
**주의**: `target 'Unity-iPhone'`은 Unity가 생성한 Xcode 프로젝트의 기본 타겟 이름입니다. 프로젝트 설정에 따라 타겟 이름이 다를 수 있으므로 확인이 필요합니다.
4. **Pod Install 실행**:
터미널에서 `pod install` 명령을 실행하여 정의된 종속성을 설치합니다.
```bash
pod install
```
5. **Workspace 열기**:
`pod install`이 완료되면, `.xcworkspace` 파일이 생성됩니다. 이제부터는 `.xcodeproj` 파일 대신 `.xcworkspace` 파일을 사용하여 Xcode에서 프로젝트를 엽니다. 이는 CocoaPods 종속성 관리가 올바르게 이루어지도록 하기 위함입니다.
```bash
open Unity-iPhone.xcworkspace
```
### 요약
1. Unity에서 생성된 Xcode 프로젝트가 위치한 디렉터리로 이동합니다.
2. Podfile을 생성하고 편집하여 필요한 CocoaPods 종속성을 정의합니다.
3. `pod install`을 실행하여 종속성을 설치합니다.
4. `.xcworkspace` 파일을 사용하여 Xcode에서 프로젝트를 엽니다.
이 과정을 따라 진행하면 Unity 프로젝트에 필요한 CocoaPods 종속성을 올바르게 추가할 수 있습니다.
+++++++++++++++
24_7_20
19일에 위의 내용을 참고해서 다시 새로운 빌드를 빌드했는데,
이때에 pod file에
target 'Unity-iPhone' do 밑에
pod 'Google-Mobile-Ads-SDK'
를 넣을 필요가 없다
유니티를 통해서 애드몹 광고를 띄우는 것은
'UnityFramework' 상에서만 해당 기능을 사용하는 것이기 때문에 그 위에서 첨부되어 있는 영역이면 충분하다.
윈도우 상의 유니티에서 ios 빌드를 하고, 해당 폴더를 클라우드로 옮기던지 혹은 mac os 디바이스로 옮겨서
프로젝트 내에서 pod install 을 실행한뒤 .xcworkspace 파일을 만들어내고, 해당 파일을 열어서 xcode 를 통해 프로젝트들 아카이브 하면 된다.
'Unity' 카테고리의 다른 글
Setting up AdMob App Privacy Labels in App Store (0) | 2024.06.06 |
---|---|
Semantic versioning ( Software 버전 관리 규칙) 을 이용한 App versioning (0) | 2024.06.05 |
Unity AppStore 업로드를 위한 참고 영상. (0) | 2024.06.02 |
Unity Build 시에 최소 Target API 확인하는 방법. (0) | 2024.05.26 |
유니티 에디터에서 스크린샷 찍는 방법. Recorder 라는 패키지 활용 (0) | 2024.05.25 |