Android Developer 37

[번역] Google Play 인디 게임 페스티벌 결선 진출작들을 만나다.

출처 : Android Developers Blog 원문 링크 올해 초, 유럽과 일본 그리고 한국의 훌륭한 인디 게임들을 축하하는 국제 대회인 Google Play Indie Games Festival 2020 참가 신청 접수가 시작되었습니다. 우리는 각 팀의 기술적인 능력과 획기적인(groundbreaking) 창의성을 선보이는 수백개의 멋진 작품들을 받았습니다. 게임을 제출한 모든 분들께 감사드립니다. 밤 늦게까지 힘든 선택을 한 끝에, 각 지역의 결선 진출 20 작품을 발표할 수 있어 기쁩니다. 알파벳 순으로 나열된 아래의 선정작들을 확인하시길 바랍니다. 각 작품은 진정한 예술 작품입니다. 선정된 각 팀들은 그들의 사업이 성장하는데 도움이 될 상금과 혜택들을 받게 됩니다. 또한 최종 작품을 선택하는..

Android Developer 2020.04.01

[Android] APK 용량 줄이기

APK Size 줄이기 1. ProGuard 를 사용하자. ProGuard 는 사용하지 않는 Java 코드를 제거해준다. Code foot prints 를 줄이는데 굉장히 효과적이다. 2. Split Apk 사용하자. 특정 해상도나, ABI 에 따라 별도 Apk 를 만들 수 있다. 특히 앱 사이즈를 크게 줄여준다. 3. 최종 Apk(+ProGuard) 이후에 Facebook's ReDex 를 이용해 최적화 하자. Code Size 도 줄여줄 뿐만 아니라, 잠재적인 성능향상에도 도움이 된다. 4. 사용하지 않는 XML files 를 확인하자. Lint 같은 툴들이 사용하지 않는 리소스를 체크하고 지워준다. 5. 최대한 Resource 를 줄이자. Gradle 의 shrinkResources 를 사용..

Android Developer 2019.10.08

[Android] AsyncTask

AsyncTask Added in API level 3 public abstract class AsyncTask extends Object java.lang.Object -> android.os.AsyncTask Intro UI Thread(Main Thread) 어플리케이션의 프로세스를 실행하는 쓰레드 화면 구성 담당 : Button, TextView 등의 UI 구성 요소를 생성 및 조작할 때 상호작용하는 쓰레드 시간이 오래 걸리는 작업은 UI 쓰레드로부터 분리하여 별도의 쓰레드에서 실행 하는 것이 좋다.(UI쓰레드 지연 및 차단 방지) Android UI 도구는 쓰레드로부터 세이프하지 않다. 따라서 UI 쓰레드가 아닌 쓰레드에서는 UI 구성요소를 조작하지 않는다. AsyncTask UI 쓰레드 를 적..

Android Developer 2019.08.02

[Android] Task 와 Back Stack

[ActivityBackStack] Task 특정 작업을 수행할 때 사용자와 상호작용하는 액티비티들의 모음 액티비티들은 실행된 순서대로 스택에 쌓인다. 이 스택을 백스택 이라고 한다. Example - 새 메시지의 목록을 보여주는 액티비티 하나를 가지는 이메일 앱 사용자가 메시지를 선택하면 해당 메시지를 보여주는 새 액티비티가 실행되고 백스택에 PUSH 된다. 사용자가 뒤로가기 버튼을 누르면 방금 열린 액티비티가 종료되고 스택에서 POP 된다. 다중 창 지원 환경(7.0 이상) 에서 어플리케이션들이 동시에 실행될 때, 시스템이 각 창마다 task들을 분리하여 관리 한다. 각 창은 여러 태스크를 가질 수 있다. (Chromebooks 에서 실행되는 안드로이드 앱의 경우도 마찬가지이다) 기기의 홈 화면은 대..

Android Developer 2019.07.15

[Android] Log

[Log] Log 로그 출력을 담당하는 API 일반적으로 Log.v(), Log.d(), Log.i(), Log.w(), Log.e() 메서드를 사용한다. logcat 창에서 로그들을 볼 수 있다. 자세한 정보의 순서는 ERROR, WARN, INFO, DEBUG, VERBOSE 이다. VERBOSE : 개발 할 때 를 제외하고 응용 프로그램에 컴파일 해서는 안된다. DEBUG : 컴파일되지만 런타임에 제거 된다. ERROR, WARN, INFO : 항상 보관 된다. 클래스 내에서 TAG 상수를 선언하는 좋은 예시 private static final String TAG = "MyActivity"; Log.v(TAG, "index=" + i); Log.d 로 전달할 문자열을 작성할 때 컴파일러는 Stri..

Android Developer 2019.07.10

[Android] Activity의 LaunchMode

