Hot Reload 아시나요? feat.Xcode

Reswo._.·2023년 6월 28일

라이브러리

목록 보기
1/1
post-thumbnail

Hot Reload란 무엇일까?

Flutter?

Native Develop

일반적인 Native 개발 환경 (ex - Android Studio, Xcode 등) 에서는 개발을 진행하며 결과물을 보기 위해 프로젝트를 빌드시켜야하는 치명적인 단점이 있다.
물론 프리뷰도 있지만.. 프로젝트에 부담이 갈 수 있다.

Flutter

이런 부분을 정확히 알고 있는 Flutter에서 굉장히 장점으로 내세우는 기능이 바로 Hot Reload입니다.

Hot Reload를 활용하면 변경 사항을 즉각적으로 확인할 수 있으며 코드의 변경 및 확인 사이클이 매우 짧아지게 되어 빠른 시도, 빠른 피드백이 가능하게 됩니다.


Xcode에서 사용하려면?

InjectionIII

다운로드

AppStore

Github

Flutter에서 사용하는 이 Hot Reload 를 사용하려면! 일단 이 AppStore, 혹은 Github로 들어가 다운받아줘야한다.

⚠️ Inject를 사용하려면 Xcode의 경로가 /Applications/Xcode.app 이어야 합니다!

실행

다운로드한 injectionIII를 실행시키면

이와같이 탭바에 추가될 것이다. 그렇다면 이제 Xcode를 만져주면 된다.

Xcode

만약 본인이 SPM을 사용한다면 이렇게 추가해주면된다.

물론 cocoa pod도 가능하겠지만.. 나는 사용하지 않으니 생략하겠다.

Targets/(ProjectName)/Build Setting/Other Linker Flags
이 위치로 들어가서
-Xlinker -interposable
를 넣어준다

Tuist

["OTHER_LDFLAGS": "-Xlinker -interposable"] 를 추가해주면 됨

이제 거의 다 왔다.

연동

일단 아까 봤던 탭바 속 InjectionIII에 들어가 Remote Control/Start Server 를 해주고

UIKit

UIKit 같은 경우에는 SceneDelegate

let viewController = Inject.ViewControllerHost(ViewController()) 
rootViewController.pushViewController(viewController, animated: true)

작성 해주고 실행했을 경우

💉 InjectionIII connected /Users/Philip/Desktop/Inject-Practice/InjectPractice.xcworkspace
💉 Watching files under /Users/Philip/Desktop/Inject-Practice

이렇게 뜨면 성공적으로 연동이 된 것이다.

SwiftUI

SwiftUI도 비슷한데,

import Inject

struct ContentView: View {
    @ObservedObject private var iO = Inject.observer  ✅ ///안해주면 감지 못함
    var body: some View {
        Text("Hello, world!")
            .padding()
            .enableInjection()  ✅
    }
}

이렇게 해주먼 된다.

똑같이

💉 InjectionIII connected /Users/Philip/Desktop/Inject-Practice/InjectPractice.xcworkspace
💉 Watching files under /Users/Philip/Desktop/Inject-Practice

로그 확인해주면 끝!

실행 결과

UIKit

SwiftUI

참고

이 분 글 많이 참고 했습니당

6개의 댓글

comment-user-thumbnail
2023년 6월 28일

글 잘 읽었습니다!
혹시 안드로이드에서도 사용이 가능할까요??

1개의 답글
comment-user-thumbnail
2023년 6월 29일

완전 유익한 내용이네요 😀 앞으로 자주 사용해 보겠습니다!

1개의 답글
comment-user-thumbnail
2024년 3월 29일

플러터에서는 AOT와 JIT 컴파일러를 지원합니다.
AOT는 ahead of time의 줄임말로 실행 전에 전체 코드를 컴파일하는 방식,
JIT는 just in time의 줄임말로 런타임에 컴파일하는 방식입니다.
핫 리로드 기능은 JIT를 이용해 런타임에도 변경된 코드의 컴파일이 가능해서 리빌드하지 않고 빠른 개발 속도를 보장받을수 있는데, 혹시 네이티브 개발 환경에서도 이러한 JIT 컴파일러를 지원하는지..가 궁금합니다!

1개의 답글