728x90
반응형

 

저축은행 업무를 하면서 많은 솔루션을 사용합니다.

 

정말로 앱 하나에 10개 이상은 들어가는것 같습니다.

 

이게 앱을 만드는건지 솔루션을 합치는건지 모를정도로 다양한 솔루션을 사용합니다.

 

 

 

 

어느 기업의 솔루션을 받아서 사용하는데 개발사는 하청 업체가 진행하는것이 다반사 입니다.

 

같은 업체의 솔루션이지만 다른 하청업체에서 개발하기 때문에 서로 충돌도 많이 생기는데요.

 

이번경우는 다른 기능이지만 같은 기능들이 많아서 충돌이 되는 문제였습니다.

 

 

 

 

xcode 빌드시 아래처럼 중복된 코드들이 있다는 오류가 보여지고 있었습니다.

 

같은 회사 솔루션인데 왜 이렇게 만드는지는 모르겠으나.. 병합 처리를 해서 사용하려고 합니다.

duplicate symbol '_OBJC_CLASS_$_xxxxxx' in:
	/Users/gigas/Documents/IOS/xxxx/a.a (c.o)
    /Users/gigas/Documents/IOS/xxxx/b.a (c.o)

 

 

 

libtool 프로그래밍 도구를 통해 병합을 진행합니다.

 

Libtool은 GNU 빌드 시스템에서 나온 GNU 프로그래밍 도구이며 포터블 라이브러리를 만드는 사용합니다.

 

www.gnu.org/software/libtool/

 

Libtool - GNU Project - Free Software Foundation

GNU Libtool - The GNU Portable Library Tool GNU Libtool is a generic library support script that hides the complexity of using shared libraries behind a consistent, portable interface. To use Libtool, add the new generic library building commands to your

www.gnu.org

 

 

 

 

a.a, b.a 파일을 한곳에 모아두고 해당 경로로 들어가서 아래와 같은 명령어를 입력하면 됩니다.

 

a.a 파일과 b.a 파일을 병합하여 merge.a 라는 파일로 만들어 줍니다.

libtool -static -o ./merge.a ./a.a ./b.a 

 

 

 

 

이렇게 생성된 merge.a 라이브러리 파일을 사용하니 문제 없이 빌드가 잘 되었습니다.

 

libtool에 많은 옵션들이 있지만 단순 병합하는 용도로 설명을 하였습니다.

 

728x90
반응형
728x90
반응형

 

xcode 프로그램을 사용하여 ios앱 개발을 진행하고 있습니다.

 

WKWebView를 사용하면서 부터 아래와 같은 로그가 미친듯이 쌓이는걸 확인했습니다.

2020-01-29 10:44:43.888094+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.888500+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.902618+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.902855+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.922252+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.922653+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.937681+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.938035+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.952512+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.952803+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.971390+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.971738+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.987230+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:43.987671+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.002040+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.002279+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.028231+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.028484+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.045407+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.045611+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.051319+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.051555+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.067757+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.067934+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.085097+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.085338+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.103037+0900 ... [Process] kill() returned unexpected error 1
2020-01-29 10:44:44.103237+0900 ... [Process] kill() returned unexpected error 1

 

 

 

해당 오류는 WebKit or OS 버그라고 하는데 iOS 13.2 버전에는 아직 해결되지 않았다고 합니다.

 

해결되지는 않았지만 엄청나게 생기는 Log 를 보기 싫으니 안보이게 처리해보겠습니다.

 

https://bugs.webkit.org/show_bug.cgi?id=202173

 

202173 – [iOS] Regression(r249703) frequent 'kill() returned unexpected error' log messages

Patch no flags Details | Formatted Diff | Diff

bugs.webkit.org

https://www.mail-archive.com/webkit-changes@lists.webkit.org/msg146193.html

 

[webkit-changes] [250329] trunk/Source/WebKit

