게이들 안녕!
평소에 안드로이드를 좀 할줄알아서, 스스로도 다시 한번 공부해보는겸
안드로이드에대해 관심있는 게이들과 지식을 공유하는 겸 해서 강좌를 한번 써보려고해
반응이 안좋거나 내가 바빠지면 다음편은 없을지도 모르지만... 그래도 한번 열심히 해볼께
내가 글쓰는 솜씨가 좀 많이 안좋아서 읽기 불편할 수도 있는데 조금만 감안하고 봐줬으면 좋겠어 미안!
실력도 그닥 좋은 편이 아니라 설명이 틀릴수도 있어! 지적할게 보이는 게이들은 서슴없이 지적해줫으면 좋겠어!
다만 비난과 비방은 사양할께...ㅠㅠ
그럼 시작한다.
일단 안드로이드를 하려면 안드로이드 스튜디오를 설치하고 자바를 설치하고 환경변수 설정하고... 뭐 이런 작업이 필요해
이런건 네이버에 검색만해도 아주 알기 쉽게 설명되있기 때문에 넘어갈께
앞으로도 강좌는 주로 중요한 개념 위주로 할려고해 새 프로젝트를 만들어서 hello world를 출력한다... 이런건 블로그같은데서도
너무 많잖아? 그래서 중요 개념과 검색해도 잘 안나오는 방법들 혹은 어려운것들 이런거 위주로 할께!
1 - 1 안드로이드란?
먼저 안드로이드가 다들 뭔지는 어렴풋이 알지?
구글에서 만든 스마트폰용 OS야 애플의 iOS랑 경쟁하고있지
다만 전세계적으로 iOS보다 사용자는 더 많아.
그래서 안드로이드 어플을 만드는 사람도 iOS에 비하면 훨신 많지
국내에서도 외주일거리를 찾다보면 안드로이드는 거의 할일 찾기가 힘들어 iOS쪽에 비해서 말이지
어디서든 할수있는 사람이 넘쳐나거든;;; 좀 경쟁력에서 밀리는 감이 있지
하지만 그래서 배우기는 더 쉬워. 관련 라이브러리들이 iOS보단 확실히 넘쳐나거든
다른 스마트폰용 OS들로는 마소의 윈도우나 삼성의 타이젠이 있는데...
삼성의 타이젠같은 경우는 TV나 갤럭시 기어등에 쓰이고 있어 갤럭시 기어용 어플을 만들고 싶으면 타이젠을 공부해야 하지
삼성이 자사의 가전제품의 IOT화에 타이젠을 전부 기용할거 같더라고 그래서 타이젠을 배워보는것도 나쁘지는 않은거 같애
1 - 2 안드로이드의 구조
안드로이드는 기본적으로 오픈소스야
오픈소스는 말그대로 모든 소스코드를 공개했다는 것이지
PS Vita 알지? 이 비타의 OS도 안드로이드 기반으로 만들어졌어 그렇다고 안드로이드 어플이 동작하는건 아니지만
쨌든 아래 그림을 봐바
이 그림은 https://source.android.com 에 들어가면 볼수있어
안드로이드의 구조에 관한 그림이지
맨 아래에 리눅스 커널이 있는거 보이지? 안드로이드는 리눅스 기본 바탕으로 되어있어
그위에 런타임이니 뭐니 블록들이 많이있는데
그냥 리눅스 바탕으로 되어있다! 라는 정도만 알아둬
리눅스 위에 안드로이드 프레임워크가 올라가고, 그위에 어플리케이션들이 동작하지
리눅스는 마소의 windows 처럼 OS의 종류야
다만 윈도우보다 가볍고 오픈소스지 물론 윈도우보다 무조건 뛰어나거나 하진 않아!
더 많은 정보를 알고싶으면 직접 검색해보길 바래
1 - 3 안드로이드의 언어
안드로이드용 어플을 만드는데는 주로 Java 언어가 사용되고 있어
물론 어플 제작에 java만 쓸 수 있는건 아니야 C언어 등등도 사용할 수 있지
텔레그램이라는 어플 알아? 예전에 한창 모바일 메신저들의 보안에 대해 이슈가 되었을때 화제가 됬던 어플이야
이 어플은 기본적으로 오픈소스인데, 무려 C언어로 짜여져 있어!!
또 요새 뜨는 언어중에 코틀린이라는 언어가 있는데, java를 바탕으로 만든 언어야
앞으로 나올 안드로이드 스튜디오 3.0 버전에서 공식 언어중 하나로 채택되었고 java랑 100퍼센트 호환 된다고 해
이렇게 java말고 다양한 언어를 사용할 수도 있어
하지만 강좌는 물론 java를 기준으로 할꺼야 게임같은게 아니면 java만으로도 충분히 좋은 어플을 만들수 있거든
또한 다양한 안드로이드용 라이브러리들은 java를 기준으로 만들어져있어서 어플 만들기에도 더욱 편하지
java에 대해서도 기회가 되면 써보도록 할께
2 -1 안드로이드의 구성요소 - Activity(액티비티)
안드로이드에는 4대 구성요소라는게 있어 그중 가장 중요하다고 생각하는게 Activity야 Activity는 어플의 한 화면 그 자체라고 할 수 있어.
화면에 나타나는 여러 버튼,이미지 같은 View 의 구성요소 뿐만 아니라 해당 화면이 어떻게 동작할지에 대한 코드들도 담고있지
1개의 어플리케이션은 무조건 1개 이상의 Activity는 있어야되 어플리케이션이 프로그램의 껍질이라면 Activity는 프로그램의 속 알맹이라고 볼 수 있지
Activity가 특별한 있는 이유는 Context라는것을 가지고 있기 때문인데 이 Context가 참 중요한데 설명하기가 어려워
Context는 크게 2가지 기능이 있는데, 하나는 안드로이드의 시스템 정보에 접근하는 것이고 하나는 시스템 Api을 불러오는 것 이야
좀 말이 어렵지? 좀 쉽게 설명하면 버튼, 이미지 같은 View의 정보를 가져올때 쓰는거야. 물론 그것만 하는건 아니고
Context는 직접 해보면서 이해햐는게 더 쉬우니까 앞으로 코딩부분이 나오면 꼭 집고 넘어가도록 할게. 지금은 그냥 그런 중요한게 있다~ 정도로만 알면되
2 -2 Activity의 생명주기
다음 그림을 봐줘
이건 내가 가끔씩 참고하는 그림이야. Activity에는 생명주기라는게 있고 생명주기에 맞춰서 동작해
생명주기를 나누는 기준이 뭐냐? 바로 해당 Activity가 현재 디바이스 화면에 보이냐 아니냐야
먼저 Activity가 처음 생성되면 onCreate가 실행되. Activity를 생성할때 딱 한번만 동작하지 java 클래스의 생성자와 비슷해
그래서그런지 Activity에는 생성자가 따로 없어
그후 onStart onResume 순으로 동작하고 화면에 보여지게되
앱을 닫는다거나 화면을 끈다거나 다른 액티비티가 실행된다거나 하면 onPause로 넘어가
여기서 중요한것은 한개의 어플리케이션에선 단 한개의 Activity만 동작중이라는 거야.
한개의 어플리케이션에 여러개의 Activity를 가지고 있을 수는 있어. 다만 실행되는것은 1개뿐이라는거지
그래서 다른 Activity(다른 화면)을 실행시키면 동작하던 Activity는 바로 onPause로 넘어가.
다음 코드를 보자
public class test extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//생성될때 처음만
}
@Override
protected void onResume() {
super.onResume();
//생성될때 & 다시 시작될때
}
@Override
protected void onPause() {
super.onPause();
//화면에서 사라졌을때
}
@Override
public void finish() {
super.finish();
//없어질때
}
}
아까말한 onCreate 같은 것들이 있지? 해당 생명주기에 해당 메소드들이 동작해서 그 안에 코드들이 작동하는거야
위에 적어놓은것들은 내가 주로 쓰는것들인데, finish()만 위 그림에 없지? finish를 호출하면 액티비티를 종료하는 절차가 진행되. 기본적으로 onDestory보다 안정적이고
public 속성이기에 다른 클래스에서도 호출이 가능하지... static이 아니더라도 Context를 사용해서 호출이 가능해 이부분도 나중에 설명할게
이번편은 여기까지만하고 안드로이드 스튜디오를 사용하는데 미세팁 하나만 알려주고 끝낼게
안스에서 코딩하는 화면이야 여기서 ctrl + o를 누르게 되면...
이렇게 Override/Implement 한 클래스의 호출할 수 있는 메소드들이 나오고 쉽게 호출할수 있지!
다음편에선 Activity로 간단하게 화면 하나 만들어보고, java의 클래스와 안드로이드의 클래스 구조에 대해 설명할게
다양한 의견이 있으면 댓글로 남겨주면 감사하겠어!
화울
담요
화울
담요
라이프사이클도 완전 이해는못해도 개념정도는 알수있지 않을까 싶었는데 역시좀 어려울려나
화울
보통 이런건 완전 초보자들을 대상으로 하는데. 보통은 자바는 할줄 아는 초보자들을 대상으로 하지.... 남한테 뭘 가르친다는게
타겟 잡는것부터 어려운것 같아.
담요
인생게임26위
어랏
다른애 말처럼 라이프사이클이니 뭐니 그런거 전혀 노관심
안드로이드라면 스맛폰에 뭐 띄워서 신기한거 만드는게 더 중요한거지
누구신교
재부팅하고나면 고치기전으로 되버리는데 왜이러는거냐
담요
누구신교
영어 딸리니 되는게 없다 어휴
퍼시픽블루
되랑 돼 구분좀...
번쌋당
씨발씨발씨발
붉은제로
GRASP
GRASP
커널이니 프레임워크니 운영체제나 자바같은 언어 한번쯤 배워봐야 듣는단어인데 설명조차 없네
벽돌햄
엔젤릭버스터
대 닥터
담요
ios공부하고싶은데 돈이없엉....
EBEL
대학교1학년끝내고 휴학중인데 이제 뭘해보는게 좋을지 물어봐도됨?
담요
EBEL
담요
하지만 본문에도써놨듯이 안드만하는건 전혀 경쟁력없어
뭘공부하는게좋을지라...
정답은 하고싶은거 재밌는거 하는게 정답이야
프밍은 다른분야보다 바뀌는시기가 매우빠르기때문에 능동적으로 공부하는 자세가 중요해 그래야지 밥은겨우 벌어먹는거같아
그래서 프밍 자체에 흥미를 느끼고 빠져야지.... 억지로 공부하면 못해
그래도 할만한 분야는 서버나 디비쪽? 요새뜨는 빅데이터나 아이오티?
ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
담요
ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
담요
안드로이드 OS 자체를 뜯어고치고싶다면(특히 하드웨어랑 연관되는 부분을) 해야겠지
안드로이드 어플을 짤때 리눅스 부분은 아예 몰라도 돼
그냥 리눅스 바탕이다 정도 알아두기만 해도 충분해
ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
담요
루팅을 공부하던가 할꺼 아니라면 필요없어... 루팅(rooting)이라는게, 리눅스에서 관리자 계정을 보통 root라고 하거든 그래서 관리자 권한을 얻는 다는 뜻으로 rooting인거야 안드로이드가 리눅스 바탕이라 나온 단어거든
위 그림을 보면 리눅스 위에 HAL이란게 있지? 그게 간단하게 하드웨어랑 연결하는 부분 이라고 생각하면되 윈도우의 드라이버 정도 될라나?
안드로이드에서 리눅스를 다룬다는 뜻은 바로 안에 하드웨어를 맘대로 쥐락펴락하겠다는 뜻이거든.. 그래서 루팅하면 온갖 안되던게 되는거지
루팅하거나 OS를 뜯어고치거나 할꺼 아니면 상관할 필요도 없는거지
담요
그거에 만족 못하면 루팅해서 건들어야겠지
담요
인식한 지문이 기기에 등록된 지문인지 아닌지만 판단해서 주거든... 근데 기기에 등록된 지문 값 자체를 얻고싶다?
그럼 뜯어야지
ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
담요