- "Cleartext HTTP trafiğine izin verilmez" sorununu düzeltme hatalar
- "SSLHandshakeException", "CertPathValidatorException" sorununu düzeltme ve "ERR_CERT_AUTHORITY_INVALID" hatalar
- Neden bazı medya dosyaları aranamıyor?
- Bazı MP3 dosyalarında arama neden yanlış gösteriliyor?
- Videomdaki arama işlemi neden yavaş?
- Bazı MPEG-TS dosyaları neden oynatılamıyor?
- Bazı MPEG-TS dosyalarında altyazılar neden bulunamıyor?
- Bazı MP4/FMP4 dosyaları neden yanlış oynatılıyor?
- Bazı akışlar neden HTTP yanıt kodu 301 veya 302 ile başarısız oluyor?
- Bazı akışlar neden UnrecognizedInputFormatException hatasıyla başarısız oluyor?
- setPlaybackParameters özelliği neden bazı cihazlarda düzgün çalışmıyor?
- "Oynatıcıya yanlış iş parçacığında erişiliyor" nedir? hataların anlamı nedir?
- "Beklenmeyen durum satırı: ICY 200 OK" sorununu nasıl düzeltebilirim?
- Oynatılan yayının canlı yayın olup olmadığını nasıl sorgulayabilirim?
- Uygulamam arka planda çalışırken nasıl ses çalabilirim?
- ExoPlayer neden içeriğimi destekliyor ancak ExoPlayer Cast kitaplığı neden desteklemiyor?
- İçerik oynatılamamasına rağmen neden hata gösterilmiyor?
- Kod çözme kitaplığının yüklenmesini ve oynatma için kullanılmasını nasıl sağlayabilirim?
- YouTube videolarını doğrudan ExoPlayer ile oynatabilir miyim?
- Video oynatma takılıyor
- Kararsız API lint hataları
"Cleartext HTTP trafiğine izin verilmiyor" sorununu düzeltme hatalar
Bu hata, uygulamanız şifresiz metin HTTP trafiği (yani
http://
yerine https://
).
kabul edilmez. Uygulamanız Android 9 (API düzeyi 28) veya sonraki sürümleri hedefliyorsa cleartext
HTTP trafiği, varsayılan yapılandırma tarafından devre dışı bırakılmıştır.
Uygulamanızın şifresiz HTTP trafiğiyle çalışması gerekiyorsa bir
İzin veren Ağ Güvenliği Yapılandırması. Android'in
ağ güvenliği belgeleri
inceleyebilirsiniz. Tüm şifresiz metin HTTP trafiğini etkinleştirmek için
Uygulamanızın application
öğesine android:usesCleartextTraffic="true"
AndroidManifest.xml
.
ExoPlayer demo uygulaması, varsayılan Ağ Güvenliği Yapılandırması'nı kullanır ve bu nedenle şifresiz metin HTTP trafiğine izin vermez. Talimatları uygulayarak bu özelliği etkinleştirebilirsiniz bölümünü ziyaret edin.
"SSLHandshakeException", "CertPathValidatorException" sorununu düzeltme ve "ERR_CERT_AUTHORITY_INVALID" hatalar
SSLHandshakeException
, CertPathValidatorException
ve
ERR_CERT_AUTHORITY_INVALID
öğelerinin tümü sunucunun SSL'sinde bir sorun olduğunu gösteriyor
sertifikası. Bu hatalar ExoPlayer'a özgü değildir. Görüntüleyin
Android'in SSL dokümanları
inceleyebilirsiniz.
Neden bazı medya dosyaları aranamıyor?
ExoPlayer, varsayılan olarak tek yöntemin doğru arama işlemleri gerçekleştirmek, oynatıcının ekleyebilirsiniz. ExoPlayer bu tür dosyaları aranamaz olarak değerlendirir. Modern medyaların çoğu kapsayıcı biçimleri arasında arama için meta veriler (örnek bir dizin gibi) bulunur. iyi tanımlanmış arama algoritması (örneğin, Ogg için interpolasyonlu iki bölüm araması) veya Bu, içeriklerinin sabit bit hızında olduğunu gösterir. Verimli arama işlemleri mümkün ve bu durumlarda ExoPlayer tarafından desteklenir.
Aramanız gerekiyorsa ancak aranamayan bir medyaya sahipseniz, kapsayıcı biçimi kullanmaya başlamanıza yardımcı olur. MP3, ADTS ve AMR dosyaları için dosyaların hiçbir zaman sabit olmadığı varsayımıyla arama yöntemini de etkinleştirebilirsiniz. (açıklandığı şekilde bit hızı) burada bulabilirsiniz.
Bazı MP3 dosyalarında arama neden hatalı oluyor?
Değişken bit hızı (VBR) MP3 dosyaları, şu özelliklere sahip kullanım alanları için temel olarak uygun değildir: tam arama gerektirir. Bunun iki nedeni vardır:
- Tam arama için kapsayıcı biçimi ideal olarak kesin sonuç verir. zamandan bayta eşlemeyi kullanmayı düşünebilirsiniz. Bu eşleme, oyuncunun bir karşılık gelen bayt uzaklığına sarma zamanı isteğinde bulundu ve ayrıştırıp oynatabilirsiniz. Kullanılabilecek başlıklar bu eşlemeyi MP3'te (XING başlıkları gibi) belirtmek genellikle emin olun.
- Kesin bir zamandan bayta eşleme (veya herhangi bir zamandan bayta eşleme) oluşturulduğunda, tam olarak kapsayıcının akışta mutlak örnek zaman damgaları içerip içermediğine bakar. İçinde Bu durumda, oyuncu arama süresini ilgili tahminin en iyi tahminiyle bayt uzaklığı, bu ofsetten medya istemeye başlayın, ilki ayrıştır mutlak örnek zaman damgasını kullanabilir ve açıklamalı bir ikili program araması yapabilirsiniz doğru örneği bulana kadar yavaşlıyor. Maalesef MP3 akışa mutlak örnek zaman damgaları eklediğinden, bu yaklaşım yapmasını sağlar.
Bu nedenlerle, bir VBR MP3 dosyasında kesin arama yapmanın tek yolu
dosyanın tamamını tarayabilir ve
oynatıcıya gitmiş olur. Bu strateji, FLAG_ENABLE_INDEX_SEEKING
kullanılarak etkinleştirilebilir.
Bu ayar, DefaultExtractorsFactory
üzerinde
setMp3ExtractorFlags
. Büyük MP3 dosyaları için iyi ölçeklenmeyeceğini,
(özellikle kullanıcı kısa süre içinde akışın sonuna yaklaşmaya çalışıyorsa)
(oynatma işlemi başlatıldıktan sonra) (oynatıcının, indirilene kadar beklemesi gerekir)
ve sarmayı gerçekleştirmeden önce tüm akışı dizine eklemiştir. ExoPlayer'da,
Bu durumda doğruluktan çok hızı optimize etmeye
Bu nedenle FLAG_ENABLE_INDEX_SEEKING
varsayılan olarak devre dışıdır.
Oynattığınız medyayı siz kontrol ediyorsanız daha fazla uygun kapsayıcı formatıdır (örneğin, MP4). Bildiğimiz hiçbir kullanım alanı yok Bu örnekte, MP3 medya biçimi için en iyi seçimdir.
Videomdaki arama işlemi neden yavaş?
Oynatıcı bir videoda yeni bir oynatma konumu istediğinde iki işlem yapması gerekir. şeyler:
- Yeni oynatma konumuna karşılık gelen verileri arabelleğe yükleyin (veriler önceden arabelleğe alınmışsa bu işlem gerekli olmayabilir).
- Önce video kod çözücüyü temizleyin ve I-karesinden (animasyon karesi) kod çözmeyi başlatın Çoğu videoda kullanılan kare içi kodlama nedeniyle yeni oynatma konumunu biçimlendirmelerini kullanabilirsiniz. Aramanın doğru olduğundan (yani, oynatma tam olarak arama konumunda başladığından), önceki I-karesinin ve arama konumunun kodunun çözülmesi gerekir ve (ekranda gösterilmeden) silinir.
(1)'in neden olduğu gecikme, veya verileri diskte önceden önbelleğe alma yöntemini kullanabilirsiniz.
(2)'deki gecikme, doğruluğun azaltılmasıyla azaltılabilir.
ExoPlayer.setSeekParameters
kullanarak veya videoyu yeniden kodlayarak
daha sık I-çerçevelere sahip olma (bu da daha büyük bir çıktı dosyasına neden olur).
Bazı MPEG-TS dosyaları neden oynatılamıyor?
Bazı MPEG-TS dosyaları erişim birimi sınırlayıcıları (AUD) içermez. Varsayılan olarak ExoPlayer, kare sınırlarını uygun fiyata tespit etmek için AUD'den yararlanır. Benzer şekilde bazı MPEG-TS dosyaları IDR animasyon kareleri içermez. Varsayılan olarak yalnızca bu tür ExoPlayer tarafından değerlendirilen animasyon karelerinin sayısı.
Oynaması istendiğinde ExoPlayer arabelleğe alma durumunda kalmış gibi görünecek
AUD veya IDR animasyon kareleri içermeyen MPEG-TS dosyası. Bu tür dosyaları oynatmanız gerekirse
FLAG_DETECT_ACCESS_UNITS
ve
Sırasıyla FLAG_ALLOW_NON_IDR_KEYFRAMES
. Bu flag'ler üzerinde
DefaultExtractorsFactory
: setTsExtractorFlags
veya şurada:
DefaultHlsExtractorFactory
kullanarak
oluşturucu.
FLAG_DETECT_ACCESS_UNITS
kullanımının
AUD tabanlı çerçeve sınırı algılamaya göre hesaplama açısından pahalıdır. Kullanım
FLAG_ALLOW_NON_IDR_KEYFRAMES
,
oynatmanın başlatılması ve bazı MPEG-TS dosyaları oynatılırken sarma sonrasında.
Bazı MPEG-TS dosyalarında altyazılar neden bulunamıyor?
Bazı MPEG-TS dosyaları CEA-608 parçaları içerir ancak bunları
olduğu için ExoPlayer bunları algılayamaz. Bu
beklenen altyazı parçasını listeleyerek
erişilebilirlik de dahil olmak üzere DefaultExtractorsFactory
için altyazı biçimleri
şu verileri MPEG-TS akışında tanımlamak için kullanılabilecek araçlardır:
Kotlin
val extractorsFactory = DefaultExtractorsFactory() .setTsSubtitleFormats( listOf( Format.Builder() .setSampleMimeType(MimeTypes.APPLICATION_CEA608) .setAccessibilityChannel(accessibilityChannel) // Set other subtitle format info, such as language. .build() ) ) val player: Player = ExoPlayer.Builder(context, DefaultMediaSourceFactory(context, extractorsFactory)).build()
Java
DefaultExtractorsFactory extractorsFactory = new DefaultExtractorsFactory() .setTsSubtitleFormats( ImmutableList.of( new Format.Builder() .setSampleMimeType(MimeTypes.APPLICATION_CEA608) .setAccessibilityChannel(accessibilityChannel) // Set other subtitle format info, such as language. .build())); Player player = new ExoPlayer.Builder(context, new DefaultMediaSourceFactory(context, extractorsFactory)) .build();
Bazı MP4/FMP4 dosyaları neden yanlış oynatılıyor?
Bazı MP4/FMP4 dosyaları, medya zaman çizelgesini örnek listelerini atlama, taşıma veya tekrarlama. ExoPlayer'da kısmi destek mevcut düzenleme listelerini uygulamak için kullanılır. Örneğin, örnek gruplarını geciktirebilir veya tekrarlayabilir bir senkronizasyon örneğinde başlıyor ancak ses örneklerini veya senkronizasyon örneğinde başlamayan düzenlemeler için videodan önce gösterilen medyalar.
Medyanın bu bölümünün beklenmedik bir şekilde eksik olduğunu veya tekrarlandığını görüyorsanız
Mp4Extractor.FLAG_WORKAROUND_IGNORE_EDIT_LISTS
ayarlamayı deneyin veya
FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_EDIT_LISTS
, bu da
düzenleme listelerini tamamen yoksaymasını sağlayabilirsiniz. Bunlar, üzerinde
DefaultExtractorsFactory
setMp4ExtractorFlags
veya
setFragmentedMp4ExtractorFlags
.
Bazı akışlar neden HTTP yanıt kodu 301 veya 302 ile başarısız oluyor?
301 ve 302 HTTP yanıt kodlarının her ikisi de yönlendirmeyi belirtir. Kısa açıklamalar Wikipedia'da bulunabilir. ExoPlayer bir istekte bulunup durum kodu 301 veya 302 olan bir yanıt alırsa, normalde yeniden yönlendirmeyi izler. normal şekilde oynatmaya başlayabilirsiniz. Bunun varsayılan olarak gerçekleşmediği bir durum protokoller arası yönlendirmeler içindir. Protokoller arası yönlendirme, HTTP'den HTTP'ye veya tam tersi (ya da daha az sıklıkla birlikte çalışır). Bir URL'nin protokoller arası yönlendirmeye neden olup olmadığını wget komut satırı aracını aşağıdaki gibi görürsünüz:
wget "https://yourserver.com/test.mp3" 2>&1 | grep Location
Çıkış şu şekilde görünmelidir:
Location: https://second.com/test.mp3 [following]
Location: http://third.com/test.mp3 [following]
Bu örnekte, iki yönlendirme vardır. İlk yönlendirme kaynağı
https://yourserver.com/test.mp3
- https://second.com/test.mp3
. Her ikisi de
HTTPS kullanılır. Bu nedenle bu, protokoller arası yönlendirme değildir. İkinci yönlendirme kaynağı
https://second.com/test.mp3
- http://third.com/test.mp3
. Bu,
yani protokoller arası yönlendirmedir. ExoPlayer şunu yapmaz:
bu yönlendirmeyi varsayılan yapılandırmasında uygular. Bu da oynatmanın başarısız olacağı anlamına gelir.
Gerekirse ExoPlayer'ı protokoller arası yönlendirmeleri takip edecek şekilde yapılandırabilirsiniz.
örneklendirdiğinizde DefaultHttpDataSource.Factory
bir uygulamadır. Ağ yığınını seçme ve yapılandırma hakkında bilgi edinin
burada bulabilirsiniz.
Bazı akışlar neden UnrecognizedInputFormatException ile başarısız oluyor?
Bu soru, aşağıdaki biçimdeki oynatma hataları ile ilgilidir:
UnrecognizedInputFormatException: None of the available extractors
(MatroskaExtractor, FragmentedMp4Extractor, ...) could read the stream.
Bu hatanın iki olası nedeni vardır. Bunun en yaygın nedeni,
DASH (mpd), HLS (m3u8) veya SmoothStreaming (ism, isml) oynatmaya çalışıyorsunuz
ancak oynatıcı bunu aşamalı bir akış olarak oynatmaya çalışır. Böyle bir içeriği oynatmak için
akışlar için ilgili ExoPlayer modülüne bağlı olmanız gerekir. Bazı durumlarda
akış URI'si standart dosya uzantısıyla bitmez;
MimeTypes.APPLICATION_MPD
, MimeTypes.APPLICATION_M3U8
veya
Açıkça belirtmek için MimeTypes.APPLICATION_SS
- setMimeType
/ MediaItem.Builder
akışın türünü belirtin.
Daha az yaygın olan ikinci neden ise ExoPlayer'ın kapsayıcıyı desteklememesidir. biçimi olabilir. Bu durumda, hata istediğiniz gibi çalışmaya devam edebilir, ancak lütfen Kapsayıcı biçimi ve test akışının ayrıntılarını içeren sorun izleyici. Yeni bir özellik göndermeden önce lütfen mevcut bir özellik isteğini arayın.
setPlaybackParameters neden bazı cihazlarda düzgün çalışmıyor?
Android M ve önceki sürümlerde uygulamanızın hata ayıklama derlemesini çalıştırırken
çalışırken kesintili performans, duyulabilir kusurlar ve yüksek CPU kullanımı
setPlaybackParameters
API'yi kullanabilirsiniz. Çünkü optimizasyon
bu API için önemli olan bir şey, bu komut dosyalarında çalışan hata ayıklama derlemelerinde devre dışı
Android'in sürümleri.
Bu sorunun yalnızca hata ayıklama derlemelerini etkilediğini unutmayın. değil optimizasyonun her zaman etkin olduğu sürüm derlemelerini etkiler. Dolayısıyla son kullanıcılara sunduğunuz sürümler bu sorundan etkilenmemelidir.
"Oynatıcıya yanlış iş parçacığında erişildi" ne yapar? hataların anlamı nedir?
Başlangıç sayfasındaki Mesaj dizisiyle ilgili bir not bölümüne bakın.
"Beklenmeyen durum satırı: ICY 200 OK" sorununu nasıl düzeltebilirim?
Bu sorun, sunucu yanıtında bir ICY durum satırı varsa, bir web sitesini ziyaret eder. ICY durum satırları kullanımdan kaldırıldı ve kullanılmamalıdır. Bu nedenle, sunucuyu kontrol ediyorsanız sunucuyu HTTP uyumlu bir yanıt gönderin. Bunu yapamıyorsanız ExoPlayer OkHttp kitaplığı ICY'yi işleyebildiği için sorunu çözecektir doğru şekilde ekleyebilirsiniz.
Oynatılan yayının canlı yayın olup olmadığını nasıl sorgulayabilirim?
Oynatıcının isCurrentWindowLive
yöntemini sorgulayabilirsiniz. Ayrıca,
pencerenin dinamik olup olmadığını anlamak için isCurrentWindowDynamic
simgesine bakabilirsiniz
(zaman içinde güncellenmeye devam eder)
Uygulamam arka planda çalışırken nasıl ses çalabilirim?
Uygulamanız açıkken sesin çalmaya devam etmesini sağlamak için bu adımları uygulayın arka plan:
- Çalışan bir ön plan hizmetinizin olması gerekir. Bu, sistemin sizi kaynaklarınızı boşa çıkarmak için uğraşmaz.
- Bir
WifiLock
ve birWakeLock
tutmanız gerekir. Bunlar, ve CPU'yu açık tutar. Bu işlem, yüksek bütçelisetWakeMode
numaralı telefonu arayarakExoPlayer
. Bu işlem otomatik olarak gerekli kilitleri doğru zamanda edinip serbest bırakın.
Kilitleri açmanız (setWakeMode
kullanmıyorsanız) ve uygulamayı durdurarak
hizmeti kullanmaya devam edebilirsiniz.
ExoPlayer neden içeriğimi destekliyor ancak ExoPlayer Cast kitaplığı neden desteklemiyor?
Oynatmaya çalıştığınız içerik büyük ihtimalle CORS etkin. Cast çerçevesi, CORS'un etkinleştirilmiş olmasını gerektirir biraz zorlandık.
İçerik neden oynatılamıyor ancak hata gösterilmiyor?
İçeriği oynattığınız cihaz muhtemelen
belirli bir medya örneği biçimini destekler. Kontrol etmek için
oynatıcınızı dinleyici olarak EventLogger
kullanıyor ve bir çizgi arıyorum
aşağıdakine benzer:
[ ] Track:x, id=x, mimeType=mime/type, ... , supported=NO_UNSUPPORTED_TYPE
NO_UNSUPPORTED_TYPE
, cihazın medyanın kodunu çözemediği anlamına gelir
mimeType
tarafından belirtilen örnek biçimi. Android medya biçimlerine bakın
dokümanlarına bakın. Nasıl
oynatma için kullanılacak bir kod çözme kitaplığı mı var? yararlı olabilir.
Kod çözme kitaplığının yüklenmesini ve oynatma için kullanılmasını nasıl sağlayabilirim?
- Kod çözücü kitaplıklarının çoğunda, bağımlılıkları kontrol etmek ve oluşturmak için manuel adımlar bulunur. ilgili kitaplık için BENİOKU’da bulunan adımları uyguladığınızdan emin olun. Örneğin, ExoPlayer FFmpeg kitaplığı için libraries/decoder_ffmpeg/README.md dosyasındaki talimatlar, oynatmak istediğiniz tüm biçimler için kod çözücüleri etkinleştirmek üzere yapılandırma işaretleri kullanın.
- Yerel koda sahip kitaplıklar için doğru kodu kullandığınızdan emin olun
sürümünü kullandığınızdan emin olun.
sırasında ortaya çıkan hatalardır.
.so
göreceksiniz dosyaları her biri için kitaplık yolununlibs
alt dizininde görünür desteklenen mimariyi seçin. - Demo uygulamasındaki kitaplığı kullanarak oynatmayı denemek için şu sayfaya göz atın: paket halinde bulunan kod çözücüleri etkinleştirme. Kütüphanenin BENİOKU bölümünü ziyaret edin: kendi uygulamanızdaki kitaplığı kullanmaya ilişkin talimatlar.
DefaultRenderersFactory
kullanıyorsanız bir bilgi düzeyi görürsünüz "Loaded FfmpegAudioRenderer" gibi bir günlük satırı kod çözücü yüklendiğinden emin olun. Bu eksikse uygulamanın kitaplığını oluşturur.- Logcat'te
LibraryLoader
parametresine ait uyarı düzeyinde günlükler görürseniz bu kitaplığın yerel bileşeninin yüklenemediğini gösterir. Bu kütüphanenin BENİOKU bölümündeki adımları doğru uygulayıp uygulamadığınızı kontrol edin. ve talimatlar uygulanırken hata oluşmadığını kontrol edebilirsiniz.
Kod çözme kitaplıklarını kullanırken hâlâ sorun yaşıyorsanız lütfen Alakalı son sorunlar için Media3 sorun izleyici. Proje için ve kitaplığın yerel bölümünü oluşturmakla ilgiliyse lütfen bize yardımcı olmak için, BENİOKU talimatlarının çalıştırılmasından tam komut satırı çıkışını bir yöntem de ekledik.
YouTube videolarını doğrudan ExoPlayer ile oynatabilir miyim?
Hayır, ExoPlayer, formun URL'leri gibi videoları YouTube'dan oynatamaz
https://www.youtube.com/watch?v=...
Bunun yerine YouTube
IFrame Player API'si
YouTube videolarını Android'de oynatmanın resmi yoludur.
Video oynatma takılıyor
Cihaz, örneğin aşağıdaki durumlarda içeriğin kodunu yeterince hızlı şekilde çözemeyebilir: İçerik bit hızı veya çözünürlüğü cihazın özelliklerini aşıyor. Şunlara ihtiyacınız olabilir: bu tür cihazlarda iyi performans elde etmek için düşük kaliteli içerikler kullanmak.
Android sürümü çalıştıran bir cihazda videoda takılma sorunu yaşıyorsanız Android 6.0'dan (API düzeyi 23) Android 11'e (API düzeyi 30) kadar olan sürümlerde, özellikle de DRM korumalı veya yüksek kare hızlı içerikler oynatırken eşzamansız arabellek sıraya alma özelliğini etkinleştirme.
Kararsız API lint hataları
Media3, API yüzeyinin bir alt kümesi için ikili program uyumluluğunu garanti eder. İlgili içeriği oluşturmak için kullanılan
ikili program uyumluluğunu garanti etmeyen bölümler
@UnstableApi
. Bu ayrımı netleştirmek amacıyla, istikrarsız veri kullanımı,
API sembolleri, @OptIn
ile açıklama eklenmedikçe lint hatası oluşturur.
@UnstableApi
ek açıklaması, bir API'nin kalitesi veya performansıyla ilgili hiçbir şey ifade etmez, yalnızca "API tarafından dondurulmuş" olmadığı gerçeğini ima eder.
Kararsız API lint hatalarını işlemek için iki seçeneğiniz vardır:
- Aynı sonuca ulaşan kararlı bir API kullanmaya geçin.
- Kararsız API'yi kullanmaya devam edin ve kullanıma not olarak
@OptIn
ekleyin. Bunun için daha sonra gösterilecek.
@OptIn
ek açıklamasını ekleyin
Android Studio, ek açıklamayı eklemenize yardımcı olabilir:
Kotlin'de belirli kullanım sitelerine manuel olarak da ek açıklama ekleyebilirsiniz:
import androidx.annotation.OptIn
import androidx.media3.common.util.UnstableApi
@OptIn(UnstableApi::class)
fun functionUsingUnstableApi() { ... }
Java'da da:
import androidx.annotation.OptIn;
import androidx.media3.common.util.UnstableApi;
@OptIn(markerClass = UnstableApi.class)
private void methodUsingUnstableApis() { ... }
package-info.java
dosyası ekleyerek paketlerin tamamı etkinleştirilebilir:
@OptIn(markerClass = UnstableApi.class)
package name.of.your.package;
import androidx.annotation.OptIn;
import androidx.media3.common.util.UnstableApi;
Belirli lint hatasını atlayarak projelerin tamamı etkinleştirilebilir.
lint.xml
dosyası:
<?xml version="1.0" encoding="utf-8"?>
<lint>
<issue id="UnsafeOptInUsageError">
<option name="opt-in" value="androidx.media3.common.util.UnstableApi" />
</issue>
</lint>
Kullanılmaması gereken bir kotlin.OptIn
ek açıklaması da bulunuyor. İnsanların
androidx.annotation.OptIn
ek açıklamasının kullanılması önemlidir.