2015의 게시물 표시

nProtect 깔기 싫다...

너 없이 은행 거래 하고 싶다.

Design support library 적용사항 정리

Design support library 적용사항 정리적용하면서 알게된 내용 디자인 support library 사용시 기본 셋팅 사항 정리

[아래 두개의 compileSdkVersion가 추가 되어야 함]
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.0'

[컴파일 SDK 버전]
compileSdkVersion 23

[엑티비티 테마]
android:theme="@style/Theme.AppCompat"

윈도우에서 Ruby 설치 및 RubyGems 설치 방법

윈도우에서 Ruby 및 RubyGems를 설치하는 방법윈도우에 RubyGems 설치 http://rubyinstaller.org/downloads/

사이트로 이동하여 RubyInstaller와 DEVELOMENT KIT을 다운로드하여 설치한다.
RubyInstaller는 설치 프로그램이고 DEVELOMENT KIT은 mingw32를 7zip 형태로 실행형 압축한 파일이다.
각각 설치 및 압축해제를 한다.

시작 프로그램 > Start Command Prompt with Ruby를 실행하다.

mingw32가 압축해제된 폴더로 이동한다.

아래 두 명령어를 차례로 실행한다.


ruby dk.rb init ruby dk.rb install

CoolSharp Code Section Generator

이미지
CoolSharp Code Section Generator코드를 작성할 때 섹션별로 나눠두면 한눈에 파악하기가 쉽다. https://plugins.jetbrains.com/plugin/8109?pr=idea

코드를 작성할 때 코드 섹션 별로 만들어두면 통일성도 있고 한눈에 파악하기도 쉽다. 원래 사내에서 사용하는 포멧으로 좀 더 쉽게 섹션을 만들어 두기 위해 개발한 플러그인인데 다른 사람들도 이용을 하면 좋을 듯 하여 인텔리 J 플러그인 공식 사이트에 등록하였다.





Custom Activity On Crash library

이미지
Custom Activity On Crash library앱 크래시 OS 다이얼로그를 커스텀 다이얼로그로 변경 https://github.com/Ereza/CustomActivityOnCrash

앱 크래시가 발생하였을 때 시스템 다이얼로그를 대신해 커스텀 엑티비티를 호출한다.



butterknife

butterknifebutterknife로 리소스 바인딩을 쉽게 하자. https://github.com/JakeWharton/butterknife

안드로이드에서 리소스를 사용하려면 findById 메소드를 이용하거나 getResource를 이용하여 바인딩한다. 사용에는 불편이 없으나 이러한 방법은 소스가 너저분해지고 전체적으로 분량도 늘어 가독성이 떨어지며 소스 라인의 수도 증가하여 간결함을 유지하기가 어려워진다. 내부 로직과 유관하기 보다 리소스와 바인딩을 위한 과정이므로 생략을 할 수 있다면 소스가 더 깔끔하게 관리가 될 수 있다.

