본문 바로가기
공허의 유산/표현의 자유

(업데이트 된) AAR 만들기 & AAR 쓰기

by 바른생활머시마 2023. 3. 2.
728x90
반응형

Unity와 Android를 연동하는 방법에 대해서 좀 알아보고 있는데, 뭐가 잘 안되서 처음부터 차근차근 다시 정리를 해보고 있습니다.

 

먼저, AAR 만들기부터 다시 해보려고 합니다. 아래 내용을 참고하면 되는데~

Android 라이브러리 만들기  |  Android 개발자  |  Android Developers

 

Android 라이브러리 만들기  |  Android 개발자  |  Android Developers

Android 라이브러리를 생성하는 방법을 알아보세요.

developer.android.com

 

이전에 아래와 같이 한번 리뷰를 했었는데, 전혀 생각이 나지 않아서(@_@) 다시 한번 해보기로 했습니다. 겸사겸사 툴이 업데이트 되었으니 새로운 화면으로 업데이트도 하고~

[android/aar]#1. android library 만들기 (tistory.com)

 

[android/aar]#1. android library 만들기

이제 모든 것을 자기가 직접 만들어서 쓰는 시대는 지나갔고, 필요한 것들을 얼마나 빨리 잘 찾아서 잘 쓰느냐가 관건. (하지만~~ 너무 쫓기듯이 살지는 말자. 내가 만들어 쓰는 것 또한 그 나름

learn-and-give.tistory.com

사용한 Android Studio는 돌고래 버젼입니다.

 

 

AAR 만들기

 이전에 써 둔 글을 보지 않고 한번 해보려고 했는데, 처음부터 막히네요. AAR 만드는 프로젝트를 찾을 수가 없어서 이전에 써둔 글을 봤더니 이전에도 똑같은 문제를 겪었었군요. ㅋ 다시 해보길 잘한 것 같습니다.

 

AAR 은 모듈로써 생성하는 것이고, 작업 환경이 될 프로젝트를 아무 것이나 하나 만들어주겠습니다.  아래와 같이 프로젝트 생성 템플릿 선택 화면이 나오면~

 

Empty Activity를 선택 해 줍니다. 이 프로젝트에 뭘 할 것은 없으니 아무 것이나 선택해도 상관 없어요.

프로젝트 정보 설정을 해줍니다.  이 프로젝트 이름이나 package name은 별로 중요하지 않으니 아무렇게나 해줘도 됩니다.

 

 

Virtual Device 준비

 

실행 여부 테스트 할 준비도 할 겸, Virtual Device도 하나 만들어줍니다. 아무것이나 해도 되는데~

AAR을 만들 때 꼭 필요한 것은 아니랍니다. 나중에 연동 테스트 할 때 만들어줘도 됩니다.

API Level은 좀 주의 할 필요가 있을 것 같아요. 나중에 뒤에서 나오는데, 이 API들이 여러가지 이슈의 원인이 될 수 있을 것 같아요. Unity와 연동 할 때도 문제가 있었는데 이런 문제가 아니었나 싶은 생각이 드네요. 

VD가 만들어졌고, 실행 버튼을 눌러서 테스트 환경을 만들어 줍니다.

요렇게 잘 되네요.

 이렇게 해 두고 이제 실행을 해봤더니 아래와 같은 에러가 납니다.  아까 VD를 33으로 해뒀기 때문인 것 같아요.

Project Structure에서 컴파일 SDK version을 보면 32로 되어 있는데요, 이것을 33으로 변경해주면 되겠네요.(저 로그에 나와 있는 내용이 그런 것이지 VD 만든 것이나 프로젝트 설정에 따라 이런 오류는 생기지 않을 수도 있고, 다른 버젼으로 푯 될 수도 있겠죠?)

아래와 같이 33으로 변경합니다.

자, 빌드도 잘 되네요. 지금까지는 아무것도 한 것 없습니다. 그냥 VD만들고, 빌드만 되게 만들었어요. SDK version을 32에서 33으로 변경했구요.

실행을 하면 VD에서도 결과가 잘 나오는 것을 볼 수 있습니다.

 

 

반응형

 

 

AAR Module 추가

 

 자, 이제 본격적으로 AAR을 만듭니다. File > New > New Module을 눌러 새 모듈을 추가 합니다.

 

처음 보이는 화면은 아래와 같은데, 왼쪽에 모듈 종류가 있어요. 우리가 필요한 것은 Android Library입죠.

 

Templates을 Android LIbrary를 선택하고, 모듈 이름을 적어주고, 패키지 이름도 적어줍니다. 패키지 이름은 잘 생각 해 보고 정해주는 것이 좋겠습니다. 나중에 이 이름을 써야하니까 쓸데없이 길거나 알아보기 어려운 이름보다는 딱! 알아먹기 좋은 이름이 여러모로 도움이 될 것 입니다.

 

 모듈을 추가하면 프로젝트가 추가됩니다.(폴더?) 왼쪽의 프로젝트 트리에 MyAARLibAdd가 생겼습니다.

이제 여기에 라이브러리를 구현해야 하는데요, JAVA로 간단한 덧셈을 해주는 클래스를 추가합니다.

 클래스를 추가하고, 생성자와 두 개의 함수를 추가했습니다. 테스트 겸, 일반 함수와 static 함수를 따로 구분해서 구현합니다. 

 

코드는 아래와 같습니다.

package com.red.myaarlibadd;

public class LibAdd {

    //
    public LibAdd(){

    }

    public int AddInt(int val1, int val2){
        return val1+val2;
    }

    public static int AddIntStatic(int val1, int val2) {
        return val1+val2;
    }
}

 

 

이제 새로 만든 모듈을 빌드해서 AAR을 만들어줍니다. Build 매뉴 하위에 모듈 빌드 매뉴가 있으니 이것을 눌러주면 간단히 됩니다.

아래와 같이 프로젝트 하위 경로에 라이브러리 파일인 AAR 파일이 만들어집니다. 이 때 빌드 모드(debug/ release)가 덧붙여진 이름으로 만들어지는 것을 볼 수 있죠.

빌드 모드는 Select Build Variant를 통해서 설정 할 수 있어요. 매뉴에서 선택을 하면~

아래와 같이 선택 할 수 있는 UI가 나타납니다. 여기서 debug/ release를 선택 할 수 있습니다.

변경만 해도 바로 자동으로 다시 빌드가 되네요.

 

 

 

AAR library 사용하기

이제, 이 라이브러리를 사용 할 새로운 프로젝트를 만들어 줍니다. 아무런 관련이 없도록 새로 프로젝트를 만들고, 잘 실행되는지 확인 해 봅니다.

 

 Library 파일은 새로 만든 프로젝트 내에 따로 폴더를 만들어 추가 해 두는데, 꼭 이런 이름이나 이 위치에 해야 하는 것은 아닙니다. 그냥 편한 곳에 편한 이름으로 하면 됩니다.

 AAR 라이브러리를 추가하는 방법은 한가지만 있는 것이 아닌데요, 이전에 해봤던 방법으로 해보겠습니다.

 Project Structure를 실행합니다.

 

Module을 쓰는 것이라서 Module을 선택하고, +버튼을 눌러봤더니....

모듈 생성 화면이 나오네요... 잠시 당황하고 있는데, 아래 Import가 보이네요. 

이전에 작성했던 글을 보니 이전에도 여기서 비슷한 상황을 겪었었네요. @_@a.

 

AAR 파일을 선택하니~

이게 아니라고 하네요. AAR 파일이 아니라 프로젝트 자체를 가져올 때 사용하는 매뉴인가 봅니다.

 

가만히 보니, Dependencies가 보이네요. 예전에 봤던 기억이 스물스물~~~~~

Dependency에서 +를 누르니까 AAR 추가가 나오네요.

아래와 같이 파일 추가 화면이 나오네요. 잘 찾아왔네요. 그런데, 탐색기가 나오지 않으니 왜 그렇게 했을까 좀 궁금하네요. 절대 경로가 아니라 프로젝트 내에서 상대 경로를 적어주는 식으로 쓰는 것인가 싶기도 하고... 일단 절대 경로를 넣어주고, debug니까 debug implementation으로 설정하고 씁니다. 사용 할 프로젝트의 빌드 모드에 맞게 쓰이겠죠.

자, 잘 추가가 되었습니다.

라이브러리 추가한 상태에서 빌드도 잘 되었구요.

 

AAR Library 의 함수 사용 코드 구현 하기

라이브러리를 추가하면 import에 패키지 이름을 적어서 사용 할 수 있습니다. 이 상태에서 이미 Android Studio가 그 구조를 파악하고 인텔리센스 기능이 제공됩니다. 사용 할 라이브러리의 클래스까지 import를 해줍니다.

 

테스트 코드는 아래와 같습니다.

 라이브러리를 가져와서 두 개의 함수를 이용해서 덧셈을 하고 그 결과를 로그로 출력하는 코드 입니다.

package com.red.useaarlib;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

import com.red.myaarlibadd.LibAdd;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Member function of an Instance
        LibAdd _adder = new LibAdd();
        int result = _adder.AddInt(2,4);
        Log.d("RED", "onCreate: Member Add result = " + result);

        //Static function
        result = LibAdd.AddIntStatic(3,6);
        Log.d("RED", "onCreate: Static Add result = " + result);
    }
}

 

