기타 지식

(스압,0.3M) 안드로이드 핵심강좌 1 - 안드로이드란?

게이들 안녕!

평소에 안드로이드를 좀 할줄알아서, 스스로도 다시 한번 공부해보는겸

안드로이드에대해 관심있는 게이들과 지식을 공유하는 겸 해서 강좌를 한번 써보려고해

반응이 안좋거나 내가 바빠지면 다음편은 없을지도 모르지만... 그래도 한번 열심히 해볼께

내가 글쓰는 솜씨가 좀 많이 안좋아서 읽기 불편할 수도 있는데 조금만 감안하고 봐줬으면 좋겠어 미안!


실력도 그닥 좋은 편이 아니라 설명이 틀릴수도 있어! 지적할게 보이는 게이들은 서슴없이 지적해줫으면 좋겠어!


다만 비난과 비방은 사양할께...ㅠㅠ


그럼 시작한다.




일단 안드로이드를 하려면 안드로이드 스튜디오를 설치하고 자바를 설치하고 환경변수 설정하고... 뭐 이런 작업이 필요해

이런건 네이버에 검색만해도 아주 알기 쉽게 설명되있기 때문에 넘어갈께

앞으로도 강좌는 주로 중요한 개념 위주로 할려고해 새 프로젝트를 만들어서 hello world를 출력한다... 이런건 블로그같은데서도

너무 많잖아? 그래서 중요 개념과 검색해도 잘 안나오는 방법들 혹은 어려운것들 이런거 위주로 할께!



1 - 1 안드로이드란?

먼저 안드로이드가 다들 뭔지는 어렴풋이 알지?

구글에서 만든 스마트폰용 OS야 애플의 iOS랑 경쟁하고있지

다만 전세계적으로 iOS보다 사용자는 더 많아.

그래서 안드로이드 어플을 만드는 사람도 iOS에 비하면 훨신 많지

국내에서도 외주일거리를 찾다보면 안드로이드는 거의 할일 찾기가 힘들어 iOS쪽에 비해서 말이지

어디서든 할수있는 사람이 넘쳐나거든;;; 좀 경쟁력에서 밀리는 감이 있지

하지만 그래서 배우기는 더 쉬워. 관련 라이브러리들이 iOS보단 확실히 넘쳐나거든

다른 스마트폰용 OS들로는 마소의 윈도우나 삼성의 타이젠이 있는데...

삼성의 타이젠같은 경우는 TV나 갤럭시 기어등에 쓰이고 있어 갤럭시 기어용 어플을 만들고 싶으면 타이젠을 공부해야 하지

삼성이 자사의 가전제품의  IOT화에 타이젠을 전부 기용할거 같더라고 그래서 타이젠을 배워보는것도 나쁘지는 않은거 같애



1 - 2 안드로이드의 구조

안드로이드는 기본적으로 오픈소스야

오픈소스는 말그대로 모든 소스코드를 공개했다는 것이지

PS Vita 알지? 이 비타의 OS도 안드로이드 기반으로 만들어졌어 그렇다고 안드로이드 어플이 동작하는건 아니지만

쨌든 아래 그림을 봐바



unnamed.png



이 그림은 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_lifecycle.png

이건 내가 가끔씩 참고하는 그림이야. 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를 사용해서 호출이 가능해 이부분도 나중에 설명할게


이번편은 여기까지만하고 안드로이드 스튜디오를 사용하는데 미세팁 하나만 알려주고 끝낼게

제목 없음22.png


안스에서 코딩하는 화면이야 여기서 ctrl + o를 누르게 되면...


제목 없음222.png


이렇게 Override/Implement 한 클래스의 호출할 수 있는 메소드들이 나오고 쉽게 호출할수 있지!



다음편에선 Activity로 간단하게 화면 하나 만들어보고, java의 클래스와 안드로이드의 클래스 구조에 대해 설명할게


다양한 의견이 있으면 댓글로 남겨주면 감사하겠어!



35개의 댓글

