1. android 폴더에 들어가서 ./gradlew assembleRelease 을 하면 빌드가 뿅 된다!
  2. 빌드가 끝났으면 /android/app/build/outputs/apk/release 위치로 간다!
  3. 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는 프레임워크처럼 보이지만, 어느 사이트에든 필요시 갖다붙일 수 있는 라이브러리이다

1. gradle이란?


앱 서명 키는 따로 설정하지 않고 구글이 해주는 대로 설정한다.