介紹
ijkplayer是一款很是火的開源視頻播放器,android和IOS通用。關於怎麼編譯怎麼導入android Studio中本身的項目,其中坑不少,本篇記錄下本身的操做記錄。ijkplayer如今的版本是0.8.3,固然是使用最新的版本集成了。html
編譯ijkplayer
關於編譯,我是在Ubuntu上編譯後拷貝到win10中的,ijkplayer源碼須要gcc編譯,windows各類很差用,若是使用cynwin還不如在ubuntu下編譯。java
編譯的過程是下載sdk,ndk。設置環境變量後按照github上的說明編譯便可,具體可參考 這篇文章 .android
android studio集成ijkplayer
1.導入到你的項目中git
android studio打開你的項目,File->Import Module...選擇ijkplayer的anroid/ijkplayer目錄,ijk-example依賴全部庫,因此導入後全部項目都會導入到你的項目中。github
2.將android/ijkplayer目錄下的tools文件夾也拷貝到本身項目的根目錄下。ubuntu
3. 在ijkplayer-java\src\main\目錄下新建一個名爲jniLibs的文件夾,將各個ijkplayer-xxx目錄中的\src\main\libs目錄下的文件夾拷貝到jniLibs文件夾中,如:ijkplayer--armv7a的該目錄下包含armeabi-v7a這個文件夾,其中包含了該平臺對應的.so文件,若是但願包含全部平臺的,就將全部ijkplayer-xxx下的所有拷過來,若是隻但願某幾個平臺的,就只拷貝它們的。windows
4.將ijkplayer-xxx的目錄所有從項目中刪除掉,只保留ijkplayer-example、ijkplayer-java、ijkplayer-exo以及tools文件夾,其中ijkplayer-example依賴於後面幾個。android studio刪除項目需以下圖所示:app
並將相對應的文件夾刪除便可。less
5.將ijkplayer-example修改成Module的形式,由於ijkplayer-example自己是一個application工程,默認不生成aar文件,且裏面的資源互相依賴,難以像舊版本經過複製所需的幾個java文件到本身工程中的方式來使用,因此不如將整個ijkplayer-example轉換爲咱們工程的一個Module。具體方法是:async
先修改ijkplayer-example目錄下的build.gradle文件,以下:
apply plugin: 'com.android.library' android { // http://tools.android.com/tech-docs/new-build-system/tips //noinspection GroovyAssignabilityCheck compileSdkVersion rootProject.ext.compileSdkVersion //noinspection GroovyAssignabilityCheck buildToolsVersion rootProject.ext.buildToolsVersion lintOptions { abortOnError false } defaultConfig { minSdkVersion 9 targetSdkVersion rootProject.ext.targetSdkVersion versionCode rootProject.ext.versionCode versionName rootProject.ext.versionName } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } buildToolsVersion '25.0.0' } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:25.0.0' compile 'com.android.support:preference-v7:23.0.1' compile 'com.android.support:support-annotations:23.0.1' compile 'com.squareup:otto:1.3.8' compile project(':ijkplayer-java') compile project(':ijkplayer-exo') }
注意:
- apply plugin: 'com.android.application'要改成apply plugin: 'com.android.library'
- applicationId "tv.danmaku.ijk.media.example"這句要去掉
- compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:preference-v7:23.0.1'
compile 'com.android.support:support-annotations:23.0.1'
compile 'com.squareup:otto:1.3.8'
這幾個修改成本身安裝的版本。
6.在ijkplayer-example根目錄下增長一個gradle.properties文件,內容以下:
POM_NAME=ijkplayer-example POM_ARTIFACT_ID=ijkplayer-example POM_PACKAGING=aar
7.在本身的項目中添加依賴項,以下圖所示:
完成上述操做,點擊async gradle便可。
其餘錯誤:
若是出現
Error:(3) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Borderless.Colored'.
如上相似錯誤,那是幾個項目的sdk版本不一樣引發的,四個項目包含你本身的項目的compileSdkVersion 、
buildToolsVersion、targetSdkVersion和compile 'com.android.support:appcompat-v7:25.0.0'
幾個版本必需要統一,若是不統一會出現各類問題。
http://www.qingpingshan.com/rjbc/az/334018.html
http://makaidong.com/XYQ-208910/34380_157556.html
http://www.th7.cn/Program/Android/201502/385729.shtml