20

[안드로이드] 패키지명(Package name)으로 앱 실행하기

패키지명을 받아서 앱을 띄워주어야 할 때가 있습니다. 사용자의 휴대폰에 해당 앱이 깔려있다면 실행하고, 깔려있지 않고 Google Play는 이용할 수 있다면 구글 플레이의 앱 상세 페이지로, 만약에 그렇지도 않다면 구글 플레이 웹에서 앱 상세 페이지로 이동 시키는 함수입니다. /** * 패키지 네임을 가진 앱을 실행합니다. 없으면 구글 플레이로 이동합니다. * @param packageName 대상 앱의 패키지 네임 */ fun launch(context: Context, packageName: String?) { val launchIntent = context.packageManager.getLaunchIntentForPackage(packageName ?: "") if (launchIntent !=..

안드로이드 Fragment 상태를 저장하고 복구하는 Best practice 소개

오늘도 개발을하는 중 이미지를 불러오는 Fragment를 구현할일이 생겼다. (사실 비일비재하지만)이미지뷰가 onSaveInstanceState 메소드가 구현되어있지 않은 서드파티 이미지뷰였기 때문에 속도는 당연 느렸고,그래서 방법을 찾던 중 이 글을 보게되었다. 유용할 것 같아서 공유한다! 심심할때마다 번역해야겠다. > 원문 출처https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en

앱 배너광고 VS 네이티브 광고, 어느 것이 더 효율적인가?

요즘 앱들을 보니 거추장스런 배너광고는 조금 줄어들고 있는 추세인듯 했다.물론 내 앱처럼 1인 개발자의 조촐한(?) 앱들을 본건 아니지만, 네이티브 광고가 등장하면서 대놓고 "나 광고다!!" 하는게 없어졌다는 것이다. 애드몹에서 수 차례 자사의 페이지 단위 광고(전면광고)를 이용해서 수익을 올려보라고메일이 왔지만 단 한번도... 전면광고를 넣을 생각은 하지 않았다.이유는 아래와 같다. 1. 나는 전면광고에 대해 굉장히 불쾌하게 느낀다.앱 이용도중 뜬금없이 나타나 유저를 당황스럽게 한다.내 경우는 전면광고가 뜬금없이 뜨는 앱은 즉시 삭제한다...(너무 잔인할 수도 있겠지만ㅎ) 2. 내 앱에는 전면 광고를 넣을 곳이 없다.전면 광고는 예를들어 게임 앱에서 다음 스테이지로 넘어가거나, 스테이지를 클리어했거나 ..

나/이슈 2016.11.27

마인크래프트 앱 개발기 9편, 자료구조를 배우다!

이번 학기, 나는 자료구조라는 수업을 듣고 있다.자료구조와 알고리즘 정도는 알고 있어야 프로그래머라고 생각했기 때문에 가장 신경쓰며 듣는 중이다.단순 성적 따기가 아닌, 수업 내용 하나 하나를 흡수하는데 집중하고 있다는 말이다.자료구조 책 초반에 Big O 계산법이 나오는데, 저번에 알고리즘 독학하며 그냥 넘겼던 부분이 알고리즘의 시간복잡도를 따지는 데 중요하단 것을 깨달았다.그리고 중첩 for 문이 상당히 효율이 떨어지는 방법이라는 것도 말이다. 말로만 들었지, 시간복잡도를 따지니 자료가 많아질 수록 중첩 for문의 성능은 기하급수적으로 떨어졌다. 마인크래프트 앱에서 가장 많이 사용하는 기능이 아이템 리스트 펼치긴데, 나는 그 기능을 중첩 for 문으로 구현 해 놓았다.수업을 듣고 여러 실습들을 하면서..

마인크래프트 앱 개발기 8편 <Markdown에 관하여>

새로운 기능, 패치 노트요즘 추가하고 있는 기능은 패치노트라고 하는 버전 히스토리를 보는 기능이다.마인크래프트 게임은 특이하게도 매번 업데이트를 할 때마다 유저들이 패치노트를 주의깊게 살펴보기에 필요성이 있겠다 싶어 넣었다. 저번에 앱에 추가한 서버 확인 기능은 잠시 안보이게 넣어두고이번 패치노트를 그 자리에 끼워 넣으려고 한다.서버 확인 기능을 접은 이유는 아래에 따로 적도록 하고, 패치노트 기능에 대해서 적어보겠다. 패치노트 기능은 저번에 블로그에서도 찬양했었던 FireBase를 이용해 구현했다.마인크래프트 패치는 자주되는 편이기 때문에 그때그때마다 실시간으로 업데이트 해주기 위해서 Firebase Storage에 마크다운으로 적은 패치노트를 업로드한 뒤 Firebase Realtime Databas..

안드로이드 아름다운 인트로 화면 만들기

안드로이드 앱 시작시 로고가 잠깐 떴다 사라지는 화면을 본 적 있을 것이다.인트로 화면에서는 최근 안드로이드 M에서 등장한 퍼미션을 받을 수도 있을 것이고, 로딩바도 구현할 수 있을 것이다.오늘은 그 인트로 화면을 구현해보도록 하겠다.먼저, 해당 layout을 준비한다. 그냥 linearLayout에 이미지 하나 올린 거라도 괜찮다.그 화면을 activity_intro.xml 라고 가정하자. 다음은 IntroActivity.java 를 생성한다.IntroActivity.javaimport android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; /** * Created by..

마인크래프트 앱 개발기 7편 "앱 레이아웃 정리!"

안드로이드 앱 성능에 관한 강의를 듣고, 마인크래프트 조합 가이드 앱을 최적화 시키기 시작했다.프로그래밍적인 부분 보다는 디자인적인 부분만 일단 살펴보고 레이아웃 정리에 들어갔다.깔끔하게 짠건 최근에 만든 부분이었고 옛날에 만든건 LinearLayout > LinearLayout > RelativeLayout > LinearLayout 이딴식(?)으로마구마구 뷰가 엉켜있었다. 메인화면 부터 말이다...디자인 타협이 살짝 들어간 부분도 있으나 수정 전 뷰를 그리는 시간이 25ms 였다면 수정 후 15ms 정도로 줄여 뿌듯하다!레이아웃 드로잉에 걸리는 시간 측정은 Hierarchy Viewer를 통해 할 수 있다.

안드로이드 앱 성능을 최적화 하는 방법 - (1) Render

다음은 Udacity의 Android Performance 강의를 듣고 정리한 내용이다.안드로이드 앱 성능은 가장 중요하다! 유저들은 앱이 느리거나 1초라도 버벅되면 당장 앱을 삭제할 수도 있다.그건 그 사람들의 인내심이 없기 때문이아니라 앱을 애초에 잘못만든 탓이다.나는 내 앱의 성능을 최적화하고 유저들에게 원활한 사용 경험을 제공하기 위해 강의를 수강했다. 첫번째 섹션은 Render 부분이다.안드로이드 기기의 CPU는 그려야 할 것들을 GPU로 보내GPU에게 이러 이러한 것들을 그리라고 명령한다.GPU는 drawable에 있는 파일들을 래스터화 시켜 그림을 그린다. Overdraw이럴때 발생할 수 있는 성능 낭비는 Overdraw가 있다.글자 그대로, 과잉으로 그림을 그린 것이다.태극기의 태극 문양을..

구글플레이(GooglePlay) 순위 높이는 방법, 키워드 최적화! (SEO)

앱 이름핵심 키워드를 포함한 앱 명칭 간단한 설명 (80자)앱의 좋은 기능, 가치를 내세워 다운로드 혹은 설명 더보기를 누르게끔 만드는 것 중요 설명 (4000자)키워드를 자연스레 분산시켜 넣는 것이 중요- 줄바꿈- 짧은 문장 (120문장 내외)- 작은 단락 (3-4줄 내외)- 글머리 기호 또는 목록- 하위 제목- 영어의 경우 필요에 한해 전부 대문자 사용 주의 할 것구글 플레이 스토어의 메타데이터 정책을 확인하고해당 정책을 위반하지 않는 범위에서 키워드를 언급해줘야 한다는 것그렇지 않을 경우, 앱이 예고 없이 짤리는 사태가 발생!

나/이슈 2016.07.22

마인크래프트 앱 개발기 6편 <Method Performance 측정>

마인크래프트 앱에 새롭게 서버 추가 기능을 만들고 있다.그런데 AsyncTask에서 속도가 영 나오지 않는다. -_-한국에서 이정도라면 아마 인터넷이 열악한 해외에서는 더 오래걸릴게 뻔하다.그래서 나는 어떤 부분에서 시간을 많이 잡아먹는지 퍼포먼스 측정을 해보기로 했다. long startTime = System.nanoTime(); YourMethod(); long endTime = System.nanoTime(); long MethodeDuration = (endTime - startTime); YourMethod() 부분에 내 수행 코드를 적으면 코드의 퍼포먼스를 측정할 수 있다.