실행을 하니... 낯 익은 오류가 뜨네요. SDK 버젼을 32에서 33으로 올려야했던 문제였죠.

같은 방법으로 33으로 설정을 해주면 빌드가 잘 됩니다.

결과도 잘 출력됩니다.

 

이렇게 해서 AAR 라이브러리를 만들고 쓰는 방법을 알아보았습니다.

 

이 과정을 왜 다시 했느냐 하면, Unity와 연동하는 참고 자료를 보고 직접 해봤는데 막판에 연동 하려고 하니 자꾸 에러가 났기 때문에 어느 단계에서 문제가 되는지 확인 해 볼겸 처음부터 해보고 있습니다. 이렇게 해보니 이제 AAR 라이브러리 자체의 문제는 없다는 것이 확인 된 상태이고 이것을 Unity에서 써볼 때 문제가 생긴다면 AAR의 문제는 아니라는 것을 알 수 있을 것입니다. 이번에 살펴보니 SDK 버젼이 문제가 될 수 도 있겠다 싶네요. Unity에 Android 빌드 환경을 구축하면 자동으로 SDK를 설치 해 주는데 그 때 SDK 버젼을 사용자가 따로 지정을 할 수 없고 알아서 설치를 해주니 아마도 그 문제가 아닌가 싶네요. Unity와 연동 할 때 해당 Unity 버젼이 설치해 준 Android SDK의 버젼에 맞게 AAR을 만들어주면 되지 않을까 한번 확인 해 봐야겠네요.

 

 

 

728x90
반응형

댓글