코로나 네이티브 Android APIs ::
https://docs.coronalabs.com/native/android/html/

코로나 네이티브 설정

다음 단계는 네이티브 개발 환경과 코로나 네이티브의 통합을 위한 최적화된 설정을 제공합니다.

1. /Applications/Corona/Native/ 폴더에서 Setup Corona Native를 더블 클릭하면, 프로젝트 템플릿에 필요한 심볼릭 링크가 생성됩니다.

2. Android 개발은 Java 프로그래밍 언어를 사용하여 수행되므로 여기에 설명 된대로 Java Development Kit을 설치해야 합니다.

3. Java를 설치 한 후에는 Android 개발을 위한 공식 IDE 인 Android Studio를 설치하여 사용해야 합니다.

프로젝트 템플릿

새 프로젝트는 템플릿 파일을 시작점으로 사용하여 쉽게 만들 수 있습니다. /Applications/Corona/Native/Project Template/App/ 폴더 내부에서 다음 파일/디렉토리가 주요합니다:

Corona – 이 폴더는 main.lua, app 아이콘 등과 같은 파일을 포함하는 고전적인 코로나 프로젝트를 나타냅니다. 기본적으로 build.gradle (Module: App)은 이 폴더 (Corona) 내에 있다고 가정합니다.

android – Android 관련 코드, 프로젝트 등을 모두 포함합니다.

app
build.gradle – 기본 빌드 스크립트이며 버전 및 사용하려는 SDK 버전과 같은 일부 응용 프로그램 설정을 하는 곳이기도 합니다.

libs/ – 여기에 앱이 의존하는 써드파티 (Corona) .jar 플러그인이 있어야 합니다.

src
main
AndroidManifest.xml – 이름, 권한 등 응용 프로그램 설정을 구성하는 곳입니다.

java/ – 이 위치는 앱의 Java 소스 파일을 가져오는 곳입니다. 패키지는 com.mycompany.app이므로 파일이 기본적으로 위치합니다. 지정한 패키지 이름에 따라 수정해야 합니다.

jniLibs/ – 여기에 앱이 의존하는 써드파티 (Corona) .so 플러그인이 있어야 합니다.

plugin – 플러그인을 위한 추가적인 파일과 폴더가 위치합니다.
build.gradle – 이것은 플러그인을 만드는 빌드 스크립트입니다. 출력은 .jar 파일입니다. .jar에 포함 된 유일한 파일은 코드인지 자원인지에 관계없이 plugin/src/main/에 있는 파일입니다.

libs – 이것은 플러그인이 의존하는 써드파티 (Corona) .jar 플러그인이 있어야 하는 곳입니다.

src
main
AndroidManifest.xml – 여기에서 플러그인의 패키지 이름을 설정합니다.
java
plugin
library
LuaLoader.java – 이것은 Android 측에서 Lua 라이브러리 plugin.library를 위한 코드입니다.

jniLibs/ – 이것은 플러그인이 의존하는 써드파티 (Corona) .so 플러그인이 있어야 하는 곳입니다.

프로젝트 플로우

다음 단계에서는 Android 용 /Applications/Corona/Native/Project Template/App/ 프로젝트의 흐름을 간략하게 설명합니다.

1. android/app/src/main/java/com/mycompany/app/CoronaApplication.java – 실행시 CoronaApplication.java가 인스턴스화 됩니다. 앱 일시 중지 및 다시 시작과 같은 다양한 앱 수준 이벤트에 대한 알림을 받을 수 있는 비공개 클래스를 추가합니다. main.lua가 호출되기 직전에 onCreate() 메소드가 호출됩니다. 이 시점에서 OpenGL이 설정되고 모든 Corona 프레임워크를 사용할 수 있습니다.

2. Corona/main.lua – Lua 코드에서 plugin.library는 require()를 통해 로드됩니다. 그러면 코로나 엔진이 plugin.library.LuaLoader라는 해당 Java 클래스를 찾아 호출합니다. 이 클래스의 이름은 동적이며 require()에 전달된 원래 라이브러리 이름을 사용하여 LuaLoader 클래스의 패키지 이름으로 생성됩니다. LuaLoader 클래스는 JNLua 인터페이스 com.naef.jnlua.JavaFunction을 구현해야 합니다.

3. android/plugin/src/main/java/plugin/library/LuaLoader.java – LuaLoader의 정규화 된 클래스 경로가 해석되면 클래스는 기본 생성자로 인스턴스화 됩니다. 그런 다음, invoke() 메서드는 JNLua를 통해 Lua에 의해 호출되고 Lua 라이브러리 테이블을 생성하고 show()와 같은 Lua 메서드를 등록한 다음 Lua 스택의 맨 위에 테이블을 남겨 두는 등의 많은 작업을 수행합니다.

노트: .dll 또는 .so 파일이 일반적으로 프로세스의 수명 동안 한 번 로드되는 것과 같이 LuaLoader 클래스는 프로세스 수명 동안 한 번 인스턴스화 됩니다. 또한 invoke() 메소드는 require()를 수행하는 루아 상태마다 한 번 호출된다는 점에 유의하십시오. 이는 CoronaActivity가 인스턴스화 될 때마다 한 번 호출되는 것과 같습니다.

코로나 네이티브 개발

Lua/Java 브리지

루아와 자바 코드를 연결하기 위해 JNLua가 제공하는 기능을 사용할 것입니다. 이를 통해 루아에서 Java로 직접 호출하는 라이브러리와 함수를 추가 할 수 있습니다.

네이티브 APIs

Android 용 기본 API는 JavaDoc에서 확인하세요.

일반적인 Android 라이브러리 사용

Android 지원 라이브러리 또는 Google Play 서비스에 의존하는 플러그인을 개발하는 경우 Android Dependency Integration 가이드를 읽어보세요.

런타임 권한 지원

Android 6.0 이상에서 Android 런타임 권한으로 작업하는 방법에 대한 자세한 내용은 Android 런타임 권한 지원 안내서를 참조하십시오.

디바이스를 위한 빌드

Android Studio에서 코로나 네이티브 프로젝트를 만들려면 아이콘 상단 바에서 Run 버튼을 누르기만 하면 됩니다. 그러면 프로젝트가 빌드되고 서명되며 배포 대상을 선택하라는 메시지가 나타납니다. 빌드 된 .apk는 android/app/build.gradle 스크립트의 android → signingConfigs 블록에 지정된 키 저장소 또는 아무것도 제공되지 않은 경우 기본 debug.keystore로 서명됩니다.

Android Studio에는 여기에서 읽을 수 있는 몇 가지 다른 빌드 관련 옵션이 있습니다.