본문 바로가기

전체 글167

안드로이드 운영체제의 구조 리눅스 커널 (Linux Kernel) : 리눅스에 기반을 둔 오픈소스 소프트웨어 스택 하드웨어 추상화 레이어 (hardware abstraction layer, HAL) : 하드웨어의 추상화 계층으로, 상위의 자바 API프레임워크에서 하드웨어 기능을 이용할 수 있게 표준 인터페이스를 제공 안드로이드 런타임 (Android runtime): ART라고 하며 앱을 실행하는 역할을 한다. 안드로이드 5.0버전 이전에는 Dalvik 안드로이드 5.0버전 이상부터는 ART로 변경됨 안드로이드 앱은 DEX파일로 빌드 되는데 이 DEX 파일을 해석해서 실행하는 주체가 바로 ART이다. 자바에서 개발자가 소스코드를 작성한 후 컴파일하면 클래스 파일이 만드어진다. 이클래스 파일을 자바 가상 머신에서 실행한다. 그러나 .. 2021. 11. 30.
안드로이드 특징 안드로이드는 리눅스 커널을 기반으로 구글에서 제작한 모바일 운영체제이다. 구글은 2008년 안드로이드 1.0 버전을 출시한 이후 전 세계 모바일 플랫폼 시장의 70~80%를 차지하고 있다. - 안드로이드는 공개 운영체제인 리눅스를 기반으로 한다. - 안드로이드 앱은 자바나 코틀린 언어를 이용해 개발한다. - 안드로이드 운영체제의 주요 부분과 라이브러리, 구글에서 만든 앱등의 코드는 대부분 공개되어 있다. - 안드로이드 스마트폰은 구글뿐 아니라 여러 제조업체에서 만들수 있다. - 안드로이드 앱은 구글의 플레이 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포가 가능하다. - 안드로이드 플랫폼에서는 모든 응용 프로그램이 평등하다는 사상으로 모바일에 기본으로 탑재된 앱과 개발자가 만든 앱이 똑같은 환경에서 똑.. 2021. 11. 30.
앱 서명 2가지 방법이 있다. 1. 서명 키를 개발자가 직접 만들어 관리하는 방법 개발자가 만든키로 앱을 서명하고 이를 Play 스토어에 등록하여 사용자에게 전달한다. 즉 개발자가 만든 서명키 1개로 앱을 관리한다. 그러나 이렇게 하면 만에 하나 개발자가 키를 분실하거나 다른 누군가 악의적으로 복사해서 사용하면 대처할 방법이 없다. 즉, 앱을 업데이트하려면 이전 버전과 똑같은 키로 서명을 해야하는데 서명할 수가 없어서 업데이트를 하지 못한다. 만약 새로운 키를 만들어서 서명하면 완전히 새로운 앱으로 등록된다. 2. 구글 Play에서 관리하는 방법 개발자가 만들고 관리하는 업로드 키 (위에서 설명한 기존 서명키)와 구글 Play가 만드는 앱 서명키가 있다. 개발자가 키를 만들어 앱을 서명하지만 이키는 앱을 구글 P.. 2021. 11. 28.
배포 파일 APK (Android application package) 안드로이드의 전통적인 배포파일로서 컴파일된 코드와 리소스를 묶어서 키로 서명한 것 AAB (Android app bundle) 2018년 구글 IO에서 발표한 새로운 안드로이드 앱 배포 파일 (왼쪽) 이전 APK를 통해 기기에 전달되는 모든 리소스의 예. (오른쪽) 기기에 필요한 것만 제공하는 Dynamic Delivery의 예 AAB 파일은 Play 스토어에 올리면 최적화된 APK를 대신 만들어 준다. 이때 앱을 내려받는 기기에 맞는 파일만 포함하므로 앱의 크기가 줄어드는 효과가 있다. 구글에서는 2021년 8월부터 play 스토어에 새로운앱을 게시할 때 AAB를 사용해야 한다고 발표했다. 2021. 11. 28.
RN에서 babel-plugin-root-import Root Import 하기 모든 참조는 경로를 절대값으로 불러오는 방법을 사용하려고 한다. 사용하는 이유 : 1. '../../../' 같이 Import 참조 폴더의 한없이 길어지는 문제 2. 파일 이동으로 인해 종속적인 코드들을 일일히 수정해줘야하는 문제 3. 코드 가독성이 현저히 떨어지는 문제 사용방법 정리가 아주 깔끔한 블로그 : https://dev-yakuza.posstree.com/ko/react-native/root-import/ RN(React Native)에서 root import하기 RN(React Native) 프로젝트에서 import를 할때, root 폴더 기준으로 import할 수 있도록 프로젝트를 설정해 봅시다. dev-yakuza.posstree.com 2021. 10. 5.
all sub-directories not excluded by your .gitignore. Will not monitor dotfiles. 문제 원인: 명령어 사용이 잘못됬다.. 해결 방법: npm run android 또는 yarn run android 또는 npx react-native run-android 을 사용한다. 2021. 10. 5.
Failed to install the app. Please accept all necessary Android SDK licenses using Android SDK Manage 문제 원인 : 안드로이드 SDK 라이센스 라이브러리가 설치되지 않아서 발생하는 에러 해결 방법 : 안드로이드 스튜디오에서 Configure>SDK Manager 이동한 다음 SDK Tools 탭을 선택하고 Google Play Licensing Library 을 설치하면 된다. 2021. 10. 5.
IDFA.getIDFA null 뜨는 에러 Possible Unhandled Promise Rejection (id: 0): Error: null Error: null at Object.promiseMethodWrapper [as getIDFA] (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.themoin.remit.dev&modulesOnly=false&runModule=true:2872:36) at IDFA.getIDFA (http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.themoin.remit.dev&modulesOnly=false&runMod.. 2021. 9. 29.
Task 'installDebug' not found in project ':app'. Some candidates are: 'installDevDebug', 문제 원인 해결 방법: 1. 안드로이드 스튜디오로 해당 프로젝트 루트 폴더를 열어 최신 gradle을 설치 해준다. 2. 프로젝트/android 경로에서 ./gradlew installDevDebug 명령을 실행한다. 2021. 9. 28.
재사용 컴포넌트 (reusable components) 개발을 하다보면 아무리 프레임워크가 좋다고 해도 기존것을 기능에 맞춰 커스텀 해야 하는 경우가 생긴다. 재사용 컴포넌트란: 하나의 목적에 부합하는 것이 아니라 여러 코드에 범용적으로 적용하요 재사용 할수 있는 컴포넌트를 말한다. 그냥 합체라고 생각 하면 될듯... 특히 타입스크립트에서는: - ReactNode라는 타입, - children이라는 속성, - 수신하는 속성을 한꺼번에 다른 컴포넌트에 전달하는 기법이 필요하다. 기본사용법은 아래와 같다. // 재사용 컴포넌트 예시 import type {FC, ReactNode} from 'react' type SomeProps = { children?: ReactNode } export const Some: FC = ({children}) => { retur.. 2021. 9. 15.
인라인 스타일과 StyleSheet 스타일 차이 재렌더링은 상항에 따라 반복해서 발생한다. 그래서 상황에 맞게 스타일 속성을 설정 해줘야 하는데 인라인 스타일 : 자바스크립트 엔진쪽 스레드에서 UI 스레드 쪽으로 브리지를 경유하여 옮겨 가므로 내용이 컴포넌트 로직에 의해 바뀌지 않을때 앱의 디스플레이 속도가 떨어진다. StyleSheet: 생성된 스타일 객체는 UI 스레드 쪽에 캐시되므로 앱 전체 디스플레이 속도가 빨라진다. 그래서 내용이 변하지 않는 스타일 객체는 StyleSheet.create 방식으로 구현하며 동적으로 바뀌는 스타일 객체는 인라인 스타일 방식으로 구현하는게 좋다! 2021. 9. 14.
터처블 코어 컴포넌트 (Touchable) 특징 1. 컴포넌트 영역 터치시 OnPress 이벤트 속성에 설정된 콜백 함수를 호출한다. 2. 단 한개 자식 컴포넌트만 온다. Button, TouchableOpacity, TouchableHiglight 차이 Button : 커스텀에 제약 사항이 많고 일부 안드로이드 낮은 버전에서는 디자인 적용 안되는 경우도 있음. TouchableOpacity : 컴포넌트 바탕색 투명도 변화가 생김 모든 플랫폼 디자인에 이상 없이 동작 TouchableHiglight: 컴포넌트 바탕색 잠깐 바뀜 return( // button // touchahbleOpacity TouchableOpacity // touchahbleHighlight TouchableHighlight ) 모두 OnPress 이벤트 속성을 가지고 있.. 2021. 9. 13.