블로그 이미지
평범하게 살고 싶은 월급쟁이 기술적인 토론 환영합니다.같이 이야기 하고 싶으시면 부담 말고 연락주세요:이메일-bwcho75골뱅이지메일 닷컴. 조대협


Archive»


 

'컴파일'에 해당되는 글 2

  1. 2015.06.21 안드로이드 프로그래밍 구조의 기본 (2)
  2. 2015.04.02 grpc 설치하기
 

안드로이드 프로그래밍 구조의 기본


조대협 (http://bcho.tistory.com)


해당 포스팅은 https://class.coursera.org/androidpart1-005/lecture/13 의 내용을 바탕으로 정리하였습니다


안드로이드 애플리케이션의 주요 구성 요소

안드로이드 애플리케이션을 이루는 주요 구성 요소는 크게 다음 4가지이다.


  • Activity : 가장 메인이 되는 컴포넌트로, 모바일 앱의 특성상, 모바일앱은 하나의 UI가 떠서 사용자로 부터 입력을 받고, 출력을 담당한다. 즉 하나의 화면 인터페이스에 해당한다고 보면된다.
  • Service : 백그라운드에서 도는 컴포넌트로 UI가 없이 동작한다. 가장 쉬운 예로 음악 플레이 처럼 화면이 없는 상태에서 백그라운드로 도는 케이스가 가장 대표적인 예이다.
  • BroadCastReceiver : 이벤트를 처리하는 컴포넌트로, 안드로이드의 Intent를 받아서 처리한다. 이 Intent는 Pub/Sub형태로 바인딩되며, 특정 intent가 발생하면, 이를 subscribe하는 BroadCastReceiver가 이를 받아서 처린한다.
  • ContentsProvider : ContentsProvider는 일종의 Database를 추상화 해놓은 개념으로 , 단순히 데이타를 저장하는 것 뿐만 아니라, 저장된 데이타를 다른 앱간에 공유하는 기능도 지원한다.
안드로이드 빌드 & 배포 프로세스
안드로이드 프로젝트는 어떻게 빌드 및 패키징 되서, 단말에서 동작할까.
안드로이드 프로젝트를 빌드하게 되면 코드 컴파일 작업이 수행되고, 컴파일 후에는 컴파일된 코드 이외에 리소스를 포함하여 *.apk라는 파일로 패키징이 된다.
  • 패키징된 파일안에는 코드를 컴파일한 내용인 *.dex 파일이 생성되고
  • 컴파일된 리소스 파일이 *.arsc라는 파일로 저장된다.
  • 그리고 컴파일 되지 않은 리소스 (무엇일까?)가 같이 저장되고
  • 안드로이드 애플리케이션의 설정을 지정하는 AndoridManifest.xml 파일이 저장된다.

출처 : http://developer.android.com/tools/building/index.html


다음으로, 이  apk 파일을 싸이닝을 한다. 싸이닝(Signing)이란, 키를 이용하여 이 APK에 서명을 하는 작업으로, 이 APK 가 변조되었을 경우 서명 값이 틀려지게 되는데, 싸이닝은 apk가 타인에 의해서 위변조 되는 것을 방지하고, 내가 이 애플리케이션을 만들었다는 표시를 하는 과정이다. (나중에 애플리케이션이 업데이트가 되면 같은 키로 싸이닝을 해서, 내가 만든 애플리케이션임을 증명한다.)




본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요

  1. 2015.06.22 12:11  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  2. 2019.04.25 08:33  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

grpc 설치하기

프로그래밍 | 2015.04.02 02:11 | Posted by 조대협

Google RPC 설치하기

(조대협 http://bcho.tistory.com)


지난 GRPC 소개에 이어서 오늘은 JAVA에서 GRPC를 사용하기 위한 설치 방법을 설명한다.


  • https://github.com/grpc/grpc-common/tree/master/java
  • https://github.com/grpc/grpc-common
  • https://github.com/grpc/grpc-common/blob/master/java/javatutorial.md
  • https://github.com/grpc/grpc-java


글들을 참고하였으며, 컴파일 환경 설정등을 위해서 생각보다 시간이 많이 소요된다. (삽질,Visual Studio 설치 포함 한 2~3시간 걸린듯)


grpc hello world / java





grpc-java 설치하기

https://github.com/grpc/grpc-java#how-to-build 를 참고


준비 : java 8, maven 3.2.x,gradle 2.3 필요


1. 코드 받기

 C:\dev\libs> git clone https://github.com/grpc/grpc-java


2. 관련 라이브러리 설치


1) Netty 4.1 설치

grpc-java는 Netty 4.1에 기반함. 아래절차에 따라서 설치한다.

cd C:\dev\libs\grpc-java>

$ git submodule update --init

$ cd lib/netty

$ mvn install -pl codec-http2 -am -DskipTests=true


2) Protocolbuf 3.0.0-alhpa-2 설치 (windows)

