고도엔진을 안드로이드애플리케이션에 임베드하는거 공부하기

이제 방법이 없다.
emitsignal쪽이 초당 30프레임속도로 보내든 10프레임속도로 보내든
데이터를 받지 않아도 앱중지가 일어난다;;
이 함수가 정확히 어떤문제가 있어서 그런지 파악이 안된다.
고도포럼에 도움요청해도 답이 없고...
보니까 안드로이드 ai플러그인도 많고
빌드는 안드로이드 스튜디오로 하고 게임만 고도엔진으로 만들어야할 것 같다.

일단 내가 사용할 고도엔진을 안드로이드에 임베드하는 방식을
고도문서에 나와있는 예제로 파악해야할 것 같다.

이 예제인데 사용안해봤다.

일단 저 앱을 사용하기전에 고도엔진 프로젝트도 있을텐데 열어보고
그 프로젝트가 모바일 애플리케이션에서 어떻게 임베드되는지 
코드로 파악하고 아무튼 직접 테스트해봐야한다.
와 굉장히 불친절하다;;


일단 유튜브로 찾아보자 누군가 튜토리얼을 만들지 않았을까..
일단 있구만...
봐도 잘모르겠넹;;

일단 예제 프로젝트를 깃허브에서 다운받아서 진행
아니 근데 리드미에 그냥 폰에 설치하는 명령어만 나오고 -ㅅ-뭘 따라하란거야;;


깃허브 파일 다운받으면 이런구조가 아니다 
이런 구조로 맞춰줘야 안드로이드 스튜디오에서 올바르게 사용가능한 것 같다 -ㅅ-;
근데왜 그렇게  되어있는거징;;

버전오류가 나길래 버전을 맞춰줬다.



distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
깃허브가 거의 4개월인가 6개월전에 올라온거라
버전이 완전 좀 옛날이다.

7.5버전인데 나는 저걸 8.9로 해서 진행했다.
그리고 빌드하기전에 키스토어 작성해주고
서명키없으면 안드로이드는 설치안됨!
터미널에서 명령어 쳐줌.


빌드완료 확인.
폰에 설치했다.

짜잔 고기가나오넹 ㅋㅋ
아까 그뭐냐

깃허브에 케니의 에셋이 나오던데
그 에셋들을 보여줄 수 있게 만든 앱인가보다.
GLTFViewer라는걸보니
이 클래스에서 렌더하는게 아닌가 싶당.
아...
안드로이드
RecyclerView로 동적 목록 만들기   
를 사용해서 렌더링하는건데
고도엔진의 기능이 쓰인건지는 모르겠다;;
그럼 프로젝트를 어떻게 임베드하는거지;;?
다시 고도문서로 돌아가서 보니 진행방법이 나와있는 듯하다.
근데 걱정이 고도엔진 기능을 전부 사용할 수 없으면 어쩌지라는...
어쨌든 계속 진행 ㄱㄱ

일단 나는 그전에 만든 cameraX 실습 앱이 있으니 여기다 해보려고한다.
종속성 고도엔진 추가하고


프로젝트 스트럭쳐로 추가함



이 apptoptions가 있어야하나봄.

메인 액티비티가 있어야한다고하고

거기에 고도엔진관련 코드를 작성해주어야한다고 나와있다.
위에 라이브러리 선언해주자
import org.godotengine.godot.GodotFragment
문서랑 좀 다른부분이 있는데 이부분은 자동완성 기능으로 커버


이걸 이제 안드로이드 생명주기 한번만 실행하는 함수 oncreate부분에 작성완료.





안드로이드 매니페스트에 설정을 해야되는데
코드대로하면 ai설명으로보자면
  1. android:name=".MainActivity": 이 액티비티의 클래스 이름을 지정합니다.
  2. android:screenOrientation="fullUser": 사용자가 기기의 방향을 자유롭게 변경할 수 있도록 합니다.
  3. android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout":
    • 이 설정은 화면 방향, 크기, 최소 화면 크기, 화면 레이아웃이 변경될 때 액티비티가 재시작되지 않도록 합니다2.
    • 대신 onConfigurationChanged() 메서드가 호출되어 개발자가 변경 사항을 직접 처리할 수 있게 합니다.
  4. android:exported="true":
    • 다른 앱에서 이 액티비티를 시작할 수 있도록 허용합니다4.
    • 이는 보안상 주의가 필요한 설정입니다.
