- android 폴더에 들어가서
./gradlew assembleRelease
을 하면 빌드가 뿅 된다! - 빌드가 끝났으면 /android/app/build/outputs/apk/release 위치로 간다!
- app-release.apk를 압축해서 카톡으로 보낸다. 끝!
.
.
.
내가 아는 빌드란 오직 이 세단계 뿐이었다.
입력하라는대로 입력만 하면 apk 파일이 뿅 나타났고, 그냥 그렇게 썼다.
만약 빌드가 실패한다면? 이유는 모르겠고 무작정 도움을 요청했다.
gradle이 뭔지도 모르고, 내가 어떤 환경에서 작업을 한건지도, 어떤 코드를 짠건지도 몰랐다.
들어가기 전, 기초적인 개발 용어 🚧
- 디버그
- 소프트웨어에 발생하는 문제의 원인을 찾는 것.
그래서
디버그
라는 용어는,배포
라는 단어와 대비해서개발중
이라는 의미로 쓰이기도 한다. 초창기 컴퓨터는 컴퓨터에 벌레가 들어가서 오류를 일으켰기 때문에 이 debugging이라는 단어가 만들어진 것. 때문에 프로그램이 복잡해질 수록 디버깅을 하는 방식도 다양해진다. visual studio, Eclipse, IntelliJ 등 코딩 시 사용되는 프로그램에는 프로그래머의 디버깅을 도와주는 기능이 갖춰져있다.(e.g. breaking point)
- 소프트웨어에 발생하는 문제의 원인을 찾는 것.
그래서
- 컴파일러 vs 인터프리터
- 컴퓨터가 알아듣는 명령어는 0과 1의 조합으로 되어있다. 하지만 사람이 알아들을 수 없음!
- 사람이 알아듣기 위해서, 오늘날 사용되는 프로그래밍 언어들은 사람이 보기 쉽게 설계되어있다.
- 이 코드를 컴퓨터가 알아보게 하기 위해서 이것을 기계들의 언어로, 혹은 중간단계로 번역해주는 작업이 필요하다!
- 컴파일러
출시 전에 번역하는컴파일
- 인터프리터
실시간 번역하는인터프리터
- 번역을 미리 해두면
컴파일러
, 그때그때 하면인터프리터
- C, C++, JAVA 등의 언어들은 개발자가 코딩을 마치고 완성된 프로그램을 출시하는 단계에서 컴퓨터에게 번역 =
컴파일
을 시킨다. - JS, Python, Ruby 등의 언어들은 개발자가 작성한 코드를 그때그때 가져가서 실시간으로 번역 =
인터프리터
한다.- 그때그때 코드를 읽고 번역해야하기 때문에 실행속도는 비교적 느리다.
- 프로그래머의 코드가 그대로 배포되기 때문에 코드가 그대로 노출됨
- 빌드
- 개발자가 작성한 코드와 라이브러리들, 이미지나 기타 소프트웨어에 필요한 파일들을 출시할 때
다른 형태로 변형
하는 것. - 목적은 다양함.
- 사용자가 바로 실행할 수 있는 파일 하나로 제공하는 경우
- 프로그래밍 코드들을 압축해서 전체 크기를 줄이는 경우
- 타인이 코드를 못알아보도록 난독화하는 경우
- 컴파일 언어로 만드는 소프트웨어는, 빌드에 컴파일 작업이 포함됨
- 작업한 프로젝트 파일을 출시에 적합한 형태로 포장하는 것이 바로
빌드
- 개발자가 작성한 코드와 라이브러리들, 이미지나 기타 소프트웨어에 필요한 파일들을 출시할 때
- 배포
- 코딩해서 빌드한 결과물을 사용자에게
전달
하는 과정. - 모바일 앱 : 스토어에 올리는 것
- 웹 : 서버에 올리고 실행해서 사람들이 볼 수 있게
작업한 바를 반영
하는 것.
- 코딩해서 빌드한 결과물을 사용자에게
- 환경변수
환경
이란, 소프트웨어가 동작하는 공간. 컴퓨터.환경 변수
란, 그 컴퓨터마다 지정된 값.- 다양한 용도로 각 환경마다 값을 다르게 지정한다.
- 환경마다 다른 위치에 있어도 가능.
- 개발할 땐 dev(개발용) prod(배포용)이라는 환경변수가 사용되는데, 이 환경변수를 사용해서 개발용일 때만 보여야할 코드를 배포할 때마다 지울 필요 없이 안보이게 할 수 있다.
- 보안코드 대신 환경변수 호출로 인한 보안 유지 가능.
- 라이브러리 vs 프레임워크
- 라이브러리(e.g. 마더보드에 끼워넣는 부품)
- 특정 기능들이 함수나 클래스 등의 형태로 공개돼서 이를 가져다가 내 소프트웨어에 붙여넣어 사용할 수 있는 것.
- 어떤 소프트웨어든 필요시 가져다 붙여넣을 수 있도록 모듈화된 코드, 또는 그 묶음.
- 집을 지을 때 사용하는 각각의 자재들
- 프레임워크(e.g. 마더보드)
- 기본 골격을 갖춘 집 조립 키트!
- 소프트웨어의 기초 설계가 프로그래밍 되어 있음. (스프링, 장고, .NET, 라라벨, Express, Vue)
- 이 프레임워크(골격) 위에 라이브러리(기능,부품)와 내가 코드들을 얹어서 서비스를 만드는 것.
- 어떤 것 안에서, 그것의 규칙에 따라 만든다 =
프레임워크
- 어떤 것을 가져다가 만든다면 =
라이브러리
- React는 프레임워크처럼 보이지만, 어느 사이트에든 필요시 갖다붙일 수 있는 라이브러리이다
- 라이브러리(e.g. 마더보드에 끼워넣는 부품)
1. gradle이란?
앱 서명 키는 따로 설정하지 않고 구글이 해주는 대로 설정한다.