안드로이드 스튜디오를 3.0.1에서 3.1.1로 업데이트를 하려고 하는데, 정상적으로 업데이트가 되지 않는다.


흠...봤더니 예전에 2.2.1에서 업데이트할 때에 한글 폰트 지원 문제로 변경한 font.xml 파일이 원본과 다르다고 나온다. (modified)


툴 업데이트를 할 때 기존의 프로그램 내의 파일들이 변경되거나 삭제, 혹은 추가된 부분들을 체크하는 것이 분명하다.


일단 3.0.1의 원본을 찾아서 교체해주어야 할 것 같아서 아카이브를 뒤져서 파일을 다운로드 받았다.


안드로이드 스튜디오 아카이브

https://developer.android.com/studio/archive


변경했던 font.xml 파일을 백업해놓고 다운로드 받은 프로그램 내의 font.xml 파일로 덮어씌워 주었다.


그리고, 다시 업데이트를 진행하니 정상적으로 업데이트가 되었다.

안드로이드 API 23+ 이상은 매니페스트에서 퍼미션 설정을 해도 해당 기능을 그대로 사용할 수 없다.


따라서 런타임 시 동적으로 권한을 허용하는 형태로 사용자에게 퍼미션 허용 여부를 확인 받아야 한다.


아래의 내용을 참고해서 데모를 하나 만들어보니 잘 작동한다. 흠...


참고

 - https://developer.android.com/training/permissions/requesting.html

 - http://stackoverflow.com/questions/8854359/exception-open-failed-eacces-permission-denied-on-android

https://developer.android.com/guide/practices/screens_support.html#support

https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts



하나의 앱으로 핸드폰과 태블릿 양 쪽에서 모두 사용하고 싶어하는 사람들이 많다.


여기서 설계의 문제가 발생한다.


하나의 앱에 양쪽에서 최적화한 화면을 구성하려면 리소스를 다르게해서 구현해야 하는 경우가 있는데, 이럴 경우에는 하나를 지원하는 앱보다 더 많은 리소스가 포함되게 된다.


아이콘이나 인트로 화면 하나 정도야 상관이 없지만 네이티브로 화면의 양이 상당한 경우 그 리소스도 사용자에게 데이터 부담이 된다.

(요즘 네트워크 빠르고 무제한 요금제 사용하거나 와이파이로 받으면 뭐 문제가 되나? 하면 할 말은 없지만 아무튼 앱 사이즈를 줄이는 것도 중요한 부분 중 하나이다)


그냥 폰의 화면을 늘려서 사용하면 되지 않냐는 사람도 있기는 한데, 그렇게 사용해도 문제는 없을 수 있다.


하지만 폰과 태블릿이 가지는 몇 인치의 차이가 물리적인 화면 영역으로 인해서 사용성이 다르기 때문에 실제로 보여주면 당황하는 사람들이 나오기도 한다.



이런 부분에서 서로 의견은 분분한데, 타겟에 맞게 앱을 따로 패키지를 생성하고 배포하여 리소스를 타겟에 최적화한(폰과 태블릿의 분리) 형태로 제공하는 것이 좋다고 생각하는 사람과 하나의 앱으로 배포하고 관리하여 운영상의 이점을 가지지 않느냐고 생각하는 사람이 있다. 


듣기에는 양쪽다 이유가 서로 수긍할만하고 맞는 말로 들린다.


뭐...원하는 대로 만들어주기야 할 텐데, 이건 의사 결정 또는 설계의 문제라고.



폰/태블릿 구분 방법

http://stackoverflow.com/questions/9279111/determine-if-the-device-is-a-smartphone-or-tablet



간단하게 웹뷰의 속도를 개선하는 방식이 hardwareAccelerated=true 를 명시적으로 설정하는 것 정도 였는데, 지금은 딱히 설정안해도 기본 적용되고 있는 것으로 알고 있는데 그래도...느린 사이트들이 있다.


앱에서 좀 개선할 방법이 없을까 찾아보긴 했는데...



http://stackoverflow.com/questions/32304237/android-webview-loading-data-performance-very-slow

http://stackoverflow.com/questions/3652583/enhance-webview-performance-should-be-the-same-performance-as-native-web-browse

http://stackoverflow.com/questions/7422427/android-webview-slow



*. 웹 사이트 성능 및 속도 체크

 - http://www.webpagetest.org



글을 찾아서 읽어보면 볼 수록 결론은 기본적으로 웹을 빠르게 만들어야 한다. 


모바일 메인 페이지가 3~5메가 이상은 첫 로딩 시에 느릴 수 밖에 없다...


http://www.htmlgoodies.com/beyond/reference/7-tips-to-make-your-websites-load-faster.html

https://www.smashingmagazine.com/2013/04/build-fast-loading-mobile-website/

http://learntocodewith.me/posts/make-your-website-fast/

http://www.speedawarenessmonth.com/15-things-for-making-your-site-faster-for-mobile-users/

일반적으로 공공이나 일부 금융, 통신 프로젝트에서는 인터넷이 안되는 환경이 대부분이다.


이로 인해서 그래들 설정을 통해서 라이브러리를 적용하고 초기 환경을 구축하는 데에 애로사항이 발생하기도 한다.