classExampleActivityextendsActivity { @Bind(R.id.user) EditText username; @Bind(R.id.pass) EditText password; @BindString(R.string.login_error) String loginErrorMessage; @OnClick(R.id.submit) voidsubmit() { // TODO call server... } @OverridepublicvoidonCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields... } } butterknife는 위와 같이 Annotation을 이용하여 내부적으로 리소스 바인딩을 진행해 준다.

Guillotine animation

이미지
Guillotine animationGuillotine animation으로 메뉴를 더욱 신선하게 호출해보자. 안드로이드에서 메뉴를 호출하는 방법 중에 가장 많이 사용되는 메뉴키, 엑션바의 Drawer animation을 많이 사용한다.

지금 소개할 메뉴 호출 방법은 Guillotine animation효과로 기존과는 사뭇 다른 형태로 메뉴를 호출한다.

홈페이지 : https://github.com/Yalantis/GuillotineMenu-Android


git 브런치 A to B replace 하기

git 브런치 A to B replace 하기git branch를 merge할 때 충돌없이 브런치를 교체하는 명령 다음 명령으로 B브런치는 A브런치로 교체된다.

git checkout [Branch_A]git merge -s ours [Branch_B]git checkout [Branch_B]git merge [Branch_A]

아파치 서버의 인코딩이 깨짐 해결 방법

아파치 서버의 인코딩이 깨짐 해결 방법아파치 서버에서 한글 깨짐 발생시 해결 방안 깨지는 폴더에 파일을 생성하자. 파일이 깨지는 폴더에 .htaccess라는 파일을 생성하고 편집한다.

AddDefaultCharset UTF-8php_value default_charset UTF-8AddCharset UTF-8 .html .css .js .xml .json .rss
위와 같이 작성하고 저장한다.
sudo /etc/init.d/apache2 restart
아파치 서버를 재 가동 한다.

브라우져 캐시를 지우고 다시 로딩해 본다.

안드로이드 스튜디오 플러그인을 개발하자.

이미지
안드로이드 스튜디오 플러그인을 개발하자.이 글은 안드로이드 스튜디오의 플러그인을 개발하는 과정을 기록해 두기 위해 작성한 글 입니다. 인텔리 J 설치
인텔리 J 사이트로 이동하여 인텔리 J를 다운로드 받아 설치한다.

인텔리 J 다운로드 : https://www.jetbrains.com/idea/

인텔리 J 실행 및 SDK 설정 인텔리 J 를 실행 하면 다음과 같은 화면이 나온다.
먼저 SDK 설정을 해야 한다. 아래 그림을 참고로 Configure > Project Defaults > Project Structure 를 선택한다.
아래 그림처럼 + 버튼을 클릭하고 InteliJ Platform Plugin SDK 를 선택한다.

자바 폴더와 플러그인 폴더가 자동으로 선택된 상태에서 다이얼로그가 표시된다.
그냥 확인 버튼을 누르면 아래와 같이 SDK 가 로드 된다.

이로서 환경설정은 완료 되었다.

다음은 프로젝트를 어떻게 생성 하는지에 대해 포스팅을 하겠다.

프로젝트 생성 프로젝트를 생성하자.
Create New Project 를 선택하여 프로젝트를 생성 할 수 있다.

InteliJ Platform Plugin 을 선택하고 Next 를 클릭한다.

적당한 프로젝트 이름과 경로를 설정하고 Finish 를 선택한다.



LeakCanary

이미지
LeakCanary를 이용하여 메모리 릭을 정복하자. “A small leak will sink a great ship.” - Benjamin Franklin 적은 물이 새어 큰 배 가라앉힌다. 나는 PC 어플리케이션을 개발했었다. 당시 프로그래밍 습관으로는 new를 하면 delete를 꼭 한쌍으로 하였다. 그리고 delete 된 코드를 적절한 곳으로 이동 시켰다. 혹시라도 new를 하고 delete를 하지 않는 실수를 하여 leak를 발생시키지 않게 하기 위함이었다.

모바일 환경으로 전환을 하고 자바라는 언어를 접하고 한동안 언어의 이질감에 상당히 적응하기가 힘들었다. 내가 만든 인스턴스를 왜 내가 해제하지 못하는가? 가비지 컬렉터라는 것이 너무 귀찮고 불필요하고 개발자를 게으르게 하는 요인인 것 같았다. 그렇게 계속 자바에 길들어지고 지금은 가비지 컬렉터 환경에 너무 익숙해졌다.

그렇다고 가비지 컬렉터가 만능은 아니다. 개발을 할 때 항상 조심 또 조심해서 static으로 사용하지 않는 객체는 반드시 null 처리를 해 주어 가비지 컬렉터라 회수를 할 수 있게 신경 써야 한다. 또한 weak reference를 적절히 사용하여 메모리가 경계에 있을 때 OOM이 발생하지 않게 각별히 주의 해야 한다.

이런 것을 예전에는 이클립스 플러그인은 MAT로 관리할 수 있었지만(실제로는 난 잘 사용하지 않았다.) 얼마전 앱 자체에 심어 릭을 관리해 주는 모듈을 찾았다.



이미지 처럼 앱 내에서 메모리 릭을 감지하여 리포팅 해주는 툴 이다.

https://github.com/square/leakcanary

구글 선택 광고 해지하기

이미지
구글 웹 서핑 중 검색했던 내용과 관련있는 광고가 떠 기분이 상하는 경우가 있다.
뭔가 엿보고 있다는 느낌도 들고 이미 관심이 없어 졌는데 관련 광고가 주변을 맴돈다던가...

해당 기능을 끄는 설정이 있어 메모 해 둔다.

구글 계정 광고 설정으로 이동 한다.

이동 : www.google.com/settings/ads/authenticated

위 설정을 사용하지 않음으로 체크함

광고 해지 완료


안드로이드 스튜디오 캐시 오류

안드로이드 스튜디오에서 캐시오류가 발생하면 아래와 같이 처리

http://stackoverflow.com/questions/30749042/error-in-building-project-in-android-studio

구글 플레이에100Mb 이상의 파일 업로드

구글 플레이 100Mb 이상의 앱을 올릴 때 용량 제한으로 업로드 제한이 걸립니다.
구글 플레이에 업로드 제한을 아래와 같은 조건으로 우회 할 수 있습니다.
구글 플레이에 100Mb apk 파일을 업로드추가 main 2Gb 이하의 obb 파일 생성추가 patch 2Gb 이하의 obb 파일 생성 -------------------------------------------------------------------------총 4.10Gb 파일 업로드
이제부터 자세히 용량을 올리는 방법을 알아봅니다.
obb 파일을 생성합니다. obb 파일은 크게 2가지 타입으로 생성 할 수 있습니다.main변화가 거의 없는 확장 파일은 main 영역에 추가합니다.patch변화가 많은 파일은 patch 영역에 추가합니다. 생성 네이밍 룰은[main|patch].[expansion-version].[package-name].obb예를 들어 com.coolsharp.example 이라는 앱이 버전코드 1이라면main.1.com.coolsharp.example.obbjobb 파일 생성 obb 파일은 누구나 접근이 가능하므로 암호화를 지원하는 jobb 파일로 생성함jobb 는 구글 안드로이드 라이브러리에 포함되어 있음jobb [-d <directory>][-o <filename>][-pn <package>][-pv <version>]\[-k <key>][-ov][-dump<filename>][-v][-about] $ jobb -d /temp/assets/-o my-app-assets.obb -k secret-key -pn com.my.app.package-pv 11 OptionDescription

안드로이드 스튜디오를 설치 후 필수로 사용되는 플러그인

이미지
안드로이드 스튜디오 설치 후 필수 플러그인 목록안드로이드 스튜디오를 설치 후 필수로 사용되는 플러그인을 다음과 같이 정리하였습니다.


1. StringManipulation

문자열을 유용하게 처리해 준다.

주소 : https://plugins.jetbrains.com/plugin/2162

자세한 사용법은 아래 그림을 참고하자.

2. Android Studio Prettify
안드로이드 개발자라면 누구나 알겠지만 레이아웃 xml을 만들고 코드에서 해당 뷰를 제어하려면 findByViewId라는 단순 무식한 반복 작업을 해야만 한다. 누군가 대신 작업해줄 수 있다면 알바라도 고용해서 시키고 싶지만 다행히 누군가 같은 생각을 하여 그 작업을 해주게 플러그인으로 만들었다.
주소 : http://plugins.jetbrains.com/plugin/7405
자세한 사용법은 아래그림을 참고하자.

3. GradleDependenciesHelperPlugin
Gradle Dependencies 추가시 자동으로 완성한다.
주소 : https://github.com/ligi/GradleDependenciesHelperPlugin

민원 24의 ez PDF Reader

보안 머시기 하면서 오류로 인하여 소중한 1시간을 낭비함 기술이 부족한 것인지...

mac에서 안드로이드 리소스 자동 청소하기

mac에서 안드로이드 리소스 자동 청소하기
1. python 설치하기
2. android-resource-remover 설치하기
pip install android-resource-remover 3. 린트 실행
lint . --xml ./lint-result.xml 4. android-resource-remover

mac에 python 설치하기

brew install openssl brew link openssl --force brew uninstall python brew install python --with-brewed-openssl