반응형

Android 19

pk8, pem 파일을 jks로 변경하는 방법(Android)

Android APK 서명 .pk8 및 .pem에서 .jks로의 변환 과정 안드로이드 앱 개발 과정에서 APK 서명은 앱 배포의 필수적인 단계입니다. 이번 포스트에서는 .pk8 및 .pem 파일을 사용하여 APK에 서명하는 과정과, 중간에 발생한 에러 해결 방법까지 상세하게 다루려고 합니다. 1. 서명 파일 변환의 필요성 대부분의 안드로이드 개발자는 Android Studio에서 제공하는 기본 .jks 형태의 키스토어 파일을 사용합니다. 하지만 때때로 .pk8 및 .pem 파일만을 가지고 있어서, 이를 .jks 형태로 변환해야 하는 상황이 발생합니다. 2. 변환 과정 단계 1: PKCS12 형식으로 변환 첫 번째 단계는 .pk8 개인 키와 .pem 공개 키를 PKCS#12 형식으로 변환하는 것입니다. 이..

Android 2024.03.27

Android Emulator System uid App 빌드하기

안드로이드 애뮬레이터를 사용해서 시스템 앱으로 설치해서 테스트 해보고 싶은신적 있으신가요? 저희 회사는 안드로이드 단말기를 생산하는 회사라서 대부분 시스템 앱으로 빌드하여 배포합니다. 그래서 애뮬레이터에서 시스템 앱으로 돌리려고 삽질을 좀 했습니다. 1. 애뮬레이터 설치 애뮬레이터 설치 부터 신경써야 합니다. 아래 그림과 같이 Target 정보에 Google APIs 가 아닌 이미지를 선택해야 합니다. 그래야 AOSP 오픈소스에서 제공하는 platform key를 사용하여 apk를 시스템 앱으로 설치할수 있습니다. 2. 매니패스트의 system uid 입력 아래와 코드를 매니패스트 최상단의 입력되어야, 시스템 앱 권한으로 앱이 실행이 됩니다. 3. apk sign 애뮬레이터를 설치했다면 APK를 시스템 ..

Android 2024.03.26

repo init mirror 옵션 vs reference 옵션 차이

repo init 명령어에서 mirror 옵션과 reference 옵션이 있습니다. 두 옵션의 차이를 알아보아요. repo init --mirror는 git 저장소의 모든 브랜치와 태그를 그대로 복제하고, 원격 저장소와 동기화할 수 있는 옵션입니다. repo init --reference 는 이미 로컬에 있는 다른 저장소를 참조하여 필요한 데이터만 복제하고, 원격 저장소와 동기화할 수 없는 옵션입니다. 이렇게 하면 네트워크 트래픽과 저장 공간을 절약할 수 있습니다. 예를 들어, 다음과 같은 명령어를 실행하면 repo init --mirror -u {1} repo init --reference=/data/dtx340 -u {2} 위와 같이 명령어가 있을때, 첫 번째 명령어는 {1} 에 있는 모든 git 저..

Android 2024.01.31

Activity orientation 상황에서 액티비티 재생성 방지

안드로이드 어플을 개발하다보면, 화면을 회전할 경우 액티비티를 없애고, 액티비티를 다시 그립니다. 그런데 회사에서 요청한 요구사항에 맞게 개발하다보면 액티비티를 다시 그리지 않고, 그대로 사용해야할 경우가 있습니다. 이걸 매니패스트 정의만하면, 액티비티 재생성을 막아주는 코드가 있어서 공유 합니다. 1. 코드 매니페스트에 'android:configChanges' 에다가 액티비티 재생성을 무시하고 싶은 경우를 넣어주면 됩니다. 이 속성을 추가하면 액티비가 재생성 되지는 않지만, 화면 회전시 화면을 회전하여 그려줍니다. 2. 안드로이드 공식 문서 참고 ▶안드로이드 공식 문서, 액티비티 재생성 방지

Android 2023.06.10

안드로이드 해시키 구하는 방법, 카카오 API

android 네이티브 앱 개발시에 카카오 API 를 이용하게 되면 '키 해시' 값을 요구 합니다. 카카오 API 뿐만 아니라 여러 소셜 API 에서 요구 하는 경우가 많이 있습니다. ​ '키 해시' : 앱의 사이닝 키 시그니처(Signing key signature)를 해시한 값 따라서 API를 호출한 서버는 등록된 '키 해시' 와 네이티브 앱 키가 매치 하는지 비교하여 악성 앱을 판별 합니다. 따라서 '키 해시'를 등록해주기 위해서 추출 하는 방법은 2 가지가 있습니다. 1. java의 keytool 명령어를 CMD 창에 입력하여 얻을수 있습니다. 이 방법은 익숙하지 않으신 분들은 조금 복잡 할수 있습니다. 2. 앱 내의 java 소스로 '키 해시'를 로그캣의 출력하여 확인 할수 있습니다.(추천) ​..

