고도엔진에서 사용할 안드로이드 플러그인 제작 공부하며 진행중
godot용 안드로이드 플러그인 가이드해주신분 홈페이지
위에 홈페이지로 접속하면
이미 고도에서 사용할 안드로이드 플러그인을 쭉
가이드해준다.
나는 보고 나름대로 정리...
내가 필요한 기능은
고도엔진에서 명령어로 안드로이드 환경의 카메라에 접근하고 권한을 얻고
캡쳐하거나 동영상을 키고 끄는 일
유니티엔진같은 경우는 c#스크립트 작성으로 접근해서 따로 플러그인을 만들거나 할 필요없이 미리 만들어놓은 함수만 가져오면 될 일이었는데...고도는 그럴 수가없다 ㅠ
나는 안드로이드 플러그인은 만들어본적이 없다.
유니티 jslib 만 만들어봤지..
암튼 나처럼 초심자들이 보고 도움이 됐으면.
일단 안드로이드 스튜디오를 키고 새프로젝트를 시작한다.
뭐 어려운거 아니고
앱이름이랑 패키지명은 알아서 작성하고
나머지는 자바랑
최소 sdk버전 선택
난 가이드대로 4.4를 선택함
내가쓰는 4.2고도는 아마 24레벨이 최소니까
4.4가 아니라 24레벨을 맞춰야할 듯;;
만들면 이런 화면이고
고도문서에도 가이드가 나와있으니 참고 ㄱㄱ
https://docs.godotengine.org/ko/4.x/tutorials/platform/android/android_plugin.html#introduction
고도 문서
매뉴얼에 안드로이드 플러그인이 따로 나와있다.
나는 고도 4.2엔진을 사용하고 있기에 버전2를 사용해야된다고 매뉴얼에서 확인!
다시 프로젝트 화면에서
매뉴얼을 쭉보다보니까
https://github.com/m4gr3d/Godot-Android-Plugin-Template#readme
고도 4.2용 안드로이드 플러그인 제작 가이드가 깃허브에 올려져있다.
미리 파일이 준비되어있나보다.근데 나는 플러그인 제작을 직접해야 어떻게 돌아가는지 아니까 일단 동영상 내용을 좀 더 공부 ㄱㄱ
https://developer.android.com/studio/projects/android-library?hl=ko
이렇게 application 이있는데 언어가 좀 다르당.
ai한테 물어보니 뭐 같은 의미란다.
그래서 뒤에
바꿔주니 빨간색뜨는데 음?;;
요번엔 코틀린언어로 해서 똑같이해도 빨간줄 뜨네 어쨌든 고도엔진 최소레벨과 맞췄고
프로젝트 안드로이드 build.gradle에서
이제 안드로이드 참조안하니까 지워줌.
일단 동영상 내용대로 진행하다가 갑자기
가이드 대로 안하길래
나는 가이드를 따라가기로 했다.
아 뭐야 뭔가 꼬임 다시 첨부터
밑에 빌드를 groov로 해줌
쭉 가이드대로 진행하다가
아하 app으로 선택 하니
guava*로 검색해서 나오넹
근데 com.google.guava
가 안나옴;;
com.google.guava*이걸로 검색하니 하나뜸
이걸 ai한테 물어보니 맞다고함 진행 ㄱ
아 app이 아닌건가?
이게 안보임 다시 app이아니라
원래 만들려던 프로젝트명 androidplugin에다가 똑같이 진행
아 아니네 app이 맞네
1.0.0 이게 아니라
guava라고변하면서 확인됨
이게 가이드가 좀 오래되서 내가 쓰는 버전이랑 이름이나 표시가 좀 다른 것 같다.
그 다임에 aar파일 경로를 해주어야하는데 아까 동영상 그 고도용lib파일이 여기들어가야하는것 같넹?
여기 있구만..
경로를 프로젝트 밖에다가 다운받아서 지정하긴했는데 될라나.
아 보니까 안에 넣어주는게 맞는 것 같네 고도엔진 보통 플러그인 파일이나 유니티 플러그인 보면
lib파일이 항상딸려오던데 그거구나..
안드로이드는 백슬래시를 쓰면안되는구만;슬래시로 libs폴더만들고 진행
외부면 따로 처리가 있는데 걍 안에 넣고 사용 ㄱ
여기서 비공개 그런게 가능한데 굳이 할 필요는 없으니 넘어가고
주의사항
요거는 복붙해왔는데 음... 그 프로가드가 충돌될 수 있을 것 같긴하다 다른 플러그인 admob을 쓴다던지
그 때는 유니티같은경우 한쪽 플러그인파일을 아예 무시하면서 설치하는 방식으로 충돌을 피했는데
비슷하겠지?
라이브러리 모듈의 개발 고려사항
라이브러리 모듈과 종속 앱을 개발할 때에는 다음 동작 및 제한사항에 유의해야 합니다.
라이브러리는 우선순위 순으로 병합됩니다.
라이브러리 모듈에 대한 참조를 Android 앱 모듈에 추가한 후에는 모듈의 상대적인 우선순위를 설정할 수 있습니다. 빌드 시에는 가장 낮은 우선순위에서 가장 높은 우선순위 순으로 라이브러리가 한 번에 하나씩 앱과 병합됩니다.
리소스 병합 충돌을 방지합니다.
빌드 도구는 라이브러리 모듈의 리소스를 종속 앱 모듈의 리소스와 병합합니다. 지정된 리소스 ID가 두 모듈에서 모두 정의된 경우에는 앱의 리소스가 사용됩니다.
여러 AAR 라이브러리 간에 충돌이 발생한 경우 종속 항목 목록에 가장 먼저 (
dependencies블록의 상단에 가장 가까운) 나열된 라이브러리의 리소스가 사용됩니다.리소스 충돌을 방지하려면 비전환
R클래스를 사용하세요. 이를 사용할 수 없다면 모듈에 고유하거나 모든 프로젝트 모듈에서 고유한 접두사 또는 다른 일관된 이름 지정 스키마를 사용하는 것이 좋습니다.다중 모듈 빌드에서는 JAR 종속 항목이 전이 종속 항목으로 처리됩니다.
AAR을 출력하는 라이브러리 프로젝트에 JAR 종속 항목을 추가하면 JAR이 라이브러리 모듈에서 처리되어 AAR과 함께 패키징됩니다.
하지만 프로젝트에 앱 모듈에서 사용하는 라이브러리 모듈이 포함되어 있으면 앱 모듈은 라이브러리의 로컬 JAR 종속 항목을 전이 종속 항목으로 처리합니다. 이 경우 로컬 JAR은 라이브러리 모듈이 아닌 로컬 JAR을 사용하는 앱 모듈에서 처리합니다. 이렇게 하면 라이브러리의 코드 변경으로 인해 발생한 증분 빌드의 속도가 빨라집니다.
로컬 JAR 종속 항목에 의한 자바 리소스 충돌은 라이브러리를 사용하는 앱 모듈에서 해결되어야 합니다.
라이브러리 모듈은 외부 JAR 라이브러리에 종속될 수 있습니다.
외부 라이브러리에 종속된 라이브러리 모듈을 개발할 수 있습니다. 이 경우 종속 모듈은 외부 라이브러리가 포함된 타겟을 대상으로 빌드해야 합니다.
라이브러리 모듈과 종속 앱 모두 매니페스트 파일의
<uses-library>요소에서 외부 라이브러리를 선언해야 합니다.앱 모듈의
minSdkVersion은 라이브러리에서 정의된 버전보다 크거나 같아야 합니다.라이브러리는 종속 앱 모듈의 일부로 컴파일되므로 라이브러리 모듈에서 사용되는 API가 앱 모듈에서 지원하는 플랫폼 버전과 호환되어야 합니다.
각 라이브러리 모듈은 자체
R클래스를 생성합니다.종속 앱 모듈을 빌드하면 라이브러리 모듈이 AAR 파일로 컴파일된 후 앱 모듈에 추가됩니다. 따라서 각 라이브러리에는 라이브러리의 패키지 이름을 따라 이름이 지정된 자체
R클래스가 있습니다.기본 모듈과 라이브러리 모듈에서 생성되는
R클래스는 기본 모듈의 패키지와 라이브러리의 패키지를 포함하여 필요한 모든 패키지에서 생성됩니다.라이브러리 모듈에는 자체 ProGuard 구성 파일이 포함되어 있을 수 있습니다.
AAR을 빌드하고 게시하는 데 사용하는 라이브러리 프로젝트가 있는 경우 ProGuard 구성 파일을 라이브러리의 빌드 구성에 추가할 수 있습니다. 이렇게 하면 Android Gradle 플러그인이 개발자가 지정한 ProGuard 규칙을 적용합니다. 빌드 도구는 이 파일을 라이브러리 모듈의 생성된 AAR 파일 내에 삽입합니다. 라이브러리를 앱 모듈에 추가하면 라이브러리의 ProGuard 파일이 앱 모듈의 ProGuard 구성 파일(
proguard.txt)에 추가됩니다.라이브러리 모듈에 ProGuard 파일을 삽입하면 라이브러리에 종속된 앱 모듈이 라이브러리를 사용하도록 ProGuard 파일을 수동으로 업데이트할 필요가 없습니다. Android 스튜디오 빌드 시스템에서는 앱을 빌드할 때 앱 모듈과 라이브러리에서 모두 지시어를 사용합니다. 따라서 별도의 단계로 라이브러리에서 코드 축소기를 실행할 필요가 없습니다.
라이브러리 프로젝트에 ProGuard 규칙을 추가하려면 라이브러리
build.gradle또는build.gradle.kts파일의defaultConfig블록 내에서consumerProguardFiles속성이 포함된 파일의 이름을 지정합니다.예를 들어 다음 스니펫에서는 라이브러리의 ProGuard 구성 파일로
lib-proguard-rules.txt를 설정합니다.하지만 라이브러리 모듈이 APK로 컴파일되고 AAR을 생성하지 않는 다중 모듈 빌드에 포함된 경우 라이브러리를 사용하는 앱 모듈에서만 코드 축소를 실행합니다. ProGuard 규칙 및 사용법을 자세히 알아보려면 앱의 축소, 난독화, 최적화를 참고하세요.
라이브러리 모듈 테스트는 앱 테스트와 동일합니다.
가장 큰 차이는 라이브러리와 종속 항목이 자동으로 테스트 APK의 종속 항목으로 포함된다는 것입니다. 즉, 테스트 APK에는 자체 코드뿐 아니라 라이브러리의 AAR과 모든 종속 항목이 포함되어 있습니다. 테스트 중인 별도의 앱이 없으므로
androidTest작업은 테스트 APK만 설치(및 제거)합니다.여러 매니페스트 파일을 병합하면 Gradle에서 기본 우선순위에 따라 라이브러리의 매니페스트를 테스트 APK의 기본 매니페스트에 병합합니다.
댓글
댓글 쓰기