2017.06.20
이거 안드로이드를 아는 사람만 이해할 수 있겠는걸?;;;
0
2017.06.20
@화울
더 쉽게써야하나 그럼 java서부터 가야할꺼같은데....
0
2017.06.20
@담요
라이플 사이클이나 override니 implement니 하는걸 초보자가 듣고 아! 하고 알순 없겠지.
0
2017.06.20
@화울
일부로 완전 초보자용으로 쓰진않았어 특히 미세팁부분은.... 초보자든 아니든 뭔가 얻어가는게 있었으면 좋겠다 싶었거든
라이프사이클도 완전 이해는못해도 개념정도는 알수있지 않을까 싶었는데 역시좀 어려울려나
0
2017.06.20
@담요
타겟을 정확하게 잡아야할것 같아. 극초보자인지 좀 할 줄 아는데 더 배워야하는 사람인지, 다 배웠는데 다시 배울 사람인지..
보통 이런건 완전 초보자들을 대상으로 하는데. 보통은 자바는 할줄 아는 초보자들을 대상으로 하지.... 남한테 뭘 가르친다는게
타겟 잡는것부터 어려운것 같아.
0
2017.06.20
@화울
음 그러게... 좀 어렵다... 조언 고마워 참고하도록 할게!
0
2017.06.21
@담요
내생각에는 적어도 대학교 3학년은 되야 이해할듯싶다
0
2017.06.20
글쎄.. 초보자에게는 호기심이 끌리고 단순한게 좋은데
다른애 말처럼 라이프사이클이니 뭐니 그런거 전혀 노관심
안드로이드라면 스맛폰에 뭐 띄워서 신기한거 만드는게 더 중요한거지
0
2017.06.21
루팅했는데 시스템내에 빌드프롭같은거 글자몇개 고쳤는데
재부팅하고나면 고치기전으로 되버리는데 왜이러는거냐
0
2017.06.21
@누구신교
글쎄 루팅은 기기별로 경우의 수가 너무 많아서 잘 모르겠다;; 관련 커뮤니티에서 물어보는게 더 빠를듯
0
2017.06.21
@담요
알아냈다 슈발... 사용중인 커널에 프로텍션 걸려서 바꾸는 족족 원복시키고있었네 ㅅㅂ
영어 딸리니 되는게 없다 어휴
0
2017.06.21
다 좋은데
되랑 돼 구분좀...
0
2017.06.21
view에 대한 설명이없는걸 보고 기본지식있는 사람대상인줄알았는데
0
2017.06.21
오므라이스에 마요네즈는 좀 아닌 것 같아...
0
2017.06.21
@씨발씨발씨발
응? 글을 잘못 찾은 것 같은데
0
2017.06.21
대충 초반부 읽다가 스크롤 다내렸는데 검색하라는 소리밖에 못본듯 ㅂㅁ
0
2017.06.21
@GRASP
그리고 이미 공부한사람 말고는 알아듣지도 못하게 해놨네