안타깝게도 알파버전이라 윈도우즈용 인스톨 바이너리가 없다. 소스 받아서 직접 컴파일해야 한다.

윈도우 환경에서는 C/C++ 컴파일러가 필요하니까는 간단하게 Visual Studio 무료 버전을 깔자 https://www.visualstudio.com/en-us/products/free-developer-offers-vs.aspx

(무료 버전 제공)

다음은 c:\dev\lib\protobuf에 설치 하는 순서이다.


C:\dev\libs>git clone https://github.com/google/protobuf.git


다음으로, C:\dev\libs\protobuf\vsprojects 에 들어가면 visual studio 프로젝트 파일이 있음

VC로 Release 빌드하면 됨. (이때 반드시, Release 모드로 빌드할것, Debug 모드로 빌드하면 나중에 grpc-java 빌드할때 링크에러남). Test 코드 빌드하다가 에러가 나는데 무시하자. 테스트 코드가 안들어가 있다.


빌드 후, C:\dev\libs\protobuf\vsprojects 아래에 readme.txt를 보고 따라할것


C:\dev\libs\protobuf\vsprojects\Release 에 빌드 결과가 생김

안에 protoc.exe가 생김



3. grpc-java 설치


위에서 만든 protoc.exe를 path가 있는 디렉토리에 복사하거나.

본인의 경우에는 위의 디렉토리 자체를 다 PATH에 걸어버렸다. (연관 라이브러리들이 있어서리)

다음으로 grpc-java를 설치하자


앞에서 받은 grpc-java 디렉토리로 가서

$ gradlew install -Pprotobuf.include=C:\dev\libs\protobuf\src  -Pprotobuf.libs=C:\dev\libs\protobuf\vsprojects\Release


여기까지 했으면 grpc 설치가 완료되었다. 실제로 동작하는지 확인하려면, 예제 코드를 돌려보면 되는데, 실행 방법은 다음과 같다. 


서버 실행

gradlew :grpc-examples:helloWorldServer -Pprotobuf.include=C:\dev\libs\protobuf\src  -Pprotobuf.libs=C:\dev\libs\protobuf\vsprojects\Release



클라이언트 실행

gradlew :grpc-examples:helloWorldClient -Pprotobuf.include=C:\dev\libs\protobuf\src  -Pprotobuf.libs=C:\dev\libs\protobuf\vsprojects\Release


실행시 위와 같이 protocol buf lib 위치와 소스 위치를 지정해야 하는데, 매번 지정하기 귀찮다면 다음과 같이 환경 변수로 넣어놓아도 된다.

Since specifying those properties every build is bothersome, you can instead create %HOMEDRIVE%%HOMEPATH%.gradle\gradle.properties with contents like:

protobuf.include=C:\\path\\to\\protobuf-3.0.0-alpha-2\\src

protobuf.libs=C:\\path\\to\\protobuf-3.0.0-alpha-2\\vsprojects\\Release


'프로그래밍' 카테고리의 다른 글

gRPC Channel  (0) 2018.11.23
구글 프로토콜 버퍼 (Protocol buffer)  (3) 2017.06.25
grpc 설치하기  (0) 2015.04.02
grpc (google rpc)에 대한 분석 #1  (0) 2015.04.01
구글의 HTTP 기반의 RPC 프로토콜 GRPC  (1) 2015.03.31
국내 자바 MVC 프레임웍 사용 현황  (5) 2009.11.11
본인은 구글 클라우드의 직원이며, 이 블로그에 있는 모든 글은 회사와 관계 없는 개인의 의견임을 알립니다.

댓글을 달아 주세요