전체 글 32

ITMS-91053: Missing API declaration 해결

언제부턴가 AppStore(앱스토어)나 TestFlight(테스트플라이트)에 앱을 업로드하면 다음과 같은 메일을 받게 됩니다. 개인정보 보호 매니페스트 파일에 이유를 설명하지 않고 필수 이유 API를 사용하는 앱을 App Store Connect에 업로드하는 경우, Apple은 앱의 개인정보 매니페스트에 이유를 추가하라고 알리는 이메일을 사용자에게 보냅니다. 2024년 5월 1일부터 개인 정보 매니페스트 파일에 필수 이유 API 사용을 설명하지 않는 앱은 App Store Connect에서 허용되지 않습니다. 이슈 안내 원문 메시지 We noticed one or more issues with a recent submission for App Store review for the following app..

pb_check_proto3_default_value + 342

iOS 17.4 버전을 사용하는 아이폰 기기에서 디버그 빌드로 테스트 할때는 문제가 없었는데 릴리즈 빌드 버전에서만 앱이 시작하자마자 꺼지는 오류가 발생했다. 테스트 기기에서 자동으로 생성해준 오류 로그를 보니 다음과 같은 오류였다. Crashed: com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x00000001736eb51c pb_check_proto3_default_value + 342 검색해보니 파이어베이스 라이브러리 내부 버그였고 10.22.0 이상의 버전으로 업데이트 해주니 이슈가 해결되었다. 해결방법: Firebase SPM 10.0.0 -> 10.22.1 로 변경 후 해결 Pod을 사용하는 경우에는 버전을 명시적으로 추가하거나 po..

Invalid MinimumOSVersion. Apps that only support 64-bit devices must specify a deployment target of 8.0 or later.

XCode 15.3 업데이트 이후 Archive 한 파일을 AppStore Connect 로 배포하려고 할 때 발생한 오류이다. 오류 원인은 프로젝트에서 사용중인 Firebase 모듈이 가지고 있는데 plist에 MinimumOSVersion 정보가 누락되어 발생하는 것으로 추정된다. 아마도 기존에는 3rdParty 모듈 내부의 MinimumOSVersion 까지 체크하지는 않았으나 최근에 체크하도록 변경이 있었나보다. 기존에 Firebase 모듈을 사용할 때 SPM에 v10.0.0을 사용중이었는데 10.22.1 에서는 해당 문제가 해결된것으로 확인되어 다음과 같이 수정했더니 AppStore Connect에 업로드가 정상적으로 된 것으로 확인하였다. Firebase 10.0.0 -> 10.22.1 Coc..

하이브리드앱(iOS-Javascript) 간 인터페이스 방법

iOS WKWebView에서 Local/Remote 환경에 있는 Javascript와 인터페이스 하는 방식에 대해 간략히 살펴보겠습니다. 유사한 내용을 정리한 글은 찾아보면 많이 있지만 대부분 한 쪽 측면(웹 또는 네이티브)으로 작성되어 있다보니 웹 프론트 사이드에서 해야 할 일, 네이티브 사이드에서 해야 할 일을 분명하게 명시해서 어떤 지점에서 인터페이스 규약을 서로 맞춰야 하는지에 대한 관점을 우선으로 정리해봤습니다. iOS > Javascript iOS에서 Javascript 소스를 호출하는 방법은 3가지 방식이 있습니다. 웹프론트가 어떤 방식으로 개발됐는지에 따라 적용 가능한 방법이 다를 수 있으니 유의해주세요. 방법1 React.js, Vue.js와 같이 컴포넌트 기반의 SPA 방식으로 개발..

하이브리드앱(Android-Javascript) 간 인터페이스 방법