근데 저기 2번 코드는 줄이 쳐져서 사용이 되는건지 안되는건지 파악이 안된다.
아항 프로젝트를 애플리케이션의 assets폴더에 넣어주어야하는구나..

그렇군 프로젝트가 여기있었넹...

그럼 만들고 있떤 프로젝트를 넣어볼까..
플래피버드를 복사해서  넣어보자

assets폴더를 만들고 좋아 여기다 넣었으..

그다음 이 구성이랑 애플리케이션 화면방향이랑 같아야한다는데..
내프로젝트는 포트레잇 1번으로 되어있다.

이게 트루여야한다고? 렌더링 텍스쳐...


음 되어있고. 기본설정아닌가?;;
그 다음 뭐 코드짜란건데 난 이미 만든게 있으니 상관없고..
그냥 빌드하라는데
그 깃허브 예제처럼 명령어가 있는 건 아닌 듯?

흠 빌드하니까 안되는뎅;;
..

에셋에 바로 프로젝트 파일이 들어가야한다.

아까는 에셋다음에 프로젝트명 폴더가 존재해서 안됐다;;

빌드완료 확인 
폰에서 실행시켜봐야겠다. 
어떻게 나올지 모르니까 기대된당.


아제기랄 설치후 오류가 있네 아까 작성한 아이디 관련 문제 같은데..
아 뷰쪽을 작성안한 것 같다. 
안드로이드 api를 다뤄보진 않았는데 
대충 메인액티비티를 설정하는 부분이 있다.
이 부분이 없어서 R.id값이 없지 않았을까...

org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

힙 부족이 나와서

gradle.프로퍼티 쪽에 구성코드를 바꿔줌.
빌드는 잘되는데
설치실행이 될지...
org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
다시 바꿔줌

또안되넹
아까 줄쳐진 코드가 문제 인 것 같다. 사용을 안하는 것 같은데... 지워주자.
흠 권한알림 코드가 필요하다는데 33타겟이상이면..
어이거 카메라앱만들 때는 없어도됐는데 흠...어쨌든 빌드완료.
휴대폰에 다시 설치 ㄱㄱ


허허 뭐징
보니까 깃허브 예제에는 레이아웃쪽 xml이 고도관련 작성되어있다. 
흠..
작성후 빌드 후 실행

해상도가 세팅이 잘못되서 부모값으로 매치해서 다시 
수정해줬다.
<FrameLayout
android:id="@+id/godot_fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_constraintBottom_toTopOf="@id/image_capture_button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />


근데 빌드한 apk파일을 확인해봤는데 용량이 엄청나다 -ㅅ-;;하..
app번들하면 좀 줄어들긴할텐데 그래도 심하게 크네;;
용량이 큰 이유가 프로젝트에 안드로이드 빌드 부분이 설치되어있어서 그렇다.
이부분을 제거하면 용량이 200mb정도밖에 안됨!!



오오오 된당.. 인풋받는 부분도 잘되넹..
크.......윽..
이제 카메라 인식 라이브러리 택해서 게임이랑 합쳐서 만들어야징!!!


2024년 안드로이드 스튜디오 버전 업글 후
빌드 안될 때 jdk 리소스 딴대 먹는 거 주의
레이아웃 필요함. 
안드로이드 매니페스트에 종속성 필수 생긴거 넣어주기
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
타겟 35이상인 경우.

res -value에 
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Push" parent="Theme.AppCompat.Light.DarkActionBar"/>
</resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">


plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.jetbrains.kotlin.android)
id("org.jetbrains.kotlin.plugin.compose") version "2.0.20" // ⬅️ 이 줄 추가
}
안드로이드 스튜디오 버전 업하고 
컴포즈? 이게 뭐 합쳐져서 명시적으로 선언해주어야한다나보다 저걸 추가해야함.







댓글

이 블로그의 인기 게시물

[코틀린] 고도엔진 안드로이드 플러그인 최종정리

godot용 android plugin 제작