이번에 프로젝트에 OpenVPN으로 NEPacketTunnelProvider을 Target으로 프레임워크를 생성하여 작업이 필요하게 되었습니다.
작업 도중 필요로한 Library Import 선언한 순간 "No such module" 에러가 발생 하였습니다.
혼자 개발 중이라.. 한참을 해매다보니.. 나중에 까먹지 말자고 정리하였습니다.
1. Target > Network Extension 추가
2. NetworkExtension 선택
- NetwrokExtension은 VPN 터널을 구성할 수 있는 프레임워크 입니다.
3. 필요한 PacketTunnelProvider 선택
- VPN 패킷을 주고 받을 수 있게(Read/Write) PacketTunnelProvider에서 구현을 도와줍니다.
4. PacketTunnelProvider 만든 후 'RxSwift' Library 추가 > Error 발생
해당 오류가 발생 시 왜? 안되는지 몰랐습니다. 그래서 오류 내용 그대로 구글링하였습니다.
결과는... 이상한 방향으로 흘러갑니다.... 저 멀리 바다로....
그래서 다시 한번 리마인드해보았습니다. Module를 못 찾는다고 하니깐 그럼 Podfile에 뭔가 수정을 해줘야 하는게 아닌가라고 말이죠.
* 생각 결과
- 지금까지 만든것이 Target으로 NetworkExtension 프레임워크를 만든 것이고 그 프레임워크에서 라이브러리를 추가해줘야하기 때문에 Podfile에 target을 추가하여 사용할 library를 추가하면 되겠구나 생각이 들었습니다.
* Podfile target "PacketTunnelProvider" 추가
target 'OpenVPNSample' do
use_frameworks!
pod 'RxSwift'
pod 'RxCocoa'
target 'PacketTunnelProvider' do
pod 'RxSwift'
pod 'RxCocoa'
end
end
- nano Podfile
- pod install
* 결과
- "No such module" 에러는 없어지고, 정상적으로 Module 사용을 하였습니다.
* 마무리
- 삽질했던 이유를 3가지로 정리해봤습니다.
1. Build Configuration의 정릐를 제대로 확인 못함
2. Target 이란 개념 몰랐음
3. Target을 통해 NetworkExtension 생성하는게 프레임워크라는 것을 몰랐음
- 이런 이유로 삽질을 했었습니다.
이후, 해당 내용에 대해 정리해보는 글도 올려야 겠습니다.
'iOS' 카테고리의 다른 글
[Basic] UIKit 이란? (0) | 2021.07.26 |
---|---|
[Basic] Foundation 이란? (0) | 2021.07.26 |
[ iOS ] Https 통신을 위한 Alamofire 적용기 (0) | 2021.07.13 |