LaunchMode 액티비티 실행시 쌓이는 액티비티 스택에 대한 운영 방식 을 설정하는 모드 이다. 하나의 액티비티 스택 == 태스크 ( Task ) == 백스택 모드에 따라 하나의 태스크 또는 여러 개의 태스크에서 어플리케이션이 실행될 수 있다. LaunchMode는 총 4개이며, manifest의 activity 요소의 android:launchMode 속성으로 지정할 수 있다. 액티비티에 LaunchMode 값을 지정하지 않는다면 기본 값인 standard 가 들어가게 된다. 다중 인스턴스 지원 여부에 따른 분류 지원 有 : standard, singleTop ( singleTop 은 조건부 지원 ) 대부분의 액티비티에 대한 일반적인 시작 지원 無 : singleTask, singleInstance..

Android Developer 2019.07.10

[Android] 난독화(Proguard)

Proguard 코드 난독화 및 APK 최적화를 위한 도구 왜 필요한가? 코드 난독화를 통해 디컴파일시 본인의 코드가 노출되는 것을 방지 불필요한 메서드를 제거하여 멀티덱스를 피할 수 있다. MultiDex? 안드로이드 앱을 구성하는 코드는 컴파일 되어 덱스(Dex) 파일로 만들어 진다. 하나의 덱스 파일은 최대 65536개 의 메소드만 참조 할 수 있다. 만약 프로젝트의 코드가 65536개의 메소드를 초과하면 여러 개의 덱스파일 이 생성된다. 멀티 덱스를 사용하여 컴파일 할 수 있지만, 빌드 과정에서 앱 내의 파일을 여러 덱스파일로 나누어야 하므로 빌드 속도가 느려지고 APK의 용량이 커진다. Proguard 와 Non-Proguard 비교하기 디컴파일러 : jadx v0.9.0 사진 위에 걸린 링크를..

Android Developer 2019.05.14

[Android] OpenSource, ButterKnife, Firebase

Open Source Open Source Library? Open Source License를 가진 Library 누구나 제한 없이 재사용, 수정, 사용 할 수 있다. 대부분의 오픈소스 소프트웨어는 GNU General Public License 를 가지고 있다. GNU General Public License는 대표적인 Open Source License 이다. ButterKnife 뷰를 쉽게 바인딩 해주는 라이브러리 1. ButterKnife Download butterknife github 에 나온 Download 가이드를 따라서 compileOptions 와 dependencies 를 추가합니다. !!!! 그런데 !!!! 이런 빌드 오류가 발생하네요....?? 그러면 오류문이 하라는대로 해보겠습..

Android Developer 2019.05.02

[Andoird] GIF를 이용한 Splash Activity 만들기

dependencies 수정 후 'sync' GIF 이미지를 'raw' 디렉토리에 저장해준다. drawable 폴더에 넣으면 안드로이드 스튜디오는 gif 파일을 인식하지 못한다. LoadingActivity.class package com.example.communityapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.widget.ImageView; import com.bumptech.glide.Glide; import..

Android Developer 2019.04.12

[Android] Android Design Pattern

출처 : https://academy.realm.io/kr/posts/eric-maxwell-mvc-mvp-and-mvvm-on-android/ Intro 안드로이드 앱을 논리적 구성 요소로 체계화하려는 방법이 지속적으로 발전하였다. MVC 패턴을 초석으로 보다 모듈화되고 테스트 가능한 패턴으로 발전해 왔다. MVP와 MVVM은 MVC를 대체하기 위한 대안책이다. 하지만 개발자들은 어떤 것이 안드로이드에 적합한지 의견을 일치하지 못했다. MVC ( Model View Controller ) Model 앱의 데이터 + 상태 + 비즈니스 로직 이다. 앱의 두뇌역할이며 뷰나 컨트롤러에 묶이지 않으므로 많은 곳에서 재사용할 수 있다. View 모델의 표현 이다. 사용자가 앱과 상호작용할 때 컨트롤러와 통신하는 ..

Android Developer 2019.04.09

[Android] Foreground, Background, Timer

Foreground, Background Foreground 사용자와 상호작용이 가능한 상태의 프로세스 ( 화면에 직접적으로 보이는 프로세스) Background 겉으로는 보이지 않는 프로세스 공간 주로 'Service' 기능이 많이 실행된다. Android 8.0 (Oreo) Background Execution limits 백그라운드에서 실행되는 어플리케이션들이 기기의 리소스를 많이 소모하는 것을 개선하기 위해 제한하는 것이다. 백그라운드 서비스 제한 : 앱이 유휴 상태인 경우 백그라운드 서비스의 사용이 제한된다. 유휴상태 : 주변장치들의 입력과 출력이 없는 상태 브로드캐스트 제한 : 매니페스트에 등록한 암시적 broadcast 를 받을 수 없다. (약간의 예외는 있다) Android 8.0 이하라도..

Android Developer 2019.04.02

[Android] ListView, Navigation Drawer