(보통은 인터넷이 되는 PC에서 다운로드 후 파일서버에 올려서 내려받는 형태로 진행한다)


AsyncHttpClient라는 사용이 간편할 뿐 아니라 강력하고 유용한 통신 라이브러리를 사용하기 위해서 몇 가지 확인이 필요했다.


1.4.9 이상의 버전에서는 안드로이드 스튜디오에서 그래들 적용하면 큰 이슈가 없지만 로컬 사용 시에는 추가적인 라이브러리가 필요했다.


헤더 관련해서 랩핑한 cz.msebera.android 라이브러리를 추가하여 주었더니 정상적으로 작동이 되었다.



1) 그래들 Maven Repository 적용 시 (아래의 한 줄을 추가)


compile 'com.loopj.android:android-async-http:1.4.9'


2) 로컬 라이브러리 적용 시 (libs 폴더에 해당 파일을 담고 링크)


compile files('libs/android-async-http-1.4.9.jar')

        compile files('libs/httpclient-4.3.6.jar')



*. AsyncHttpClient 관련 이슈 (API23 부터는 httpClient 를 사용할 수 없음...사용하고 싶으면 라이브러리를 추가하여 사용)

http://stackoverflow.com/questions/29685395/android-asynchttpclient-unable-to-find-symbol-class-header


*. cz.msebera.android 라이브러리 관련 이슈를 확인

http://stackoverflow.com/questions/33028542/how-to-add-the-android-async-http-jar-in-eclipse-java-build-path




구글 코드랩이라는 사이트가 있네...


https://codelabs.developers.google.com



파이어베이스 관련한 코드랩들도 있는데, 파이어베이스 사용 관련해서 나온 코드랩들도 몇 가지가 있다.


https://codelabs.developers.google.com/codelabs/firebase-android/#0


아직 개념은 가물거리는 한데, 일단 몇 가지 따라해보면 적용할 수 있지 않을까 생각됨.



< 파이어베이스 서버 시작하기 >

https://firebase.google.com/docs/database/server/start

앱 실행 화면을 단말에서 녹화하여 보여주려면 스크린 녹화 프로그램이 필요했고, 예전에는 루팅을 통해서만 앱의 실행이 가능했다. 


그런데, 롤리팝부터는 안드로이드 API가 제공되어서 앱 안에 해당 기능을 넣어서 만들수도 있고, 일부 앱은 4.x 부터는 별도의 루팅없이도 녹화가 되는 기능이 제공된다.


몇 개 사용하보니 HD급까지는 그럭저럭 녹화가 잘 되는데 보통 320~480급으로 기본 세팅해놓으므로, 설정을 확인해서 자신에게 맞는 프레임과 화질을 선택해서 테스트해본 후에 녹화를 뜰 것.



* 스크린 레코딩 - 롤리팝(5.0)부터 API 제공


모비즌 스크 린레코더 - https://play.google.com/store/apps/details?id=com.rsupport.mvagent

스크린 레코더 - http://sergeswin.com/1164

안드로이드 스크린레코딩 관련 - http://stackoverflow.com/questions/32513379/how-to-record-screen-and-take-screenshots-using-android-api



https://guides.codepath.com/android


github 위키로 만들어진 좋은 안드로이드 가이드를 발견했다.


문서 형식도 markdown 포맷이라서 눈에도 잘 들어오고, 내용도 간결하게 잘 작성해놓았다.


오픈 소스에 대한 사용법도 다양한 항목별로 정리해놓아서 보기도 좋고, 참고도 된다.



이 사이트도 정리가 잘되어 있네...


http://www.vogella.com/tutorials/android.html

비즈니스 로직을 다루다보면 문자열을 다루는 일이 허다하다.


문자열만 잘 다뤄도 작업을 좀 편리하게 할 수 있다.


출처 - http://stackoverflow.com/questions/21524642/splitting-string-with-pipe-character




String[] value_split = rat_values.split("\\|");


요렇게 하면 파이프 구분자로 문자열을 잘라서 String 배열에 담을 수 있다.


안드로이드 개발툴로 이클립스만 주야장천 사용하다가 안드로이드 스튜디오를 사용하게 되었다.


1.5가 나왔을 때 한 번 설치해보고 사용하지 않다가 2.0으로 업데이트하고 외부 프로젝트를 읽어오니 잘 실행이 안돼서

기능 중에 instant run 부분을 제외하고 빌드하니 정상적으로 앱이 구동이 되었다.


아직 단축키도 어색하고, 인텔리J의 인터페이스로 보이는 화면도 그리 친숙하지는 않기는 한데 세련되어 보이기는 하다.



오전에 2.1로 업데이트가 되어서 툴을 업데이트 했다.


http://tools.android.com/recent/androidstudio21andemulator2513available


이번 업데이트는 기본적으로는 N 프리뷰 관련된 내용인 것 같지만 곁가지로 빌드 성능 향상이나 인스턴스 런 등의 개선이 있는 것으로 보인다.


Android Studio Tips And Tricks

http://developer.android.com/intl/ko/sdk/installing/studio-tips.html


Android Studio shortcuts for Mac

https://gist.github.com/stkent/349cdda974fdb9697be5

+ Recent posts