Android WebView에서 Local/Remote 환경에 있는 Javascript와 인터페이스 하는 방식에 대해 간략히 살펴보겠습니다. 유사한 내용을 정리한 글은 찾아보면 많이 있지만 대부분 한 쪽 측면(웹 또는 네이티브)으로 작성되어 있다보니 웹 프론트 사이드에서 해야 할 일, 네이티브 사이드에서 해야 할 일을 분명하게 명시해서 어떤 지점에서 인터페이스 규약을 서로 맞춰야 하는지에 대한 관점을 우선으로 정리해봤습니다. Android > Javascript 안드로이드에서 Javascript 소스를 호출하는 방법은 두가지 방식이 있습니다. 웹프론트가 어떤 방식으로 개발됐는지에 따라 적용 가능한 방법이 다를 수 있으니 유의해주세요. 방법1 React.js, Vue.js와 같이 컴포넌트 기반의 SPA..

importcert를 이용해사용중인 자바 버전에 인증기관 정보 업데이트 하기

앞선 글에서는 Java cacert 관련 이슈에 대해 설명 했고, 본 글에서는 해당 이슈를 해결하기 위해 현재 사용중인 자바 버전에 인증기관 정보를 업데이트 하는 방법을 안내한다. 사전준비 사항 추가하려는 루트 인증서에 대한 SSL 인증서 파일 포맷(cer, crt, pem, etc...) 파일을 보유하고 있어야 한다. 각 인증서 파일 포맷은 인증서 발급 기관에 필요한 파일 포맷으로 발급 요청하거나 "pem to cer"과 같이 구글링 하면 변경하는 방법을 쉽게 찾을 수 있으므로 변경하여 사용한다. 인증서 추가 방법 keytool -importcert -alias "별칭" -keystore %JAVA_HOME%/jre/lib/security/cacerts -file "루트인증서" 예시) keytool ..

카테고리 없음 2022.06.07

Next.js 기본 개념 정리