Title: [250329] trunk/Source/WebKit Revision 250329 Author cdu...@apple.com Date 2019-09-24 18:56:50 -0700 (Tue, 24 Sep 2019) Log Message [iOS] Regression(r249703) frequent 'kill() returned unexpected error' log messages https://bugs.webkit.org/show_bug.cg

www.mail-archive.com

 

 

1. Product > Scheme > Edit Scheme

Edit Scheme 목록을 선택합니다.

 

 

 

 

2. Environment Variables 에 OS_ACTIVITY_MODE 변수를 추가 합니다.

Xcode 8.0 릴리스에서도 작동하는 솔루션입니다.

 

시스템 로그를 출력 안하도록 하는 설정입니다.

 

 

 

 

불필요한 로그를 보기 싫으시다면 위와같은 설정으로 처리 할 수 있습니다.

 

하지만 정작 봐야할 로그가 보이지 않을 경우가 있을수 있으니 원하시는 설정을 하시기 바랍니다.

 

728x90
반응형

'프로그래밍 > iOS' 카테고리의 다른 글

[XCode] ENABLE_BITCODE  (2) 2020.08.26
[Apple] 던스 번호(D-U-N-S Number) 받기  (0) 2020.07.03
[Swift5] Base64 Encode Url Safe  (0) 2020.01.14
[XCode] Cocoapod Build Error  (0) 2019.12.20
[XCode 11] iOS 13 다크모드 해제  (0) 2019.12.09
728x90
반응형

형상관리를 하지만 IOS를 개발할때 파일의 충돌이 잘 발생합니다.

 

git ignore 설정을 하지 않는다면 다른 팀원과 소스 관리가 거의 불가능할 것입니다.

 

그럼에도 불구하고 Cocoapod 관련해서 오류가 발생한다면 재설치를 진행해야 정상 Build 가 됩니다.

 

 

 

 

터미널로 프로젝트 경로에 진입합니다.

 

Podfile. xcworkspace, Pods 폴더를 삭제하고 pod을 재설치 합니다.

sudo rm Podfile.lock 
sudo rm -r [프로젝트명].xcworkspace 
sudo rm -r Pods 
pod install

 

 

 

 

Proejct Clean 이나 Build 를 해서 되지 않는다면 위와 같은 방법으로 진행하시는걸 추천드립니다.

 

728x90
반응형
728x90
반응형

 

iOS 13 버전이 되면서 다크모드가 새롭게 추가되었습니다.

 

하지만 개발자에게는 앱 유지보수를 해야하는데 정보를 몰라서 곤경에 처하곤 합니다.

 

간단하게 다크모드 옵션을 해제하는 방법을 알아보겠습니다.

 

 

Info.plist

Xcode에서 info.plist 에서 아래와 같이 값을 추가 합니다.

 

 

 

Source Code는 아래와 같습니다.

<key>UIUserInterfaceStyle</key>
<string>Light</string>

 

 

 

 

AppDelegate

overrideUserInterfaceStyle앱의 window변수 에 대해 설정할 수 있습니다 .

 

프로젝트 생성 방법에 따라 AppDelegate파일 또는 SceneDelegate에 있을 수 있습니다.

if #available(iOS 13.0, *) {
    window?.overrideUserInterfaceStyle = .light
}

 

 

 

UIViewController

UIViewController를 개별적으로 선택 해제하려면 아래와 같이 viewDidLoad 메서드안에 작성할 수 있습니다.

override func viewDidLoad() {
    super.viewDidLoad()
    // overrideUserInterfaceStyle is available with iOS 13
    if #available(iOS 13.0, *) {
        // Always adopt a light interface style.
        overrideUserInterfaceStyle = .light
    }
}
728x90
반응형

'프로그래밍 > iOS' 카테고리의 다른 글

[Swift5] Base64 Encode Url Safe  (0) 2020.01.14
[XCode] Cocoapod Build Error  (0) 2019.12.20
Swift 4 UIAlertController  (0) 2019.03.05
Swift 4 TableView Section  (0) 2019.03.04
Swift 4 UIRefreshControl  (0) 2019.03.04

+ Recent posts