커널이니 프레임워크니 운영체제나 자바같은 언어 한번쯤 배워봐야 듣는단어인데 설명조차 없네
0
2017.06.21
어... 프로그래머 공돌이들 대단하다
0
2017.06.21
일단 ㅊㅊ
0
2017.06.21
iOS 짱! iOS11 기대된당!!
0
2017.06.21
@대 닥터
다좋은데 제발 다른 os에서도 앱만들수있게좀 해줬으면
ios공부하고싶은데 돈이없엉....
0
2017.06.22
지금 나도 안드로이드랑 자바 공부하고있고 군대땜에
대학교1학년끝내고 휴학중인데 이제 뭘해보는게 좋을지 물어봐도됨?
0
2017.06.22
@EBEL
뭘 물어보고 싶은데?
0
2017.06.22
@담요
그냥 앞으로 뭘 공부하는게 좋은지 궁금함 자바랑 안드로이드 공부하면 취직할때 어느쪽으로 취직이가능함?
0
2017.06.23
@EBEL
안드로이드 공부하면 당연 앱만드는데 취직하겠지?
하지만 본문에도써놨듯이 안드만하는건 전혀 경쟁력없어
뭘공부하는게좋을지라...
정답은 하고싶은거 재밌는거 하는게 정답이야
프밍은 다른분야보다 바뀌는시기가 매우빠르기때문에 능동적으로 공부하는 자세가 중요해 그래야지 밥은겨우 벌어먹는거같아
그래서 프밍 자체에 흥미를 느끼고 빠져야지.... 억지로 공부하면 못해
그래도 할만한 분야는 서버나 디비쪽? 요새뜨는 빅데이터나 아이오티?
0
[삭제 되었습니다]
0
2017.06.22
@ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
안해도 돼~
0
@
[삭제 되었습니다]
0
2017.06.22
@ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
리눅스 커널 바탕으로 돌아가는거지, 리눅스가 아니거덩
안드로이드 OS 자체를 뜯어고치고싶다면(특히 하드웨어랑 연관되는 부분을) 해야겠지
안드로이드 어플을 짤때 리눅스 부분은 아예 몰라도 돼
그냥 리눅스 바탕이다 정도 알아두기만 해도 충분해
0
@
[삭제 되었습니다]
0
2017.06.22
@ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
ㅇㅇ 맞아
루팅을 공부하던가 할꺼 아니라면 필요없어... 루팅(rooting)이라는게, 리눅스에서 관리자 계정을 보통 root라고 하거든 그래서 관리자 권한을 얻는 다는 뜻으로 rooting인거야 안드로이드가 리눅스 바탕이라 나온 단어거든
위 그림을 보면 리눅스 위에 HAL이란게 있지? 그게 간단하게 하드웨어랑 연결하는 부분 이라고 생각하면되 윈도우의 드라이버 정도 될라나?
안드로이드에서 리눅스를 다룬다는 뜻은 바로 안에 하드웨어를 맘대로 쥐락펴락하겠다는 뜻이거든.. 그래서 루팅하면 온갖 안되던게 되는거지
루팅하거나 OS를 뜯어고치거나 할꺼 아니면 상관할 필요도 없는거지
0
2017.06.22
@ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
센서같은거 읽어오는거는 안드로이드상에서 기본적으로 어느정도 제공하는게 있어 ㅇㅇ 굳이 리눅스 안파도 돼
그거에 만족 못하면 루팅해서 건들어야겠지
0
2017.06.22
@ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
예를들면 지문인식, 안드로이드에서 지문인식값을 제공하기는 하는데 지문 자체를 구분한 값을 주진 않아
인식한 지문이 기기에 등록된 지문인지 아닌지만 판단해서 주거든... 근데 기기에 등록된 지문 값 자체를 얻고싶다?
그럼 뜯어야지
0
@
[삭제 되었습니다]
0
2017.06.22
@ᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚᅚ
나도 이쪽을 자세히 보진 않아서 잘은 모르겠어 다만 설명이 그렇게 써있드라고... 윈도우 쓸때 윈도우를 먼저 깔고 그위에 하드웨어 드라이브가 올라가잖아? 그런식이 아닐까 정도로 이해했거든 자세한건 위 링크에 한번 들어가서 봐바 ㅇㅇ 아님 구글링 해보는게 더 나을꺼야! 사실 난 그리 실력좋은 놈은 아니거든 ㅎㅎ
0
무분별한 사용은 차단될 수 있습니다.
번호 제목 글쓴이 추천 수 날짜
5242 [기타 지식] 100년을 시간을 넘어서 유행한 칵테일, 사제락편 - 바텐더 개... 3 지나가는김개붕 1 1 일 전
5241 [기타 지식] 오이...좋아하세요? 오이 칵테일 아이리쉬 메이드편 - 바텐더... 3 지나가는김개붕 2 3 일 전
5240 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 지구 1부 30 Mtrap 10 3 일 전
5239 [기타 지식] 칵테일의 근본, 올드 패션드편 - 바텐더 개붕이의 술 이야기 15 지나가는김개붕 13 4 일 전
5238 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 2부 21 Mtrap 14 3 일 전
5237 [기타 지식] 웹툰 나이트런의 세계관 및 설정 - 인류 1부 13 Mtrap 20 4 일 전
5236 [기타 지식] 서부 개척시대에 만들어진 칵테일, 카우보이 그리고 프레리 ... 3 지나가는김개붕 5 8 일 전
5235 [기타 지식] 모던 클래식의 현재를 제시한 칵테일편 - 바텐더 개붕이의 술... 4 지나가는김개붕 2 9 일 전
5234 [기타 지식] 브라질에서 이 칵테일을 다른 술로 만들면 불법이다, 카이피... 5 지나가는김개붕 1 11 일 전
5233 [기타 지식] 럼, 라임, 설탕 그리고 다이키리 편 - 바텐더 개붕이의 술 이... 2 지나가는김개붕 6 11 일 전
5232 [기타 지식] 1999년 도카이촌 방사능누출사고 대량 방사능 피폭 피해자들 ... 9 ASI 5 12 일 전
5231 [기타 지식] 진짜 레시피는 아무도 모르는 칵테일 싱가포르 슬링편 - 바텐... 3 지나가는김개붕 2 12 일 전
5230 [기타 지식] 통계로 보는 연애 상황에서 외모의 중요성 8 개드립에서가장긴... 11 15 일 전
5229 [기타 지식] 추울 수록 단맛이 유행한다, 위스콘신 스타일 올드 패션드편 ... 1 지나가는김개붕 8 16 일 전
5228 [기타 지식] '얼마나 걸릴까?'를 찾는데 걸린 시간은.. 1 동부전선이상무 5 16 일 전
5227 [기타 지식] '누구나 아는' 노래에 대한 이야기 9 동부전선이상무 20 20 일 전
5226 [기타 지식] 알코올 중독에 빠질 수 있는 칵테일, 브랜디 알렉산더편 - 바... 2 지나가는김개붕 5 23 일 전
5225 [기타 지식] 세계에서 제일 잘 팔리는 칵테일 중 하나, 위스키 사워편 - ... 2 지나가는김개붕 3 24 일 전
5224 [기타 지식] 왜 나는 독일을 포기하고 캐나다로 왔는가 32 상온초전도체 20 24 일 전
5223 [기타 지식] 독한 칵테일의 대표, 파우스트편 - 바텐더 개붕이의 술 이야기 5 지나가는김개붕 3 24 일 전