Overview Next.js는 React 라이브러리를 활용한 React Framework 최상의 성능을 위해 Code Splitting, Client-side Navigation, Prefetching 등을 적용하여 어플리케이션을 자동으로 최적화 시켜주는 개발 Framework - Code Splitting: 페이지에서 사용하는 모든 리소스를 한번에 불러오지 않고, 렌더링 되는 페이지에서 필요한 리소스만 로드될 수 있게 코드를 분할하는 기법 - Client-side Navigation: 브라우저에서 수행하는 Navigation 방식(전체 화면 새로고침)이 아닌 Javascript를 사용하여 페이지 전환을 빠르게 만드는 기법 - Prefetching: 현재 페이지와 연결된 페이지(Link에 포함된 라우팅..

IT/Framework 2022.06.07

모바일웹/웹앱/하이브리드앱 페이지 로딩 속도 최적화 방법

당연한 말이지만 핵심은 속도는 높이고 용량은 낮추는 것입니다. 1. 서버 응답 시간 측정 및 최소화 Google 및 GTMetrix 전문가들은 요청 후 200ms 이내에 첫번째 바이트 전송이 시작 될 것을 권장합니다. "대기시간" 또는 "첫번째 바이트까지의 시간"은 Waterfall 차트에서 첫번째 요소에 해당합니다. 서버 응답시간을 높이는 주요 세가지는 다음과 같습니다. - 웹서버 소프트웨어 또는 설정값 개선 - 웹호스팅 서비스의 품질과 범위를 향상시키고, 특히 적정한 수준의 CPU와 메모리 보장 - 웹페이지에 필요한 리소스 줄이기 2. 리디렉션 최소화 리디렉션은 웹사이트 방문자를 자동으로 다른 페이지로 안내하는 방법으로 빈번한 리디렉션 발생은 페이지 로드를 느리게 만듭니다. 특히 모바일과 같이 덜 안..

IT/Miscellaneous 2022.03.16

안드로이드 에뮬레이터 검은 화면만 나올때

Android Studio에서 에뮬레이터를 실행하다보면 간혹 검은화면에서 시간이 지나도 바뀌지 않는 경우가 발생한다. 이럴때는 당황하지 말고 실행중인 에뮬레이터를 종료한 뒤 Cold boot 시켜주면 간단히 해결된다. 1. Android Studio 상단에 있는 AVD Manager를 누르고 (또는 상단 메뉴 Tools > AVD Manager 선택) 2. 실행하려는 에뮬레이터의 우측 끝에 보면 더보기 아이콘이 있는데 그걸 누른 뒤 Cold Boot Now 를 선택해주자. 끝

MacOS STS (or eclipse) 환경에 Java Decompiler 설정하기

필자는 jad를 이용한 디컴파일이 아래와 같은 오류가 발생하면서 정상적으로 되지 않았습니다. Bad CPU type in executable : jad 좀 더 찾아보니 JD-eclipse 라는 플러그인이 있었고, 해당 디컴파일러를 설치하니 정상적으로 디컴파일이 되는 것을 확인했습니다. java-decompiler.github.io/ Java Decompiler The “Java Decompiler project” aims to develop tools in order to decompile and analyze Java 5 “byte code” and the later versions. JD-GUI is a standalone graphical utility that displays Java source..

Unhandled JS Exception: Invalid regular expression: invalid group specifier name

React Native를 이용해 개발하던 중, Android에서는 괜찮은데 iOS에서만 유독 다음과 같은 오류가 발생하며, 실행되지 않는 현상이 발생했다. 오류 문구 : Unhandled JS Exception: Invalid regular expression: invalid group specifier name no stack. 어떤 지점에서 발생하는 에러라는 정보라도 있어야 의심가는 부분을 찾아 수정해볼텐데, 어디에서 발생하는 오류라는 정보가 전혀 나오지 않아(no stack) 난감했다. 구글링을 하니 쉽게 답을 찾을 수 있었다. 원인은 iOS에 포팅된 Safari에서 지원하지 않는 lookbehind assertions 표현식(? 이슈 참고: stackoverflow.com/questions/569..

Trouble Shooting 2020.09.24

기업이 퍼블릭 클라우드로 전환해야 하는 이유

가트너에 의하면 2022년까지 전세계에서 사용중인 데이터베이스의 75%가 클라우드로 이전되거나 혹은 처음부터 클라우드 위에 구축 될 것이라는 전망을 발표했다. (https://www.gartner.com/en/newsroom/press-releases/2019-07-01-gartner-says-the-future-of-the-database-market-is-the) 그럼에도 불구하고 아직도 많은 국내 기업들은 보안, 비용 등을 이유로 퍼블릭 클라우드로의 전환을 망설이고 있다. 퍼블릭 클라우드가 좋다는 건 알겠는데 우리가 왜 퍼블릭 클라우드로 가야하는지에 대해서는 실무자가 아닌 윗선을 설득하기 어렵기 때문이다. 단지 다들 좋다 좋다 다른 곳도 그렇게 하니까 우리도 가야 하는거 아니냐는 말만으로는 C-Le..

IT/Miscellaneous 2019.12.11

Show Stopper 뜻

Show Stopper는 IT 분야에서만 사용 되는 용어는 아니다. 공연을 멈추게 만드는 박수갈채를 부르는 "명연기", "명연설" 또는 "명연주" 등을 가르키는 용어이다. 하지만 IT쪽에서 이 용어는 조금 다른 의미로 쓰인다. 어떤 소프트웨어나 솔루션 또는 서비스를 더 이상 사용할 수 없게 만드는 치명적인 결함이나 기능의 부재 등을 지칭할 때 이 용어를 사용할 수 있다.

IT/용어 & 명언 2019.12.06

Mac OS에 Java 1.6 버전 설치

오라클에서 제공하는 Java 1.6 버전은 다음 링크를 통해 다운로드가 가능하다. https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html 하지만 아무리 눈씻고 찾아봐도 페이지에는 Mac OS용 JDK 또는 JRE가 따로 제공되지 않는다. Linux 64bit를 다운 받으면 된다고들 하는데, bin 파일을 다운로드 받아 압축을 풀려고 해도 내가 사용중인 macOS 에서는 압축을 풀 수 없다는 오류 메시지만 나온다. ~/Downloads ❯ chmod 777 jre-6u45-linux-x64.bin ~/Downloads ❯ ./jre-6u45-linux-x64.bin Unpacking... Checksumming...