@24i/smartapps-bigscreen-rnv-build-engine 0.17.6-alpha.8 → 0.17.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +16 -12
  2. package/dist/src/constants/buildProductionPackages.js +1 -0
  3. package/dist/src/constants/delopyLivePlatforms.js +2 -1
  4. package/dist/src/constants/platforms.js +2 -0
  5. package/dist/src/engine.js +10 -0
  6. package/dist/src/resolvers/index.js +3 -1
  7. package/dist/src/resolvers/resolveBaseUrl.js +5 -24
  8. package/dist/src/resolvers/resolveProductionZipFileRelativePath.js +1 -2
  9. package/dist/src/resolvers/resolveS3BucketAppPath.js +15 -0
  10. package/dist/src/resolvers/shared/constructFullUrl.js +25 -0
  11. package/dist/src/scripts/buildAllWithSchemes.js +23 -4
  12. package/dist/src/scripts/release/appCenter/deployProductionPackagesToAppCenter.js +20 -10
  13. package/dist/src/scripts/release/urlsMarkdown.js +2 -0
  14. package/dist/src/scripts/releaseAllWithSchemes.js +3 -2
  15. package/dist/src/sdks/index.js +1 -0
  16. package/dist/src/sdks/sdk-androidtv/sdkAndroidtv.js +25 -9
  17. package/dist/src/sdks/sdk-tizen/sdkTizen.js +2 -0
  18. package/dist/src/sdks/sdk-webos/sdkWebos.js +2 -0
  19. package/dist/src/sdks/sdk-webpack/sdkWebpack.js +2 -0
  20. package/dist/src/tasks/deploy/aswS3/deployS3.js +3 -10
  21. package/dist/src/tasks/deploy/aswS3/distToLiveS3.js +4 -5
  22. package/dist/src/tasks/deploy/hbbtv/deployHbbtv.js +1 -1
  23. package/dist/src/tasks/task.rnv.build.js +16 -6
  24. package/dist/src/tasks/task.rnv.configure.js +2 -0
  25. package/dist/src/tasks/task.rnv.deploy.js +2 -0
  26. package/dist/src/tasks/task.rnv.platform.configure.js +33 -1
  27. package/dist/src/tasks/task.rnv.start.js +2 -0
  28. package/dist/src/utils/copyTheoPlayerLibs.js +48 -0
  29. package/dist/src/utils/zipStagingProdBuildsByPlatforms.js +3 -3
  30. package/dist/templates/platforms/androidtv/project/amazoniap/build.gradle +2 -2
  31. package/dist/templates/platforms/androidtv/project/app/build.gradle +17 -21
  32. package/dist/templates/platforms/androidtv/project/app/proguard-rules.pro +15 -0
  33. package/dist/templates/platforms/androidtv/project/app/src/bigscreenAppstage/res/raw/configuration.json +1 -2
  34. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeFromJavaScript.kt +4 -58
  35. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/bridge/BridgeToJavaScript.kt +15 -0
  36. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/configuration/BridgeConfig.kt +2 -1
  37. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ActivityModule.kt +0 -3
  38. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/ApplicationModule.kt +2 -2
  39. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/di/PerActivity.kt +0 -0
  40. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryConfigured.kt +33 -0
  41. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryExoPlayerCustomized.kt +7 -1
  42. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryTheoPlayerCustomized.kt +14 -0
  43. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/PlayerFactoryVersion.kt +27 -0
  44. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/global/utils/SourceDrmOverridden.kt +42 -0
  45. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/model/MediaEventType.kt +3 -0
  46. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/SourceParser.kt +89 -0
  47. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/Mainview.kt +0 -3
  48. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/PlayerCache.kt +2 -2
  49. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/view/WebViewActivity.kt +24 -83
  50. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/viewmodel/WebViewModel.kt +48 -111
  51. package/dist/templates/platforms/androidtv/project/app/src/main/res/layout/activity_web_view.xml +23 -71
  52. package/dist/templates/platforms/androidtv/project/common/build.gradle +2 -2
  53. package/dist/templates/platforms/androidtv/project/googleiap/build.gradle +2 -2
  54. package/package.json +1 -1
  55. package/renative.engine.json +2 -0
  56. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/jump/JumpAnalytics.kt +0 -211
  57. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/ContentModelParser.kt +0 -16
  58. package/dist/templates/platforms/androidtv/project/app/src/main/java/com/twentyfouri/tvbridge/webview/parser/DeviceInfoParser.kt +0 -22
