搭建环境:
Android Studio 3.5.2
compileSdkVersion = 26
buildToolsVersion = "26.0.2"
targetSdkVersion = 26
classpath 'com.android.tools.build:gradle:3.0.0'
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
编译与调试架构为:x86
NDK:android-ndk-r12b
问题集锦:
1.
ERROR: Could not find com.android.tools.build:gradle:3.0.0.
Searched in the following locations:
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.0/gradle-3.0.0.pom
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.0/gradle-3.0.0.jar
Required by:
:ijkplayer:unspecified
Add Google Maven repository and sync project
Open File
解决:
在 build.gradle中
buildscript {
repositories {
google() //添加
jcenter()
// 添加
maven{
url'https://maven.google.com'
}
}
}
2.
ERROR: All flavors must now belong to a named flavor dimension.
Affected Modules: ijkplayer-example
在ijkplayer-example的build.gradle中
添加flavorDimensions "800800",其中的800800为project:build.gradle中的versionCode = 800800 值一样。
3.
AGPBI: {"kind":"error","text":"error: \u0027@@array/pref_entries_player\u0027
error: '@@array/pref_entries_player' is incompatible with attribute android:entries (attr) reference.
将android:entries=”@@array/pref_entries_player”改为android:entries=”@array/pref_entries_player”
4.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/tv.danmaku.ijk.media.example-wgmg5D9tlc8DxW12h5a2Fw==/base.apk"],nativeLibraryDirectories=[/data/app/tv.danmaku.ijk.media.example-wgmg5D9tlc8DxW12h5a2Fw==/lib/x86, /system/lib, /system/product/lib]]] couldn't find "libijkffmpeg.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1067)
at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
at java.lang.System.loadLibrary(System.java:1667)
at tv.danmaku.ijk.media.player.IjkMediaPlayer$1.loadLibrary(IjkMediaPlayer.java:179)
at tv.danmaku.ijk.media.player.IjkMediaPlayer.loadLibrariesOnce(IjkMediaPlayer.java:190)
at tv.danmaku.ijk.media.example.activities.VideoActivity.onCreate(VideoActivity.java:137)
解决:需要编译ijkplayer,生成相应的so文件,具体步骤参考:https://blog.csdn.net/silently_frog/article/details/108417227
5.
error: undefined reference to 'ijk_soundtouch_translate'
error: undefined reference to 'ijk_soundtouch_destroy'
error: undefined reference to 'ijk_soundtouch_create'
0004-XXX-link-prebuilt-staic-libraries-of-ffmepg.patch中LOCAL_STATIC_LIBRARIES的少给了一个ijksoundtouch
修改文件:ijkplayer/ijkmedia/ijkplayer/Android.mk
#LOCAL_SHARED_LIBRARIES := ijkffmpeg ijksdl
#LOCAL_STATIC_LIBRARIES := android-ndk-profiler ijksoundtouch
LOCAL_SHARED_LIBRARIES := ijksdl
LOCAL_STATIC_LIBRARIES := android-ndk-profiler ijksoundtouch avformat avcodec swscale swresample avfilter avutil
6. loadLibrariesOnce、native_profileBegin方法变红,导致没法查看方法的实现
查看其引用的IjkMediaPlayer实现类:
包名引入错误:package tv.danmaku.ijk.media.player
将其改为:package ijkmedia.ijkj4a.java.tv.danmaku.ijk.media.player;