AOS_iOS_NRE_Sample/NexacroN_V24/Android/HelloNexacroAndroid/README.md

112 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2023-09-18 15:18:52 +09:00
<h1 align="center">Hello Nexacro Android Webview</h1>
안드로이드 하이브리드 버전을 테스트 하기 위한 앱 입니다.
### 테스트 사전 단계
- 빌드된 *.aar 라이브러를 아래의 경로에 추가합니다.
```sh
Hybrid/example/HelloNexacroAndroid/app/libs/Acceleration-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/AudioPlayer-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/BluetoothLE-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Camera-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Contact-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/ExternalAPI-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Geolocation-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/ImagePicker-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/LiteDB-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Network-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/NexacroLib-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Phone-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Sms-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/Vibrate-release.aar
Hybrid/example/HelloNexacroAndroid/app/libs/XPush-release.aar
```
## 빌드에 필요한 추가 의존 라이브러리
- DeviceAPI 및 nexacro.aar 에서 사용 됩니다.
```sh
implementation "androidx.room:room-runtime:2.4.3"
implementation 'androidx.exifinterface:exifinterface:1.3.4'
implementation 'com.google.firebase:firebase-core:21.1.1'
implementation 'com.google.firebase:firebase-messaging:23.1.2'
implementation 'com.squareup.okhttp3:okhttp:4.10.0'
implementation 'org.slf4j:slf4j-api:1.7.36'
annotationProcessor "androidx.room:room-compiler:2.4.3"
implementation fileTree(dir: "libs", include: ["*.aar"])
```
## 테스트 방법
- Nexacro N Runtime for Android 와 거의 동일한 방법으로 구동합니다.
- NexacroActivity 클래스를 상속받은 MainActivity.java 의 onCreate 함수 안에서 deploy 된 주소를 입력합니다.
- 서버, 업데이트, 로컬 방식을 지원 합니다.
```sh
public class MainActivity extends NexacroActivity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 업데이트 or 서버 방식
setProjectURL("http://.../_android_/");
setBootstrapURL("http://.../_android_/start_android.json");
// 로컬 방식 (디플로이된 컨텐츠는 assets/archive 폴더에 위치 시킨다)
setBootstrapURL("file:///android_asset/archive/start_android.json");
}
...
}
```
## 코르도바 플러그인 추가 방법
- (개발중인) 코르도바 제네레이터를 사용합니다.
- 코르도바 플러그인 모듈이 생성됩니다.
- 넥사크로 프로젝트 하위 경로로 필요한 플러그인 소스가 복사되어 배치됩니다.
- 넥사크로 프로젝트에 배치된 소스가 앱 프로젝트에 복사됩니다.
- 코르도바 제네레이터가 하지 못하는 작업은 plugin.xml 정보를 바탕으로 아래와 같이 직접 수정합니다.
1. 넥사크로 plugin_config.xml 파일에 코르도바 플러그인을 다음과 같이 등록
```sh
<!-- plugin.xml 파일 정보를 바탕으로 plugin_config.xml 파일에 등록합니다. -->
plugin.xml
<platform name="android">
<config-file target="res/xml/config.xml" parent="/*">
<feature name="StatusBar">
<param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
<param name="onload" value="true" />
</feature>
<preference name="StatusBarOverlaysWebView" value="true" />
</config-file>
</platform>
==>
plugin_config.xml
<plugin name="StatusBar" class="org.apache.cordova.statusbar.StatusBar" onload="true"/>
<preference name="StatusBarOverlaysWebView" value="true" />
코르도바의 config.xml은 넥사크로의 plugin_config.xml 파일과 동일한 역할을 합니다.
```
2. 앱의 AndroidManifest.xml 에 권한 및 기타 정보 추가
- uses-permission, uses-feature
3. 플러그인의 종류에 따라서 이외의 작업이 있을수 있습니다.
4. 빌드.
## 프로젝트 구성 참고 사항
- notification을 사용하는 경우 (notification enable="true") firebase를 통해 google service 설정이 필요합니다.
- 테마에서 액션바를 제거하였습니다. (NoActionBar)
- AndroidManifest.xml 에서 필수적인 권한을 추가하였습니다.