IVS Android Player SDK 시작하기
이 문서에서는 Amazon IVS Android Player SDK 시작하기와 관련된 단계를 안내합니다.
라이브러리 설치
Amazon 개발 환경에 Amazon IVS Android 플레이어 라이브러리를 추가하려면 여기에 나온 것처럼(최신 버전의 Amazon IVS 플레이어용) 라이브러리를 모듈의 build.gradle
파일에 추가합니다.
repositories { mavenCentral() } dependencies { implementation 'com.amazonaws:ivs-player:1.42.0' }
또는 SDK를 수동으로 설치하려면 다음 위치에서 최신 버전을 다운로드하세요.
디버그 기호와 함께 SDK 사용
디버그 기호가 포함된 Android Player SDK 버전도 게시합니다. IVS Player SDK에서 충돌이 발생하는 경우(즉, libplayercore.so
) 이 버전을 사용하여 Firebase Crashlytics의 디버그 보고서(스택 트레이스) 품질을 개선할 수 있습니다. 이러한 충돌을 IVS SDK 팀에 보고하는 경우 스택 추적 품질이 좋을수록 문제를 쉽게 수정할 수 있습니다.
이 버전의 SDK를 사용하려면 Gradle 빌드 파일에서 다음 줄을 바꿉니다.
implementation "com.amazonaws:ivs-player:$version@aar"
다음으로 대체합니다.
implementation "com.amazonaws:ivs-player:$version:unstripped@aar"
Firebase Crashlytics에 기호 업로드
Firebase Crashlytics에 Gradle 빌드 파일이 설정되어 있는지 확인합니다. Google의 지침을 따릅니다.
https://firebase.google.com/docs/crashlytics/ndk-reports
종속성으로 com.google.firebase:firebase-crashlytics-ndk
를 포함해야 합니다.
릴리스할 앱을 빌드할 때 Firebase Crashlytics 플러그인을 통해 기호가 자동으로 업로드되어야 합니다. 수동으로 기호를 업로드하려면 다음 중 하나를 실행하세요.
gradle uploadCrashlyticsSymbolFileRelease
./gradlew uploadCrashlyticsSymbolFileRelease
(기호를 자동 및 수동으로 두 번 업로드해도 문제가 되지 않습니다.)
릴리스 .apk가 커지지 않도록 방지
릴리스 .apk
파일을 패키징하기 전에 Android Gradle 플러그인에서는 공유 라이브러리(IVS Player SDK의 libplayercore.so
라이브러리 포함)에서 디버그 정보를 자동으로 제거하려고 시도합니다. 그러나 가끔은 이 상황이 발생하지 않습니다. 이 경우 .apk
파일이 커질 수 있으며, 디버그 기호를 제거할 수 없고 .so
파일을 그대로 패키징하고 있다는 Android Gradle 플러그인의 경고 메시지가 표시될 수 있습니다. 이 상황이 발생하면 다음과 같은 작업을 수행합니다.
-
Android NDK를 설치합니다. 최신 버전이 작동합니다.
-
애플리케이션의
build.gradle
파일에ndkVersion <your_installed_ndk_version_number>
를 추가합니다. 애플리케이션 자체에 네이티브 코드가 없더라도 이 작업을 수행합니다.
자세한 내용은 이 문제 보고서
플레이어 생성 및 이벤트 리스너 설정
플레이어 인터페이스는 com.amazonaws.ivs.player.Player
입니다. 아래 그림과 같이 초기화합니다.
// Create a player instance // <this> refers to the current Android Activity player = Player.Factory.create(this); // Set up to receive playback events and errors player.addListener(this);
또는 PlayerView
를 사용하여 초기화합니다.
// Create a player instance // <this> refers to the current Android Activity PlayerView playerView = new PlayerView(this); Player player = playerView.getPlayer(); // Set up to receive playback events and errors player.addListener(this);
참고: 리스너 콜백 메서드는 Android 애플리케이션의 기본 스레드에서 실행됩니다.
SurfaceView for Video 설정
PlayerView
를 사용하지 않는 경우 비디오를 표시하려면 SurfaceView
를 Android UI 레이아웃에 추가합니다. Surface
가 사용 가능해야 비디오 스트림을 재생할 수 있습니다. getHolder()
를 호출하여 검색된 SurfaceHolder
인터페이스를 통해 기본 Surface에 액세스할 수 있습니다. (Android 개발자 참조의 SurfaceViewSurfaceHolder.Callback
을 사용하여 Surface 변경에 대한 이벤트를 수신합니다(SurfaceHolder.Callback
surfaceView = (SurfaceView) findViewById(R.id.surfaceView); surfaceView.getHolder().addCallback(this); @Override public void surfaceCreated(SurfaceHolder holder) { this.surface = holder.getSurface(); if (player != null) { player.setSurface(this.surface); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { this.surface = null; if (player != null) { player.setSurface(null); } }
스트림 재생
스트림이 비동기식으로 로드되기 때문에 애플리케이션에서 play
메서드를 호출하여 재생을 시작하기 전에 플레이어는 READY
상태여야 합니다. Player.Listener
인터페이스를 사용하여 플레이어가 올바른 상태인 시점을 확인할 수 있습니다.
다음 예제 코드를 참조하세요.
player.load(Uri.parse(url)); @Override public void onStateChanged(Player.State state) { switch (state) { case BUFFERING: // player is buffering break; case READY: player.play(); break; case IDLE: break; case PLAYING: // playback started break; } }
플레이어 해제
플레이어가 더 이상 사용되지 않을 때 라이브러리에서 사용하는 리소스를 해제하려면 player.release()
메서드를 호출해야 합니다. 일반적으로 이 작업은 플레이어가 포함된 활동 또는 조각의 onDestroy
콜백에서 완료됩니다.
@Override protected void onDestroy() { super.onDestroy(); player.removeListener(this); player.release(); }
player.release()
메서드가 호출되면 플레이어를 더 이상 사용할 수 없습니다.
권한
Android 플레이어 SDK에는 다음 권한이 필요합니다.
<uses-permission android:name="android.permission.INTERNET" />
또한 다음과 같은 선택적 권한으로 재생 환경을 향상할 수 있습니다.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
스레드 안전
플레이어 API는 스레드 안전 기능이 아닙니다. 플레이어 인스턴스에 대한 모든 직접 호출은 동일한 스레드에서 이루어져야 합니다.
SDK 크기
Amazon IVS Player SDK는 최대한 가볍게 설계되었습니다. SDK 크기에 대한 최신 정보는 릴리스 정보를 참조하세요.
중요: 크기 영향을 평가할 때 Android Studio에서 생성한 AAB/APK의 크기는 사용자 디바이스에 다운로드되는 앱의 크기를 나타내지 않습니다. Google Play 스토어에서는 최적화를 통해 앱의 크기를 줄입니다. Android 앱 번들