Trouble Shooting 12

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..

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

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

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...

Java cacert 관련 이슈 PKIX path building failed:

Java에서 https를 이용한 SSL 통신을 할 때 아래와 같은 이슈를 맞닥뜨리는 경우가 종종 있을 것이다. Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387) at sun.security.validator.PKIXValidator.engineValidate(PKIXVali..