Android 2021.04.12

BaseObservable을 이용한 inverseBinding

식별 가능한 데이터 객체 작업 | Android 개발자 | Android Developers 식별 가능성은 객체가 데이터 변경에 관해 다른 객체에 알릴 수 있는 기능을 의미합니다. 데이터 결합 라이브러리를 통해 객체, 필드 또는 컬렉션을 식별 가능하게 만들 수 있습니다. 간단한 기 developer.android.com 1. dataBinding 설정 build.gradle(app) 에서 dataBinding을 설정 합니다. dataBinding { enabled = true } 2. kotlin-kapt 설정 코틀린으로 사용하실 경우 build.gradle(app)의 아래 설정도 추가해 주어야 합니다. apply plugin: 'kotlin-kapt' 3. BaseObservable 설정 Model 클..

Android 2021.02.11

ViewPager2 + TabLayout + RecyclerView

ViewPager2 + TabLayout ViewPager2와 TabLayout를 이용해서 위 영상과 같이 만들어 보려고 합니다. 영상 처럼 좌우로 스와이프도 되고, 특히나 2번째 페이지에서는 RecyclerView를 이용해서 수직으로 아이템을 출력 시켜줍니다. 1. ViewPager2 ViewPager2의 어떤 Adapter를 붙이는지에 따라서 Fragment, RecyclerView.ViewHolder의 뷰를 적용 할 수 있습니다. ViewPager ViewPager2 Pager 아이템 PagerAdapter RecyclerView.Adapter RecyclerView.ViewHolder FragmentStatePagerAdapter FragmentStateAdapter Fragment ViewPag..

Android 2021.01.07

Android ConstraintLayout 사용법

1. 왜 ConstraintLayout을 쓰나요? LinearLayout으로 Android의 UI를 그리게 되면 꽤 많은 중첩 Layout을 만들어 냅니다. 이렇게 많은 중첩 Layout은 Android가 화면 프레임을 그리는데 있어서 속도가 많이 느려집니다. RelativeLayout는 멀티 디바이스의 해상도의 따라서 대응하기가 힘듬니다. 따라서 ConstraintLayout 이 등장 했습니다. ConstraintLayout은 중첩된 Layout을 지양하고, flat Layout을 지향 합니다. flat Layout은 중첩된 Layout이 아닌, ConstraintLayout 1개의 layout 으로 구성된 Layout을 의미 합니다. ConstraintLayout 의 제약 조건을 이용하여 UI Com..

Android 2020.10.21

Android 프로젝트 복제

기존의 Android 프로젝트를 그대로 다시 만들어야 되는 경우가 있습니다. 다음 순서로 복제 할 수 있습니다. 많이 복잡하지 않으니깐, 차근차근 고쳐 보아요. 1. 폴더 복사 붙여넣기 복제 하고 싶은 프로젝트 최상위 폴더를 복사, 붙여넣기 합니다. 그렇게 새로 만든 폴더의 이름도 그의 맞게 변경해 주세요. 2. Android Studio Import Android Studio 에서 File - New - 'Import Project' 에서 1번에서 복/붙 해서 만든 폴더를 선택해 주세요. 3. 패키지명 변경 Import Project 를 하면, 새롭게 프로젝트 창이 나타나게 됩니다. 그럼 제일 먼저, java의 package 명을 변경해 주세요. 패키지 우클릭 - Refactor - Rename - R..

Android 2020.10.08

Android의 Handler 와 Looper

핸들러와 루퍼 안드로이드 시스템에서 UI 관련 작업은 Main Thread(UI Thread) 에서 처리해야 합니다. 시간이 오래 걸리는 네트워크 작업이나 테이터베이스 작업들은 별도의 스레드(Worker Thread)에서만 작업을 해야 합니다. 따라서 다운로드 작업, 네트워크 작업은 Worker Thread에서 수행하고, 작업한 결과를 UI에 출력해 주어야 합니다. 이 때 서로 다른 스레드간 통신 작업을 해주어야 합니다. 이때 필요한 것이 핸들러(Handler)와 루퍼(Looper) 입니다. 또한, 아래 그림을 보면 알수 있지만, Handler는 '멀티 스레드 생산자-소비자 디자인 패턴' 을 따르고 있습니다. 여기서, Handler가 생산자(Producer)도 되고, 소비자(Consumer)도 될수 있습..

Android 2020.10.06
반응형