apk 빌드시 CPU 타입(arm64-v8a, armeabi-v7a, x86, x86_64 등)에 따라 분리해서 빌드하는 방법

|

apk를 빌드할 때 모든 CPU 타입이 아닌, 원하는 타입에 대한 바이너리만 빌드할 수 있게 해주는 build.gradle 설정입니다. 전체 apk 용량도 줄어들기 떄문에 빌드 및 설치 시간도 단축이 됩니다.


build.gradle

프로젝트가 아닌 모듈의 build.gradle 파일 설정입니다.

android {
    
    ...

    splits {
        abi {
            enable true
            reset()
            include "arm64-v8a", "armeabi-v7a"
            universalApk false
        }
    }
}

apt 목록 제거하기

|

apt 목록 제거

여러 프로그램들을 설치하다보면 apt update 목록에 원하지도 않는 목록들이 추가되서 너덜너덜해지는 경우가 생깁니다. 그 중에 어떤 목록은 더 이상 유효하지 않아서 지우고 싶은 경우도 생기구요.

/etc/apt 위치에 가면 해당 서버들의 리스트를 가져올 수 있습니다.

gRPC(C++) 설치 방법

|

gRPC 설치 방법

Ubuntu 18.04 기준 C++용 gRPC 설치 방법입니다. 다른 언어에 비해 설치 방법이 조금 더 까다롭습니다.


필요 패키지 설치

sudo apt-get install build-essential autoconf libtool pkg-config
sudo apt-get install libgflags-dev libgtest-dev
sudo apt-get install clang-5.0 libc++-dev
sudo apt-get install libunwind-dev
sudo apt-get install golang


CMake 업데이트

오래된 버전의 cmake 명령어로는 gRPC 설치가 완벽하게 되지 않을 수 있습니다. 특히, /usr/local/lib/cmake/grpc/gRPCTargets.cmake 파일이 생성되지 않아서 혼이 난 적이 있습니다.

여기에서 cmake를 최신 버전으로 설치합시다.

tar -zxvf cmake-3.16.5.tar.gz

cd cmake-3.16.5
./bootstrap
make -j 8
sudo make install


gRPC 소스 다운로드

git clone -b $(curl -L http://grpc.io/release) https://github.com/grpc/grpc

cd grpc/
git submodule update --init

mkdir -p cmake/build
cd cmake/build
cmake ../..
make -j 8
sudo make install


참고

  • https://github.com/grpc/grpc/blob/master/src/cpp/README.md#make
  • https://github.com/grpc/grpc/blob/master/BUILDING.md

enum을 문자열로 변경하는 방법

|

Java에서 enum으로 정의한 값을 문자열로 변경하는 방법은 여러가지가 있습니다.


toString 메소드를 오버라이딩

public enum LogLevel {

  VERB {
    @Override
    public String toString() {
      return "Verbose";
    }
  },
  INFO {
    @Override
    public String toString() {
      return "Info";
    }
  },
  DEBUG {
    @Override
    public String toString() {
      return "Debug";
    }
  },
  WARN {
    @Override
    public String toString() {
      return "Warning";
    }
  },
  ERROR {
    @Override
    public String toString() {
      return "Error";
    }
  }
}

public static void main(String[] args) {
  System.out.println(LogLevel.INFO);
}


name 메소드 사용하는 방법

public enum LogLevel {
  VERB,
  INFO,
  DEBUG,
  WARN,
  ERROR,
}

public static void main(String[] args) {
  System.out.println(LogLevel.INFO.name());
}


반대로 문자열을 이용해서 Enum을 생성하는 방법

public enum LogLevel {
  VERB,
  INFO,
  DEBUG,
  WARN,
  ERROR,
}

public static void main(String[] args) {
  LogLevel ll = Enum.valueOf(LogLevel.class, "ERROR")
  System.out.println(ll.name());
}

ROS 2.0 Crystal 설치 방법(apt 이용)

|

ROS 2.0 Crystal 버전부터는 Ubuntu의 apt install 명령어를 이용해서 더욱 더 간편하게 설치할 수 있게 되었습니다.

다음 포스팅은 Ubuntu 18.04 기준이며, 포맷 후 처음 설치하는 과정입니다.


Locale 설정

sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8


GPG Key 설치

sudo apt update && sudo apt install curl gnupg2 lsb-release
curl http://repo.ros2.org/repos.key | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'


vcs-tool 설치

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 0xB01FA116
sudo apt-get update
sudo apt-get install python3-vcstool


기본 컴포넌트 설치

sudo apt update && sudo apt install -y \
  build-essential \
  cmake \
  git \
  python3-colcon-common-extensions \
  python3-pip \
  wget

sudo apt install -y libpython3-dev

python3 -m pip install -U \
  argcomplete \
  flake8 \
  flake8-blind-except \
  flake8-builtins \
  flake8-class-newline \
  flake8-comprehensions \

  flake8-deprecated \
  flake8-docstrings \
  flake8-import-order \
  flake8-quotes \
  git+https://github.com/lark-parser/lark.git@0.7d \
  pytest-repeat \
  pytest-rerunfailures \
  pytest \
  pytest-cov \
  pytest-runner \
  setuptools

sudo apt install --no-install-recommends -y \
  libasio-dev \
  libtinyxml2-dev


ROS 2 패키지 설치

export CHOOSE_ROS_DISTRO=crystal  # or bouncy or ardent
sudo apt update

sudo apt install ros-$CHOOSE_ROS_DISTRO-desktop
sudo apt install ros-$CHOOSE_ROS_DISTRO-ros-base

그리고 ROS2 실행 환경을 만들려면

source /opt/ros/$CHOOSE_ROS_DISTRO/setup.bash

와 같은 명령어를 실행하면 되며, .bashrc 등에 위 명령어를 추가할 수도 있습니다.


OpenSplice 및 RTI Connext 설치

옵션입니다. ROS2는 기본적으로 fast-rtps를 사용하기 때문에 OpenSplice나 RTI Connext는 추가적으로 설치할 필요는 없습니다. 하지만 경고 메시지 등이 거슬려서 설치를 할 경우에는 아래와 같은 명령어를 이용해서 설치할 수 있습니다.

sudo apt update
sudo apt install ros-$ROS_DISTRO-rmw-opensplice-cpp # for OpenSplice
sudo apt install ros-$ROS_DISTRO-rmw-connext-cpp # for RTI Connext (requires license agreement)