2024 년 07월 01일
- 소장 -
iOS 웹뷰 로 개발된 앱.. 이거.. iOS 배포 가능할까요?
관련 계정은 다 있어요..
기존에 iOS 서비스를 하고 있는 업체인데..
처음 개발 후 한번 배포한 것이 현재 상황임.
보안 관련 오류 건을 수정하고..배포할 내부 개발자가 없어서..
저희가 할 수 있는지 확 인 중입니다
- 전임 -
페이지를 보여주는 웹뷰로, Firebase와 연동하여 푸시알림 기능이 있는 것 같습니다. 그 외에는 로딩중 스플래시 이미지를 띄우는 기능, 커스텀 알럿 기능 등이 있는 것 같습니다.
- 소장 -
그렇죠.. 기능은 얼마없을꺼요.. 이놈이 뭐.. 보안에 문제가 있다고 해서.. 일부 수정할 꺼고.. 그런 후 배포를 하려는데.. 할 수 있을까요?
위와 같이 처음 대화가 이루어졌다.
해당 소스코드를 내가 직접 파악을하고
개발 범위를 가늠한 뒤
소장님께 개발 범위를 특정하고
7월 5일 까지 해당 개발 부분의 외부인력 투입 여부를 결정해야한다.
iOS simulator 17.5 설치 후 코드 테스트
iOS 소스 코드를 확인하고 실행해보니
에러가 많이 발생한다. 버전 문제도 있고 firbase 및 다양한 부분에서 에러가 발생한다.
https://formestory.tistory.com/8
* 참고자료
https://wood-fxrest.tistory.com/117
* 참고자료
< 문제를 해결 하는 방법을 기술 >
1. The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 11.0, but the range of supported deployment target versions is 12.0 to 17.5.99.
버전 문제 이 부분을 잘 세팅해줘야 한다.
나의 경우는 최종적오르 13.0 버전으로 변경해 줬다 . -> 디자인 영역까지 최적화 하기 위해
우선 프로젝트 Kokkan 파란이모티콘 있는 부분을 클릭하면 이와 같은 설정 화면을 볼 수 있다.
general 에서 Minimum Deplyments 가 뭐로 되어있는지 봐야한다
기존에는 11.0으로 세팅된 프로젝트인데 Xcode 가 업데이트 되면서 해당 버전을 실행이 안된다.
그래서 프로젝트의 버전을 올려준다고 생각하면된다.
Targets 항목에 보면
Test , UITests 해당 부분
해당 부분 Deployment info 세팅도 동일하게 한다.
Pod 도 동일하게 환경 셋팅을 13.0 으로 맞춰 준다 .
한번에 하는 방법이 있는지 모르겠지만 targets 들을 일일이 들어가서 변경해주었다.
< 아래는 claud 에게 확인한 답변 >
이 오류 메시지는 프로젝트의 iOS 배포 대상(Deployment Target) 설정과 관련된 문제를 나타냅니다. 구체적으로 설명하면:
- 문제 원인:
- 현재 프로젝트의 iOS 배포 대상이 iOS 11.0으로 설정되어 있습니다.
- 하지만 현재 사용 중인 Xcode 버전에서 지원하는 iOS 배포 대상 범위는 iOS 12.0부터 17.5.99까지입니다.
- 이 문제가 발생하는 이유:
- Xcode가 업데이트되면서 지원하는 iOS 버전 범위가 변경되었을 수 있습니다.
- 오래된 프로젝트를 새로운 Xcode 버전으로 열었을 때 흔히 발생합니다.
해결 방법:
- Xcode에서 프로젝트 설정 열기:
- 프로젝트 네비게이터에서 프로젝트 파일(Kokkan.xcodeproj)을 선택합니다.
- 배포 대상 업데이트:
- 'General' 탭으로 이동합니다.
- 'Deployment Info' 섹션에서 'iOS Deployment Target'을 찾습니다.
- 이를 최소 iOS 12.0 이상으로 변경합니다. (예: 12.0 또는 그 이상)
- 모든 타겟 확인:
- 프로젝트에 여러 타겟이 있다면, 각 타겟에 대해 위 과정을 반복합니다.
- 팟파일(Podfile) 업데이트 (CocoaPods 사용 시):
- 프로젝트에서 CocoaPods를 사용하고 있다면, Podfile을 열고 platform :ios 줄을 찾아 버전을 업데이트합니다.
- 예: platform :ios, '12.0'
- 프로젝트 재빌드:
- 변경 사항을 저장하고 프로젝트를 다시 빌드합니다.
주의사항:
- 배포 대상을 높이면 이전 iOS 버전을 사용하는 기기에서 앱을 실행할 수 없게 될 수 있습니다.
- 앱의 요구사항과 대상 사용자층을 고려하여 적절한 배포 대상을 선택하세요.
이과정을 다 진행해야 합니다.
Podfile 도 중요합니다.
# Uncomment the next line to define a global platform for your project
platform :ios, '13.0'
# 여기에 use_modular_headers! 추가
use_modular_headers!
target 'Kokkan' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Firebase 코어 및 필요한 기능들을 명시적으로 추가
pod 'Firebase/Core'
pod 'Firebase/Analytics'
pod 'Firebase/Messaging'
pod 'Firebase/Installations' # InstanceID 대신 사용
# 기타 필요한 Firebase 서비스들을 여기에 추가할 수 있습니다.
# Nanopb 추가 및 버전 지정
pod 'nanopb', '2.30909.0', :modular_headers => true
# Pods for Kokkan
target 'KokkanTests' do
inherit! :search_paths
# Pods for testing
end
target 'KokkanUITests' do
# Pods for testing
end
end
이와 같이 작성해줬습니다.
환경을 13.0 으로 맞춰 줬습니다.
해당 파일을 수정했다면 꼭 Pod install 을 해줘야합니다.
2.
Logging Error: Failed to initialize logging system. Log messages may be missing. If this issue persists, try setting IDEPreferLogStreaming=YES in the active scheme actions environment variables. 에러
이 오류는 Xcode의 로깅 시스템 초기화에 실패했다는 것을 나타냅니다. 이 문제를 해결하기 위해 다음 단계들을 시도해 볼 수 있습니다:
- IDEPreferLogStreaming 환경 변수 설정:
- Xcode에서 프로젝트를 엽니다.
- 상단 메뉴에서 "Product" > "Scheme" > "Edit Scheme"를 선택합니다.
- 왼쪽 사이드바에서 "Run"을 선택합니다.
- "Arguments" 탭을 클릭합니다.
- "Environment Variables" 섹션에서 "+" 버튼을 클릭합니다.
- Name에 "IDEPreferLogStreaming", Value에 "YES"를 입력합니다.
- "Close" 버튼을 클릭하여 저장합니다.
- Xcode 재시작:
- Xcode를 완전히 종료하고 다시 실행합니다.
- 파생 데이터(Derived Data) 삭제:
- Xcode를 종료합니다.
- Finder에서 ~/Library/Developer/Xcode/DerivedData 폴더로 이동합니다.
- 이 폴더의 내용을 모두 삭제합니다.
- Xcode를 다시 실행합니다.
- Xcode 캐시 정리:
- 터미널을 열고 다음 명령어를 실행합니다:
-
rm -rf ~/Library/Developer/Xcode/DerivedData rm -rf ~/Library/Caches/com.apple.dt.Xcode
-
- Xcode를 다시 실행합니다.
- Xcode 업데이트:
- App Store에서 Xcode를 최신 버전으로 업데이트합니다.
- macOS 업데이트:
- 운영 체제를 최신 버전으로 업데이트합니다.
- 프로젝트 설정 확인:
- 프로젝트의 빌드 설정에서 로깅 관련 옵션을 확인하고 필요한 경우 조정합니다.
이와 같이 해당 부분을 세팅하였습니다.
3.
double-quoted include "pb.h" in framework header, expected angle-bracketed instead
해당 에러도 상당한 골치꺼리였는데 설정 코드 하나로 해결 할 수 있었습니다.
이러한 경고들은 주로 프레임워크 헤더에서 다른 헤더 파일을 포함할 때 발생하는 문제입니다. 이를 해결하기 위한 여러 방법이 있습니다:
- 전역 설정으로 경고 무시: 이전에 제안한 방법을 확장하여 모든 이런 종류의 경고를 무시할 수 있습니다. Xcode에서:
- 프로젝트 설정으로 이동
- 'Build Settings' 탭 선택
- "Other Warning Flags"를 찾아 다음 플래그 추가:
-
-Wno-quoted-include-in-framework-header
-
- Podfile 수정: Podfile에 다음 내용을 추가하여 특정 Pod에 대해 모듈러 헤더를 사용하도록 설정할 수 있습니다:
pod 'GoogleDataTransport', :modular_headers => true pod 'FirebaseMessaging', :modular_headers => trueuse_modular_headers!
- Post Install 스크립트 추가: Podfile의 끝에 다음과 같은 post_install 스크립트를 추가하여 모든 targets의 경고 설정을 수정할 수 있습니다:
rubyCopypost_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['GCC_WARN_INHIBIT_ALL_WARNINGS'] = 'YES' config.build_settings['OTHER_CFLAGS'] ||= ['-Wno-quoted-include-in-framework-header'] end end end
- 수동으로 헤더 파일 수정 (권장하지 않음): 마지막 방법으로, 문제가 되는 헤더 파일을 직접 수정할 수 있습니다. 하지만 이 방법은 Pod 업데이트 시 변경사항이 사라질 수 있어 권장되지 않습니다. 예를 들어, GDTCOREndpoints.h 파일에서:
cCopy#include "GDTCORTargets.h"cCopy#include <GDTCORTargets.h>
실행 순서:
- Podfile을 수정합니다.
- 터미널에서 프로젝트 디렉토리로 이동합니다.
- 다음 명령어를 실행합니다:
Copypod deintegrate pod install
- Xcode에서 프로젝트를 다시 열고 빌드합니다.
* 중요 *
use_modular_headers!
저는 해당 코드를 Podfile 에 추가 하여 일괄 적용하여 해당 에러를 해결 했습니다.
4.
No such module 'FirebaseInstanceID' 에러
해당 부분은 버전 문제인것으로 확인됩니다.
Podfile 을 최신화 해주면 됩니다.
이 오류는 'FirebaseInstanceID' 모듈을 찾을 수 없다는 것을 나타냅니다. 이를 해결하기 위해 다음 단계를 따르세요:
- Firebase SDK 업데이트: FirebaseInstanceID는 더 이상 사용되지 않을 수 있습니다. 최신 Firebase SDK에서는 FirebaseInstallations로 대체되었습니다. Podfile을 열고 Firebase 관련 pod을 최신 버전으로 업데이트하세요:
pod 'Firebase/Analytics' pod 'Firebase/Messaging'
- Pod 업데이트: 터미널에서 프로젝트 디렉토리로 이동한 후 다음 명령어를 실행하세요:
pod update
- 코드 수정: AppDelegate.swift 파일에서 import 문을 수정하세요:
// 이 줄을 제거하거나 주석 처리하세요 // import FirebaseInstanceID // 대신 이 줄을 추가하세요 (필요한 경우) import FirebaseInstallations
- 프로젝트 정리: Xcode에서 Product > Clean Build Folder를 선택한 후 프로젝트를 다시 빌드하세요.
- Xcode 재시작: 문제가 지속된다면 Xcode를 완전히 종료하고 다시 시작해보세요.
- Firebase 초기화 코드 확인: AppDelegate에서 Firebase 초기화 코드가 올바르게 설정되어 있는지 확인하세요:
FirebaseApp.configure()
- 프로젝트 설정 확인: 프로젝트의 Build Phases > Link Binary With Libraries에 필요한 Firebase 프레임워크가 모두 포함되어 있는지 확인하세요.
5.Sandbox: rsync.samba(35397) deny(1) file-write-create 에러
프로젝트 파일 → Build Settings → Build Options → User Script Sandboxing
해당 부분 수정해주면 됩니다 .
///////////////////////////////////
해야하는 일
////////////////////////////////////
ios
옛날 소스
보안 정책
대응 못해서
기능 추가는 아님
보안 정책 수정 해야하는지 보안 정책 수정했으면 어떻게 배포를 하는지에
sm 7월 말 -> 할 수 있다 없다 해당 부분 알려주는 것이 중요
어떻게 어떻게
보안 이슈는 어떻게 확인 ????
-> 어떻게 적용하고 배포하는지
-> 전문가의 손길이 있어야하는지 ?
최초 배포자 ? -> 최초 만들어준 업체 -> 연락 -> 배포 하냐고
'App Dev > iOS' 카테고리의 다른 글
iOS SwiftUI @Binding으로 View 끼리 데이터 공유 (0) | 2023.05.24 |
---|---|
iOS Swift 클래스 vs 스트럭트 Class vs Struct 어떤걸 써야하나 (0) | 2023.05.23 |
iOS Swift 조건문 삼항 연산자 기초문법 사용법 (1) | 2023.05.17 |
SwiftUI 개발 macOS 환경설정 및 Image HStack VStack padding 기초문법 활용해보자 ! (2) | 2023.05.04 |
iOS Swift 함수 매개변수 사용 방법 ( 변수명 변경, 생략) (0) | 2023.04.03 |
iOS Swift <T> Generic 제네릭 사용법 (0) | 2023.03.28 |