태그 보관물: 안드로이드

유니티(Unity) 안드로이드 빌드 이름 다국어 지원

개요

게임 개발이 완료되고 대상 기기에 설치되었을 때 사용자가 설정한 언어로 앱 이름이 나타나면 더 좋은 인상을 줄 수 있습니다. 안드로이드로 빌드 했을 때 원하는 언어로 앱 이름을 설정하는 방법을 알아보도록 하겠습니다. Localization 패키지를 이용합니다.

Localization 패키지

다국어 지원을 위해서 Localization 패키지를 설치해야 합니다. Window > Package Manager 메뉴를 선택하면 창이 나타나고 다음 이미지와 같이 + 버튼을 클릭해서 Add package from git URL… 을 선택합니다.

Add package from git URL... 선택
Add package from git URL… 선택

입력란에 com.unity.localization 을 입력하고 Add 버튼을 클릭합니다.

git URL 입력
git URL 입력

Unity Registry에서 검색하면 1.3.2 버전이 나타나는데 버그가 있어 다국어 관련 항목이 나타나지 않는 문제가 있습니다. 글 작성일 기준으로 1.3.2 버전은 Editor 2021.3.9f1, 2022.2.15f1 모두 같은 오류가 있었습니다. Add package from git URL… 을 선택하면 1.4.3 버전이 설치됩니다.

Localization 관련 항목 추가

Window > Asset Management > Localization Tables 메뉴를 선택합니다. 창이 나타나지만 아무것도 없는 상태입니다. Create 버튼을 클릭합니다. 폴더를 하나 생성하고 저장합니다.

등록된 자료가 없는 상태
등록된 자료가 없는 상태

그런 후 New Table Collection 탭을 선택합니다. Locale Generator 버튼을 클릭합니다.

New Table Collection 탭 선택
New Table Collection 탭 선택

창이 나타나는데 원하는 언어를 선택합니다. Generate Locales 버튼을 클릭합니다. 폴더를 지정하면 작업에 필요한 파일이 생성됩니다.

Locale Generator

New Table Collection 탭의 Create 버튼을 클릭합니다. 폴더를 선택하면 다음과 같은 화면이 나타납니다.

Entry 추가 전 화면
Entry 추가 전 화면

Add New Entry 버튼을 클릭합니다. Key는 app_name 을 입력하고 각각의 언어에 원하는 앱 이름을 입력합니다.

app_name key 추가
app_name key 추가

폴더내의 Localization Settings 파일을 선택하면 Inspector에 다음과 같이 나타납니다. List is Empty 아래 + 버튼을 클릭합니다. Android > App Info 를 선택합니다.

Inspector 항목
Inspector 항목

Inspector에서 추가된 Android App Info 항목을 펼쳐보면 다음과 같이 나타납니다.

추가된 Android App Info 항목

Display Name 의 None(String) 을 클릭하면 table entry 를 선택할 수 있습니다.

table entry 선택
table entry 선택

app_name 을 선택하면 다음과 같이 변경된 것을 알 수 있습니다. Localization Package 1.3.2 버전의 경우 None 만 나타나서 추가된 entry를 선택할 수 없는 문제가 있습니다. 그래서 더 이상 진행이 불가능 합니다.

app_name entry 선택 후 변경된 사항
app_name entry 선택 후 변경된 사항

이 상태에서 빌드하고 설치해보면 앱 이름이 지정한 대로 나타나는 것을 확인하실 수 있습니다.

문제점

필자가 확인한 바로는 글 작성 일자 기준으로 동일한 조건에서 Localization 패키지를 추가해서 앱 이름 정보와 함께 빌드하면 10MB 정도 용량이 늘어나는 현상이 있었습니다. 명확하게 어떤 이유 때문에 그런 것인지는 알아내지 못했습니다. 앱의 기본용량이 작은 경우 문제가 될 것 같다는 생각이 들었습니다. 참고하시기 바랍니다.

Android ROOM 자료가 입력된 DB 사용하기

개요

이전에 다루었던 Android ROOM 초기 자료 입력하기 글에서는 적은 양의 자료에만 적용할 수 있습니다. 자료가 많은 경우 텍스트 파일을 읽어 DB에 입력하는 방법을 생각해 볼 수 있습니다. 또 서버에 연결해서 자료를 받아와 입력하는 등 여러가지 방법이 있을 수 있습니다. 그러나 앱에서 처리하게 되면 모든 사용자들이 입력이 끝날 때 까지 기다려야 하는 문제가 있습니다.

DB에 입력되는 자료가 고정되어 있고 양이 많은 경우 개발 시 미리 입력해 놓은 DB를 적용하면 간편합니다. 이번글에서는 그 방법을 알아보도록 하겠습니다.

데이터 미리 채우기

SQLite DB에 자료를 입력하는 방법은 여러가지가 있습니다. 필자는 Android Studio 에 있는 Database Inspector 를 이용해서 다량의 자료를 DB에 입력했습니다. 미리 입력된 DB를 사용하는 방법은 개발자 문서에 잘 설명되어 있습니다.

DB 파일 준비

필자는 에뮬레이터에 저장되어 있는 DB 파일을 Device File Explorer 로 접근해서 로컬 PC에 저장했습니다. 그 다음 Android Studio 에서 assets 폴더를 생성하고 DB 파일을 복사했습니다.

assets 폴더 하위에 추가한 DB 파일
assets 폴더 하위에 추가한 DB 파일

코드추가

DB 초기 생성 부분에 다음과 같이 코드를 추가합니다.

fun getInstance(context: Context): yourDB? {
    if (INSTANCE == null) {
        synchronized(yourDB::class) {
            INSTANCE = Room.databaseBuilder(context.applicationContext,
                yourDB::class.java, "your.db")
                .addCallback(dbCallback)
                .createFromAsset("your.db")
                .fallbackToDestructiveMigration()
                .build()
        }
    }
    return INSTANCE
}

이렇게 하면 미리 자료를 입력해 놓은 DB 파일을 이용하게 됩니다. 앱에서 별도로 자료를 입력하는 과정을 수행할 필요가 없어지게 됩니다. 단, 정의된 Entity 와 미리 자료가 채워진 DB 파일의 구조가 같아야 합니다.

이번글에서는 미리 준비된 DB 파일을 ROOM 을 사용한 프로젝트에 적용하는 방법을 알아보았습니다.