
프로젝트를 하던 중, 프로젝트를 GIT에 public으로 변경 하려고 한다. 그런데 한가지 걸리는 점이 있었다. 혼자 작업을 하는 프로젝트 였기 때문에 키를 공개 하고 비공개 하는 작업이 필요 없었지만, 공개로 변경 하게 된다면 키를 숨겨야 하기 때문이다. 이 글은 .xcconfig 파일을 통해 키를 숨기는 방법을 정리 한 글이다. 이 방법은 이미 기존에 있는 파일을 숨기는 방법이기 때문에 새로 만든다면 방법이 조금 다를 수 있다.
제일 먼저 이 파일을 생성 한다.

이 파일 안에는 키를 저장 할 것이다. 기존엔 코드 영역에 넣었는데 그걸 이 파일에 따로 모아서 사용 한다는 방법이다.
그 후에 이 파일 안에 키를 넣어준다

그리곤 그 안에 이렇게 키를 넣어준다
(참고로 나는 여기서 "123" 이렇게 String 값을 넣어서 문제가 생겼는데 따로 나중에 ""이걸 빼는게 아니라면 그냥 키만 넣는다. "" 까지 읽어서 키 값으로 사용 하기 때문이다.)
좋다 이제 이제 우린 키를 직접적으로 사용 하는게 아니고 API_KEY라는 이름을 사용 할 것이다. 사용을 하기 위해서 plist를 건드려보자. 컴퓨터에게 "앞으로 이 키를 사용 할거야~" 라고 알려주는 단계이다.

이렇게 PROJECT 부분에서 파일을 선택해서 넣어준다. 이러면 그 파일을 읽을 수 있다.
그 후에 그 파일 안에 있는걸 사용 해야 하지 않겠는가.

plist에서 아까 만든 키 값 대신 사용 할 이름을 넣어서 그 파일의 값을 읽으라고 명령 하면 된다.
그리고 키를 사용 하는 코드 영역에선
private var apiKey: String {
guard let apiKey = Bundle.main.object(forInfoDictionaryKey: "API_KEY") as? String else {
fatalError("API_KEY not found in Info.plist")
}
return apiKey
}
이런 식으로 사용을 한다.
앞서 말한 것 처럼 나는 이미 비공개로 GIT에 올려서 작업 중 이였다. 그렇기 때문에 git ignore에 현재 만든 파일을 추가 해야 한다.

이렇게 추가를 했다. 하지만 소스트리가 계속 이 파일을 추적 하는게 아니겠는가? 알아보니 이미 추가한 파일은 따로 추가를 중지 해야 한다는 것이였다.
git rm --cached -f Secrets.xcconfig
이 명령어를 통해서 강제로 git 추적에서 중지 시킨다. 그러면 더 이상 그 파일을 추적 하지 않을 것이고, git에도 올라가지 않을 것이다.
그 후에 잘 적용 되었는지 상태를 확인 한다. 변경 사항을 확인하기 위해
git status
명령을 실행한다. Secrets.xcconfig 파일이 추가 되었을 것 이다.그 후에 변경 사항을 저장 한다. 그러면 무사히 변경 사항이 푸쉬 되고 이젠 더 이상 그 파일을 추적 하지 않을 것이다.
git commit -m "Remove Secrets.xcconfig from tracking"
git push
하지만 이미 올라간 커밋 내역에 있는 코드를 어떻게 지울 건지는 고민을 좀 해봐야 겠다. 커밋 내역을 지우자니 현재 파일도 삭제 되는 것 같았다. 브랜치를 옮겨서 똑같이 복사하고 그걸 다시 master에 옮겨야 하나...? 암튼 고민을 더 해봐야 겠다.