@@ -5,7 +5,6 @@ import android.content.Context
5
5
  import android.content.Intent
6
6
  import android.graphics.Bitmap
7
7
  import android.graphics.Canvas
8
- import android.net.Uri
9
8
  import android.os.Build
10
9
  import android.util.Log
11
10
  import android.view.KeyEvent
@@ -13,15 +12,9 @@ import android.view.View
13
12
  import android.webkit.CookieManager
14
13
  import android.webkit.WebChromeClient
15
14
  import android.webkit.WebView
16
- import androidx.databinding.BaseObservable
17
- import androidx.databinding.Bindable
18
- import com.google.android.exoplayer2.C
19
- import com.google.android.exoplayer2.SeekParameters
20
15
  import com.google.gson.JsonArray
21
16
  import com.google.gson.JsonObject
22
17
  import com.twentyfouri.player.base.*
23
- import com.twentyfouri.player.exoplayer.PlayerExoPlayer
24
- import com.twentyfouri.tvbridge.BR
25
18
  import com.twentyfouri.tvbridge.BuildConfig
26
19
  import com.twentyfouri.tvbridge.Flavor
27
20
  import com.twentyfouri.tvbridge.bridge.BridgeFromJavaScript
@@ -29,14 +22,12 @@ import com.twentyfouri.tvbridge.bridge.BridgeToJavaScript
29
22
  import com.twentyfouri.tvbridge.common.*
30
23
  import com.twentyfouri.tvbridge.configuration.BridgeConfig
31
24
  import com.twentyfouri.tvbridge.global.utils.LocalStorage
25
+ import com.twentyfouri.tvbridge.global.utils.PlayerFactoryVersion
32
26
  import com.twentyfouri.tvbridge.global.utils.SourceDrmOverridden
33
- import com.twentyfouri.tvbridge.jump.JumpAnalytics
34
27
  import com.twentyfouri.tvbridge.webview.client.BridgeWebView
35
28
  import com.twentyfouri.tvbridge.webview.client.BridgeWebViewClient
36
29
  import com.twentyfouri.tvbridge.webview.client.BridgeWebViewClient.BridgeWebViewClientCallback
37
30
  import com.twentyfouri.tvbridge.webview.model.AnalyticsPlaybackInfo
38
- import com.twentyfouri.tvbridge.webview.model.ContentModel
39
- import com.twentyfouri.tvbridge.webview.model.DrmModel
40
31
  import com.twentyfouri.tvbridge.webview.model.MediaEventType
41
32
  import com.twentyfouri.tvbridge.webview.view.Mainview
42
33
  import com.twentyfouri.tvbridge.webview.view.PlayerCache
@@ -44,7 +35,6 @@ import org.json.JSONArray
44
35
  import org.json.JSONException
45
36
  import org.json.JSONObject
46
37
  import java.net.NetworkInterface
47
- import java.net.URI
48
38
  import javax.inject.Inject
49
39
 
