在 Android Studio 中迁移到 AndroidX 后出现 YoutubeAndroidPlayerAPI 错误

Posted

技术标签:

【中文标题】在 Android Studio 中迁移到 AndroidX 后出现 YoutubeAndroidPlayerAPI 错误【英文标题】:YoutubeAndroidPlayerAPI error after migrating to AndroidX in Android Studio 【发布时间】:2019-11-09 22:37:58 【问题描述】:

我有一个带有 YoutubeandroidPlayerAPI.jar 官方库版本 1.2.2 的 android 本机项目 (java),它具有在我的应用程序中嵌入 Youtube Player 的功能。在迁移到 AndroidX 之前一切正常。

我意识到 YoutubeAndroidPlayerAPI 中的代码不支持 AndroidX。延伸到 Fragment 的 YoutubePlayerSupportFragment 类仍然使用 import android.support.v4.app.Fragment 而不是 androidx.fragment.app.Fragment。

我无法编辑用于迁移到 AndroidX 的 YoutubeAndroidPlayerAPI(只读模式)的代码。

这是我的项目示例代码,在“setArguments”、“getArguments”和“getActivity”处出现错误和红色警告。

public class FragmentVideoPlayer extends YouTubePlayerSupportFragment implements YouTubePlayer.OnInitializedListener 

private YouTubePlayer player;
public FragmentVideoPlayer() 
    

public static FragmentVideoPlayer newInstance(final String videoId) 
        final FragmentVideoPlayer youTubeFragment = new FragmentVideoPlayer();
        final Bundle bundle = new Bundle();
        bundle.putString(KEY_VIDEO_ID, videoId);
        youTubeFragment.setArguments(bundle);
        return youTubeFragment;
    

    @Override
    public void onCreate(Bundle bundle) 
        super.onCreate(bundle);

        final Bundle arguments = getArguments();

        if (bundle != null && bundle.containsKey(KEY_VIDEO_ID)) 
            mVideoId = bundle.getString(KEY_VIDEO_ID);
         else if (arguments != null && arguments.containsKey(KEY_VIDEO_ID)) 
            mVideoId = arguments.getString(KEY_VIDEO_ID);
        

        String API_KEY = new SharedPref(getActivity()).getYoutubeApiKey();
        initialize(API_KEY, this);
    

这是来自 YoutubeAndroidPlayerAPI 的一些代码

    package com.google.android.youtube.player;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.youtube.player.YouTubePlayer.OnInitializedListener;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView.b;
import com.google.android.youtube.player.internal.ab;

public class YouTubePlayerSupportFragment extends Fragment implements Provider 
    private final YouTubePlayerSupportFragment.a a = new YouTubePlayerSupportFragment.a((byte)0);
    private Bundle b;
    private YouTubePlayerView c;
    private String d;
    private OnInitializedListener e;
    private boolean f;

请帮我解决这个问题。如何修复 YoutubeAndroidPlayerAPI jar 文件以支持 AndroidX?

【问题讨论】:

看看这个:***.com/a/56730155/7254873 我已经在 Android Studio 中通过重构迁移到 AndroidX。并在片段等某些导入时手动修复问题。但是,我在具有只读模式的 Jar 文件中的 YoutubeAndroidPlayerAPI 中的片段中更改导入代码时遇到问题。 @zebhi 你找到解决方案了吗? 还没有。几天前,我刚刚向 Google 团队提交了一份错误报告。进展仍在审查中。有些人也有同样的问题。 我刚刚开始一个新的个人项目,我已经面临这种问题.. 【参考方案1】:

Youtube 没有更新播放器库。您可以使用 android-youtube-player https://github.com/PierfrancescoSoffritti/android-youtube-player 它与原生播放器非常相似。它使用 webview 和 iframe 来播放视频。它提供可自定义的播放器控件。

【讨论】:

他们上次更新是 6 年前,我感觉他们不会再更新了。

以上是关于在 Android Studio 中迁移到 AndroidX 后出现 YoutubeAndroidPlayerAPI 错误的主要内容,如果未能解决你的问题,请参考以下文章

从Eclipse迁移到Android studio(还有遇到的各种问题)

Eclipse 工程迁移到 Android Studio

Eclipse 工程迁移到 Android Studio

Eclipse 工程迁移到 Android Studio

Eclipse 工程迁移到 Android Studio

将现有项目迁移到Android Studio 3.3失败