ListView ( https://developer.android.com/reference/android/widget/ListView ) ListView란? 수직적으로 스크롤 할 수 있도록 뷰들을 보여주는 기능 최근 생성된 뷰는 이전에 생성된 뷰의 아래 에 위치한다. 좀 더 개선된 ListView를 구현하고 싶다면 RecyclerView 를 사용한다. ListView의 layout XML AdapterView 에서 상속 받은 객체이다. 스크롤 했을 때 새로운 뷰를 보여주는 것과 같은 기능이 필요할 때 ListAdapter 에 요청을 한다. list 안에 item 을 보여주기 위해서 setAdapter 메소드를 호출 한다. GridView RecyclerView ListView에 Flexibility 와 ..

Android Developer 2019.03.24

[Android] Fragment

Fragment 동작 또는 Activity 내에서 사용자 인터페이스의 일부 하나의 액티비티에 여러 개의 프래그먼트가 있을 수 있고, 하나의 프래그먼트를 여러 액티비티에서 사용 할 수 있다. 자체 수명 주기, 자체 입력 이벤트를 가진다. 항상 프래그먼트 내에 포함되어 있어야 하며 프래그먼트의 수명 주기는 호스트 액티비티의 수명 주기에 직접적으로 영향을 받는다. Fragment 디자인 철학 목적 : 태블릿과 같은 큰 화면에서 보다 역동적이고 유연한 UI 디자인을 지원 각 프래그먼트가 레이아웃을 따로 정의하고 자기만의 수명 주기 콜백으로 자기 나름의 동작을 정의함 재사용을 염두에 두고 디자인하며 한 프래그먼트를 또 다른 프래그먼트로부터 직접 조작하는 것은 삼가야 함. Fragment 생성 최소 구현해야 하는 ..

Android Developer 2019.03.13

[Android] Naming

Basic Naming Java Class Naming Package : 모두 소문자 로 작성한다. EX > com.sun.eng Classes : 대문자로 시작 하며, 명사형 이다. EX > class Raster Interface : 대문자로 시작 하며, 형용사형 이다. EX > interface Stroing Method : 동사형 이며, 소문자로 시작 한다. EX > run() / getBackground() Variables : 소문자로 시작 한다. EX > int i / float myWidth Constant : 모두 대문자 로 작성한다. EX > static final int MIN_WIDTH=4 Camel Case : 소문자로 시작할 경우 적용되는 작성 방식 이름이 두 가지 단어 로 혼합..

Android Developer 2019.03.01

[Android] 정의, 버전 및 특징, 액티비티

[Android] 1. 자바 기반 안드로이드 개발 언어 : 자바, 코틀린 2. 오픈 소스 안드로이드는 오픈소스 기반이며 아파치 2.0 라이센스 를 사용한다. 3. 완벽한 컴포넌트 개발자가 제공된 소스를 사용하면 스마트폰 플랫폼이 그대로 만들어지므로 그 위에 올라가는 앱만 만들면 된다. 4. 높은 점유율 5. 높은 이식성 리눅스 기반으로 높은 이식성을 가지고 있으며 새로운 하드웨어의 기능을 쉽게 연동할 수 있다. 모바일 뿐만 아니라 태블릿, PMP 등의 각종 통신 기기에 사용될 수 있다. 6. 쉬운 연동 안드로이드로 만든 앱은 다른 앱에서 제공하는 기능을 쉽게 사용 할 수 있다. [버전 및 특징] A : Apple pie - Android 1.0 안드로이드 마켓, 웹브라우저, G메일, 구글지도, 구글검색,..

Android Developer 2019.02.23

[BCSD] 2. DataStructure - 2019.01.28

자료구조 정의 전산학에서 자료를 효율적으로 이용 할 수 있도록 컴퓨터에 저장하는 방법 여러 종류가 있으며, 이러한 각각의 자료구조는 각자의 연산 및 목적에 맞추어져 있다. 프로그램을 설계할 때, 어떠한 자료구조를 선택할지는 가장 우선적으로 고려되어야 한다. 분류 선형 구조 배열 : 가장 일반적인 구조 / 메모리 상에 같은 타입의 자료가 연속적으로 저장된다. 스택 : LIFO (Last In First Out) 큐 : FIFO (First In First Out) 안드로이드에서 가장 많이 쓰임 덱 : 양쪽에서 넣기와 빼기를 할 수 있는 일반화된 선형 구조 연결 리스트 연결 리스트 : 각 노드에 자료와 다음 노드를 가리키는 참조값으로 구성된다. 원형 열결 리스트 : 마지막 노드가 처음 노드를 가리키는 연결 ..

Android Developer 2019.01.28

[BCSD] 1.Git, Git-flow, OOP - 2019.01.28

Git 와 Git-flow Git 분산 소스코드 관리 방식 소스코드 주고받기가 필요 없음 병렬 개발 가능 버전 관리 용이 저장소 : 로컬 저장소, 원격 저장 체크아웃 : 특정 시점이나 브랜치의 소스코드로 이동 스테이지 : 작업한 내용이 올라가는 임시 저장 영역 커밋 : 작업한 내용을 로컬 저장소에 저장하는 과정 태그 : 커밋의 임의 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표 푸쉬 : 로컬 저장소의 내용 중 원격 저장소에 반영되지 않은 커밋을 보내는 과정 풀 : 원격 저장소에 있는 내용중 로컬 저장소에 반영되지 않은 내용을 가져오는 과정 브랜치 : 커밋을 단위로 구분된 소스코드 타임라인에서 분기해서 새로운 커밋을 쌓을 수 있는 가지를 만드는 것 병합 : 하나의 브랜치는 다른 브랜치와 ..

Android Developer 2019.01.28
반응형