50
40
  /**
@@ -56,7 +46,7 @@ class WebViewModel @Inject constructor(
56
46
  private val config: BridgeConfig,
57
47
  private val iapService: IapService,
58
48
  val playerFactory: PlayerFactoryBase
59
- ) : BaseObservable(), EventListener {
49
+ ) : EventListener {
60
50
  var player: PlayerBase? = null
61
51
  private var view: Mainview? = null
62
52
  private val jsBridge = BridgeToJavaScript(config) { s: String? ->
@@ -64,12 +54,9 @@ class WebViewModel @Inject constructor(
64
54
  }
65
55
  private val iapCallback = InnerIapCallback()
66
56
  private val playerCache = PlayerCache()
67
- private val jumpAnalytics = JumpAnalytics()
68
57
 
69
- private var contentModel: ContentModel? = null
58
+ private var source: Source? = null
70
59
 
71
- val videoTrack: VideoTrack?
72
- get() = player?.selectedVideoTrack
73
60
  val audioTrack: AudioTrack?
74
61
  get() = player?.selectedAudioTrack
75
62
  val subtitleTrack: TextTrack?
@@ -77,17 +64,6 @@ class WebViewModel @Inject constructor(
77
64
 
78
65
  var appUrl: String? = null
79
66
 
80
- var urlSetterVisible: Boolean = false
81
- set(value) {
82
- if (field == value) return
83
- field = value
84
- notifyPropertyChanged(BR.urlSetterVisibility)
85
- }
86
-
87
- @get:Bindable
88
- val urlSetterVisibility: Int
89
- get() = if (urlSetterVisible) View.VISIBLE else View.GONE
90
-
91
67
  fun attachView(view: Mainview?) {
92
68
  this.view = view
93
69
  if (view != null) {
@@ -142,52 +118,42 @@ class WebViewModel @Inject constructor(
142
118
 
143
119
  fun onClickGo() {
144
120
  view?.loadUrl(appUrl)
145
- urlSetterVisible = false
146
121
  if (BuildConfig.DEBUG) {
147
122
  view?.hideKeyboard()
148
123
  }
149
124
  }
150
125
 
151
- fun setVideo(contentModel: ContentModel) {
152
- logContentModel(contentModel)
153
- playDirectly(contentModel)
154
- }
155
-
156
- private fun logContentModel(contentModel: ContentModel) {
157
- Log.i("BridgeVideo", "Url: " + contentModel.streamUrl)
158
- val drmModel = contentModel.drmModel
159
- if (drmModel != null) {
160
- Log.i("BridgeVideo", "DRM: " + drmModel.drmSchemeUuid)
161
- Log.i("BridgeVideo", "LicenseUrl: " + drmModel.drmLicenseUrl)
126
+ fun setVideo(source: Source) {
127
+ var adaptedSource = source
128
+ if (config.drm.shouldOverrideDrmCallback()) {
129
+ adaptedSource = SourceDrmOverridden.replaceSource(adaptedSource)
162
130
  }
131
+ logSource(adaptedSource)
132
+ playDirectly(adaptedSource)
163
133
  }
164
134
 
165
- private fun playInExoPlayerDemoApp(contentModel: ContentModel) {
166
- val intent = Intent("com.google.android.exoplayer.demo.action.VIEW", Uri.parse(contentModel.streamUrl))
167
- val drmModel = contentModel.drmModel
168
- if (drmModel != null) {
169
- intent.putExtra("drm_scheme", drmModel.drmSchemeUuid)
170
- intent.putExtra("drm_license_url", drmModel.drmLicenseUrl)
171
- }
172
- try {
173
- context.startActivity(intent)
174
- } catch (e: Exception) {
175
- Log.w("WebViewModel", "Failed to start ExoPlayer demo app", e)
135
+ private fun logSource(source: Source) {
136
+ Log.i("BridgeVideo", "Url: ${source.url}")
137
+ when (val drmModel = source.drm.firstOrNull()) {
138
+ is SourceDrmWidevine -> {
139
+ Log.i("BridgeVideo", "DRM: " + drmModel.packageName)
140
+ Log.i("BridgeVideo", "LicenseUrl: " + drmModel.licenseServer)
141
+ }
142
+ is SourceDrmPlayready -> {
143
+ Log.i("BridgeVideo", "DRM: " + drmModel.packageName)
144
+ Log.i("BridgeVideo", "LicenseUrl: " + drmModel.licenseServer)
145
+ }
146
+ is SourceDrmOverridden -> {
147
+ Log.i("BridgeVideo", "DRM: " + drmModel.packageName)
148
+ Log.i("BridgeVideo", "LicenseUrl: " + drmModel.licenseServer)
149
+ }
176
150
  }
177
151
  }
178
152
 
179
- private fun playDirectly(contentModel: ContentModel) {
180
- this.contentModel = contentModel
181
- (player as? PlayerExoPlayer)?.exoPlayer?.also { exoPlayer ->
182
- jumpAnalytics.setVideoPlayer(exoPlayer)
183
- exoPlayer.setSeekParameters(SeekParameters.CLOSEST_SYNC)
184
- }
153
+ private fun playDirectly(source: Source) {
154
+ this.source = source
185
155
  player?.also { player ->
186
- player.source = Source {
187
- url = contentModel.streamUrl?.let { URI(it) }
188
- mimeType = detectMimeType(contentModel)
189
- contentModel.drmModel?.let { buildDrm(it) }?.also { drm.add(it) }
190
- }
156
+ player.source = source
191
157
 
192
158
  if (isLowEndDevice) {
193
159
  player.trackRestrictions = player.trackRestrictions.buildUpon {
@@ -207,43 +173,6 @@ class WebViewModel @Inject constructor(
207
173
  }
208
174
  }
209
175
 
210
- private fun detectMimeType(contentModel: ContentModel) =
211
- when (contentModel.streamType) {
212
- null, "" -> null
213
- ".mpd", "mpd", "dash" -> ManifestDash.mimeType
214
- ".ism", "ism", "ss" -> ManifestSmoothStreaming.mimeType
215
- ".m3u8", "m3u8", "hls" -> ManifestHls.mimeType
216
- else -> null
217
- }
218
-
219
- private fun buildDrm(drmModel: DrmModel): SourceDrm? {
220
- val drmScheme = drmModel.drmSchemeUuid
221
- val useOverride = drmModel.overrideDrmCallback ?: config.drm.shouldOverrideDrmCallback()
222
- val useWidevine = drmScheme == "widevine" || drmScheme == C.WIDEVINE_UUID.toString()
223
- val usePlayReady = drmScheme == "playready" || drmScheme == C.PLAYREADY_UUID.toString()
224
- return when {
225
- drmScheme == null -> null
226
- useOverride -> SourceDrmOverridden {
227
- packageName = when {
228
- useWidevine -> DrmWidevine.packageName
229
- usePlayReady -> DrmPlayready.packageName
230
- else -> ""
231
- }
232
- licenseServer = drmModel.drmLicenseUrl?.let { URI(it) }
233
- forceLicenseServer = true
234
- }
235
- useWidevine -> SourceDrmWidevine {
236
- licenseServer = drmModel.drmLicenseUrl?.let { URI(it) }
237
- forceLicenseServer = true
238
- }
239
- usePlayReady -> SourceDrmWidevine {
240
- licenseServer = drmModel.drmLicenseUrl?.let { URI(it) }
241
- forceLicenseServer = true
242
- }
243
- else -> SourceDrmUnrecognized(drmScheme)
244
- }
245
- }
246
-
247
176
  private val isLowEndDevice: Boolean
248
177
  get() = when (Build.MODEL) {
249
178
  "AFTB" -> true
@@ -256,9 +185,9 @@ class WebViewModel @Inject constructor(
256
185
  }
257
186
 
258
187
  fun resumePlayer() {
259
- val savedContentModel = playerCache.savedContentModel
260
- if (playerCache.loadFromCache && savedContentModel != null && playerCache.savedPlayerState !== PlayerCache.PlayerState.PAUSED) {
261
- setVideo(savedContentModel)
188
+ val savedSource = playerCache.savedSource
189
+ if (playerCache.loadFromCache && savedSource != null && playerCache.savedPlayerState !== PlayerCache.PlayerState.PAUSED) {
190
+ setVideo(savedSource)
262
191
  var position = playerCache.savedPlayerPosition
263
192
  val player = this.player ?: return
264
193
  if (player.live) {
@@ -283,26 +212,24 @@ class WebViewModel @Inject constructor(
283
212
 
284
213
  fun stopPlayer() {
285
214
  view?.setBlackCurtainVisibility(View.VISIBLE)
286
- contentModel = null
215
+ source = null
287
216
 
288
217
  player?.also { player ->
289
218
  player.removeEventListener(Event.ALL, this)
290
219
  player.unload()
291
- jumpAnalytics.setVideoPlayer(null)
292
220
  }
293
221
  }
294
222
 
295
223
  fun releasePlayer() {
296
224
  val player = this.player ?: return
297
- if (contentModel != null) {
225
+ if (source != null) {
298
226
  playerCache.loadFromCache = true
299
- playerCache.savedContentModel = contentModel
227
+ playerCache.savedSource = source
300
228
  playerCache.savedPlayerDuration = player.duration
301
229
  playerCache.savedPlayerPosition = player.currentTime
302
230
  playerCache.savedPlayerState = if (player.playing) PlayerCache.PlayerState.PLAYING else PlayerCache.PlayerState.PAUSED
303
231
  }
304
232
  player.unload()
305
- jumpAnalytics.setVideoPlayer(null)
306
233
  }
307
234
 
308
235
  val currentPosition: Double
@@ -317,7 +244,7 @@ class WebViewModel @Inject constructor(
317
244
  val isPlayerPlaying: Boolean
318
245
  get() = player?.playing == true
319
246
  val isInPlayer: Boolean
320
- get() = player != null && contentModel != null
247
+ get() = player != null && source != null
321
248
 
322
249
  fun loadUrl(url: String?) {
323
250
  view?.loadUrl(url)
@@ -359,6 +286,7 @@ class WebViewModel @Inject constructor(
359
286
  }
360
287
  is LoadedMetadataEvent -> {
361
288
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.LOADEDMETADATA)
289
+ jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(MediaEventType.TRACKS_CHANGED, player.audioTracks, player.textTracks)
362
290
  }
363
291
  is CanPlayEvent -> {
364
292
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.CANPLAY)
@@ -389,13 +317,21 @@ class WebViewModel @Inject constructor(
389
317
  jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.PAUSE)
390
318
  }
391
319
  }
392
- is LoadedMetadataEvent,
393
320
  is AddAudioTrackEvent, is AddTextTrackEvent,
394
321
  is RemoveAudioTrackEvent, is RemoveTextTrackEvent,
395
322
  is ChangeAudioTrackEvent, is ChangeTextTrackEvent -> {
396
323
  Log.d("WebViewModel", "onTracksChanged: audio=$audioTrack subtitle=$subtitleTrack")
397
324
  jsBridge.bridgeAndroidToJavaScript_MediaTrackEvent(MediaEventType.TRACKS_CHANGED, player.audioTracks, player.textTracks)
398
325
  }
326
+ is AdBreakStartedEvent -> {
327
+ jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.AD_BREAK_START)
328
+ }
329
+ is AdBreakEndedEvent -> {
330
+ jsBridge.bridgeAndroidToJavaScript_MediaEvent(MediaEventType.AD_BREAK_END)
331
+ }
332
+ is AdBreaksRescheduledEvent -> {
333
+ jsBridge.bridgeAndroidToJavaScript_MediaAdBreaksEvent(MediaEventType.AD_BREAKS_RESCHEDULED, player.timeline)
334
+ }
399
335
  }
400
336
  }
401
337
 
@@ -424,9 +360,7 @@ class WebViewModel @Inject constructor(
424
360
  }
425
361
 
426
362
  fun setPlaybackInfo(playbackInfo: AnalyticsPlaybackInfo) {
427
- if ("JUMP" == playbackInfo.name) {
428
- jumpAnalytics.setPlaybackInfo(playbackInfo)
429
- }
363
+ // previously used for Jump analytics, not supported with THEO
430
364
  }
431
365
 
432
366
  fun showMessage(message: String?) {
@@ -524,11 +458,14 @@ class WebViewModel @Inject constructor(
524
458
  fun detectDeviceInfo(): JSONObject {
525
459
  val deviceInfo = JSONObject()
526
460
  try {
461
+ val engineVersion = PlayerFactoryVersion.from(playerFactory)
527
462
  deviceInfo.put("deviceBrand", Build.MANUFACTURER)
528
463
  deviceInfo.put("deviceModel", Build.MODEL)
529
464
  deviceInfo.put("osVersion", Build.VERSION.RELEASE)
530
465
  deviceInfo.put("appFlavor", BuildConfig.FLAVOR)
531
466
  deviceInfo.put("appVersion", BuildConfig.VERSION_NAME)
467
+ deviceInfo.put("engineName", engineVersion.engineName)
468
+ deviceInfo.put("engineVersion", engineVersion.engineVersion)
532
469
 
533
470
  val drmKeySystems = mutableSetOf<String>()
534
471
  playerFactory.getSupportedFormats(context).manifest.forEach { manifest ->
@@ -1,76 +1,28 @@
1
- <layout xmlns:android="http://schemas.android.com/apk/res/android"
2
- xmlns:app="http://schemas.android.com/apk/res-auto"
3
- xmlns:tools="http://schemas.android.com/tools">
1
+ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2
+ android:layout_width="match_parent"
3
+ android:layout_height="match_parent"
4
+ android:background="@android:color/black">
4
5
 
5
- <data>
6
-
7
- <variable
8
- name="viewModel"
9
- type="com.twentyfouri.tvbridge.webview.viewmodel.WebViewModel" />
10
- </data>
6
+ <com.twentyfouri.player.base.PlayerView
7
+ android:id="@+id/player_view"
8
+ android:layout_width="match_parent"
9
+ android:layout_height="match_parent" />
11
10
 
12
- <RelativeLayout
11
+ <View
12
+ android:id="@+id/black_curtain"
13
13
  android:layout_width="match_parent"
14
14
  android:layout_height="match_parent"
15
- android:background="@android:color/black"
16
- tools:context=".webview.ui.view.WebViewActivity">
17
-
18
- <com.twentyfouri.player.base.PlayerView
19
- android:id="@+id/exoplayer_view"
20
- android:layout_width="match_parent"
21
- android:layout_height="match_parent" />
22
-
23
- <View
24
- android:id="@+id/black_curtain"
25
- android:layout_width="match_parent"
26
- android:layout_height="match_parent"
27
- android:background="@android:color/black" />
28
-
29
- <LinearLayout
30
- android:id="@+id/url_setter"
31
- android:layout_width="match_parent"
32
- android:layout_height="wrap_content"
33
- android:layout_centerInParent="true"
34
- android:layout_margin="80dp"
35
- android:orientation="vertical"
36
- app:visibility="@{viewModel.urlSetterVisibility}">
37
-
38
- <EditText
39
- android:id="@+id/url"
40
- android:layout_width="match_parent"
41
- android:layout_height="wrap_content"
42
- android:nextFocusUp="@+id/url"
43
- android:nextFocusLeft="@+id/url"
44
- android:nextFocusRight="@+id/url"
45
- android:textColor="@android:color/white"/>
46
-
47
- <Button
48
- android:id="@+id/button_go"
49
- android:layout_width="100dp"
50
- android:layout_height="wrap_content"
51
- android:background="@drawable/button_focus"
52
- android:textColor="@android:color/black"
53
- android:nextFocusDown="@+id/button_go"
54
- android:nextFocusLeft="@+id/button_go"
55
- android:nextFocusRight="@+id/button_go"
56
- android:onClick="@{() -> viewModel.onClickGo()}"
57
- android:text="GO" />
58
-
59
- </LinearLayout>
60
-
61
- <com.twentyfouri.tvbridge.webview.client.BridgeWebView
62
- android:id="@+id/webview"
63
- android:layout_width="match_parent"
64
- android:layout_height="match_parent"
65
- android:layout_alignParentBottom="true"
66
- android:layout_alignParentEnd="true"
67
- android:layout_alignParentStart="true"
68
- android:layout_alignParentTop="true"
69
- android:background="@android:color/transparent"
70
- android:visibility="gone"/>
71
-
72
- </RelativeLayout>
73
-
74
- </layout>
75
-
15
+ android:background="@android:color/black" />
76
16
 
17
+ <com.twentyfouri.tvbridge.webview.client.BridgeWebView
18
+ android:id="@+id/webview"
19
+ android:layout_width="match_parent"
20
+ android:layout_height="match_parent"
21
+ android:layout_alignParentStart="true"
22
+ android:layout_alignParentTop="true"
23
+ android:layout_alignParentEnd="true"
24
+ android:layout_alignParentBottom="true"
25
+ android:background="@android:color/transparent"
26
+ android:visibility="gone" />
27
+
28
+ </RelativeLayout>
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
2
2
  apply plugin: 'kotlin-android'
3
3
 
4
4
  android {
5
- compileSdkVersion 31
5
+ compileSdkVersion 33
6
6
 
7
7
  compileOptions {
8
8
  sourceCompatibility JavaVersion.VERSION_1_8
@@ -11,7 +11,7 @@ android {
11
11
 
12
12
  defaultConfig {
13
13
  minSdkVersion 21
14
- targetSdkVersion 30
14
+ targetSdkVersion 33
15
15
 
16
16
  versionCode 1
17
17
  versionName "1.0"
@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
2
2
  apply plugin: 'kotlin-android'
3
3
 
4
4
  android {
5
- compileSdkVersion 31
5
+ compileSdkVersion 33
6
6
 
7
7
  compileOptions {
8
8
  sourceCompatibility JavaVersion.VERSION_1_8
@@ -11,7 +11,7 @@ android {
11
11
 
12
12
  defaultConfig {
13
13
  minSdkVersion 21
14
- targetSdkVersion 30
14
+ targetSdkVersion 33
15
15
 
16
16
  versionCode 1
17
17
  versionName "1.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@24i/smartapps-bigscreen-rnv-build-engine",
3
- "version": "0.17.6-alpha.8",
3
+ "version": "0.17.6",
4
4
  "description": "Package with build engine for SmartApps BIGscreen projects...",
5
5
  "main": "dist/src/index.js",
6
6
  "scripts": {
@@ -8,11 +8,13 @@
8
8
  "platforms": {
9
9
  "androidtv": {},
10
10
  "entone": {},
11
+ "firetv": {},
11
12
  "hbbtv": {},
12
13
  "kreatv": {},
13
14
  "saphi": {},
14
15
  "tizen": {},
15
16
  "vidaa": {},
17
+ "smartcast": {},
16
18
  "webos": {},
17
19
  "webtv": {},
18
20
  "xbox": {}