編譯vlc

編譯vlc源

官方文檔:https://wiki.videolan.org/AndroidCompile/

我們按照官方文檔首先需要下載相應(yīng)的軟件:

sudo apt-get install automake ant autopoint cmake build-essential libtool-bin? patch pkg-config protobuf-compiler ragel subversion unzip git openjdk-8-jre openjdk-8-jdk flex python wget

請不要直接復(fù)制官網(wǎng)的軟件下載土辩,會出現(xiàn)無法下載的問題鳖敷,因為\和空格無法刪除

然后我們需要jdk1.8高职,首先我們可以先看下Java的版本:java -version

openjdk version "11.0.6" 2020-01-14

OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1)

OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu118.04.1, mixed mode)

有一些有自帶的jdk,如上,這時候就需要重新下載1.8勇劣,為什么?

如果不下載1.8并且配置的話會報下面的這個錯誤

compile:

? ? [javac] /root/myworkdir/vlc-android/vlc/contrib/contrib-android-aarch64-linux-android/bluray/src/libbluray/bdj/build.xml:26: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

? ? [javac] Compiling 33 source files to /root/myworkdir/vlc-android/vlc/contrib/contrib-android-aarch64-linux-android/bluray/src/libbluray/bdj/build

? ? [javac] warning: [options] bootstrap class path not set in conjunction with -source 5

? ? [javac] error: Source option 5 is no longer supported. Use 6 or later.

? ? [javac] error: Target option 1.5 is no longer supported. Use 1.6 or later.

BUILD FAILED

/root/myworkdir/vlc-android/vlc/contrib/contrib-android-aarch64-linux-android/bluray/src/libbluray/bdj/build.xml:26: Compile failed; see the compiler error output for details.

Total time: 1 second

Makefile:2618: recipe for target 'all-local' failed

make[1]: *** [all-local] Error 1

make[1]: Leaving directory '/root/myworkdir/vlc-android/vlc/contrib/contrib-android-aarch64-linux-android/bluray'

../../contrib/src/bluray/rules.mak:56: recipe for target '.bluray' failed

make: *** [.bluray] Error 2

這個錯誤就是需要一個1.8的jdk,這時候我們把Linux版本的jdk1.8下載好之后(這里不貼鏈接)拥诡,需要配置Java環(huán)境

sudo vim /etc/profile

在最后一行加上

export JAVA_HOME=/root/myworkdir/jdk1.8.0_11//這里寫上自己的jdk路徑

export JAVA_BIN=$JAVA_HOME/bin

export JAVA_LIB=$JAVA_HOME/lib

export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar

export PATH=$JAVA_BIN:$PATH

開始編譯

./buildsystem/compile.sh -a arm64-v8(這個地方填寫的是cpu版本)

如果你不知道cpu版本怎么寫,可以

./buildsystem/compile.sh --help

進(jìn)行查看

Use -a to set the ARCH:

? ARM:? ? (armeabi-v7a|arm)

? ARM64:? (arm64-v8a|arm64)

? X86:? ? x86, x86_64

Use --release to build in release mode

Use --signrelease to build in release mode and sign apk, see vlc-android/build.gradle

Use -s to set your keystore file and -p for the password

Use -c to get a ChromeOS build

Use -l to build only LibVLC

Use -b to bypass libvlc source checks (vlc custom sources)

現(xiàn)在就正式開始編譯

這時候我們會遇到第一個問題

You must define ANDROID_NDK, ANDROID_SDK before starting.

They must point to your NDK and SDK directories.

所以我們需要配置Android sdk和ndk的環(huán)境變量

export ADNROID_SDK=/path

export ANDROID_NDK=/path

export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

直接執(zhí)行命令可以配置一個臨時的環(huán)境變量

但是可能會造成失敗的情況所以我們需要更改我們的~/.bashrc文件來為當(dāng)前用戶配置環(huán)境變量

sudo vim ~/.bashrc

也可以修改/etc/profile文件讓我們的系統(tǒng)新增環(huán)境變量

sudo vim /etc/profile

這個 時候我們就把當(dāng)前的環(huán)境變量配置完成氮发,現(xiàn)在可以執(zhí)行編譯

buildsystem/compile.sh -a <ABI>

請注意渴肉,我們新手學(xué)習(xí)Linux編譯的時候會直接復(fù)制造成不必要的錯誤,一定要注意爽冕,在vlc-Android里的這個compile.sh是一個可執(zhí)行文件仇祭,所以之前的那其實是一個路徑,第二是參數(shù)颈畸,第三是參數(shù)的值請一定注意乌奇,上一篇文章已經(jīng)說過-a參數(shù)的值怎么去寫這里不多贅述,然后執(zhí)行編譯

我們運行腳本之后會發(fā)現(xiàn)一個問題眯娱,那就是會出現(xiàn)

Download Gradle

我們知道這是在下載Android的gradle华弓,但是就是這個訪問速度著實讓人難受所以我們需要去修改compile.sh腳本

sudo vim compile.sh

我們可以看到這一段

if [ ! -d "gradle/wrapper" ]; then

? ? diagnostic "Downloading gradle"

? ? GRADLE_VERSION=5.6.4

? ? GRADLE_URL=https://download.videolan.org/pub/contrib/gradle/gradle-${GRADLE_VERSION}-bin.zip

? ? wget ${GRADLE_URL} 2>/dev/null || curl -O ${GRADLE_URL} || fail "gradle: download failed"

? ? unzip -o gradle-${GRADLE_VERSION}-bin.zip || fail "gradle: unzip failed"

? ? ./gradle-${GRADLE_VERSION}/bin/gradle wrapper || fail "gradle: wrapper failed"

? ? ./gradlew -version || fail "gradle: wrapper failed"

? ? chmod a+x gradlew

? ? rm -rf gradle-${GRADLE_VERSION}-bin.zip

fi

很明顯這里是說如果沒找到gradle/wrapper這個目錄,那就下載gradle

所以我們可以修改這段腳本困乒,刪掉下載的代碼寂屏,把我們下載好的gradle解壓,請注意這個腳本用的是5.6.4可以修改成你自己下載好的娜搂,我用的就是5.6.4迁霎,gradle:https://services.gradle.org/distributions/

if [ ! -d "gradle/wrapper" ]; then

#? ? diagnostic "Downloading gradle"

? ? GRADLE_VERSION=5.6.4

#? GRADLE_URL=https://download.videolan.org/pub/contrib/gradle/gradle-${GRADLE_VERSION}-bin.zip

#? wget ${GRADLE_URL} 2>/dev/null || curl -O ${GRADLE_URL} || fail "gradle: download failed"

? ? unzip -o gradle-${GRADLE_VERSION}-bin.zip || fail "gradle: unzip failed"

? ? ./gradle-${GRADLE_VERSION}/bin/gradle wrapper || fail "gradle: wrapper failed"

? ? ./gradlew -version || fail "gradle: wrapper failed"

? ? chmod a+x gradlew

? ? rm -rf gradle-${GRADLE_VERSION}-bin.zip

fi

然后我們又會遇到一個問題,那就是又需要下載vlc百宇,同樣也是訪問速度的問題考廉,我們需要修改這個腳本的這一段

TESTED_HASH=7f204ee

VLC_REPOSITORY=https://git.videolan.org/git/vlc/vlc-3.0.git

if [ ! -d "vlc" ]; then

? ? diagnostic "VLC sources: not found, cloning"

? ? git clone "${VLC_REPOSITORY}" vlc || fail "VLC sources: git clone failed"

? ? cd vlc

? ? diagnostic "VLC sources: resetting to the TESTED_HASH commit (${TESTED_HASH})"

? ? git reset --hard ${TESTED_HASH} || fail "VLC sources: TESTED_HASH ${TESTED_HASH} not found"

? ? diagnostic "VLC sources: applying custom patches"

? ? # Keep Message-Id inside commits description to track them afterwards

? ? git am --message-id ../libvlc/patches/vlc3/*.patch || fail "VLC sources: cannot apply custom patches"

? ? cd ..

else

? ? diagnostic "VLC source: found sources, leaving untouched"

fi

if [ "$BYPASS_VLC_SRC_CHECKS" = 1 ]; then

? ? diagnostic "VLC sources: Bypassing checks (required by option)"

else

? ? diagnostic "VLC sources: Checking TESTED_HASH and patches presence"

? ? diagnostic "NOTE: checks can be bypass by adding '-b' option to this script."

? ? cd vlc

? ? git cat-file -e ${TESTED_HASH} 2> /dev/null || \

? ? ? ? fail "Error: Your vlc checkout does not contain the latest tested commit: ${TESTED_HASH}"

? ? for patch_file in ../libvlc/patches/vlc3/*.patch; do

? ? ? ? check_patch_is_applied "$patch_file"

? ? done

? ? cd ..

fi

刪掉下載的代碼,把自己下載好的vlc解壓到vlc-Android里携御,請注意這里的目錄名稱必須為vlc

然后我們可以繼續(xù)開始編譯vlc

后面我們還會遇到一個問題昌粤,那就是gradle的問題,我當(dāng)時報的錯是什么什么byte exist啄刹,然后再次執(zhí)行編譯的時候又會說什么compile fail 然后我找了一些資料還是沒找到涮坐,但是看到一個說是修改為Android studio的jdk,所以我感覺是高版本的gradle或者說是vlc會出現(xiàn)的問題誓军,所以我把jdk的路徑改成了Android studio的這時候就通過了袱讹,對于下載速度慢的問題我是采取的用服務(wù)器的方式,我建議還是用服務(wù)器昵时,因為有可能配置方面可能考慮不周全捷雕,如果一個一個去處理很麻煩椒丧,一定要注意是有外網(wǎng)的服務(wù)器

./libvlc/build/outputs/aar/libvlc-armv7-3.3.0-eap03.aar,這里是結(jié)果

鏈接:https://pan.baidu.com/s/1NvFDPvCTm9WPDym3UT1vxA

提取碼:rm7c

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末救巷,一起剝皮案震驚了整個濱河市壶熏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浦译,老刑警劉巖久橙,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異管怠,居然都是意外死亡淆衷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門渤弛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祝拯,“玉大人,你說我怎么就攤上這事她肯〖淹罚” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵晴氨,是天一觀的道長康嘉。 經(jīng)常有香客問我,道長籽前,這世上最難降的妖魔是什么亭珍? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮枝哄,結(jié)果婚禮上肄梨,老公的妹妹穿的比我還像新娘。我一直安慰自己挠锥,他們只是感情好众羡,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蓖租,像睡著了一般粱侣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓖宦,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天齐婴,我揣著相機(jī)與錄音,去河邊找鬼球昨。 笑死尔店,一個胖子當(dāng)著我的面吹牛眨攘,可吹牛的內(nèi)容都是我干的主慰。 我是一名探鬼主播嚣州,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼共螺!你這毒婦竟也來了该肴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤藐不,失蹤者是張志新(化名)和其女友劉穎匀哄,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雏蛮,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡涎嚼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挑秉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片法梯。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖犀概,靈堂內(nèi)的尸體忽然破棺而出立哑,到底是詐尸還是另有隱情,我是刑警寧澤姻灶,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布铛绰,位于F島的核電站,受9級特大地震影響产喉,放射性物質(zhì)發(fā)生泄漏捂掰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一曾沈、第九天 我趴在偏房一處隱蔽的房頂上張望尘颓。 院中可真熱鬧,春花似錦晦譬、人聲如沸疤苹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卧土。三九已至,卻和暖如春像樊,著一層夾襖步出監(jiān)牢的瞬間尤莺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工生棍, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留颤霎,地道東北人。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像友酱,于是被迫代替她去往敵國和親晴音。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 2,701評論 0 3
  • 前言 隨著音視頻領(lǐng)域的火熱缔杉,在很多領(lǐng)域(教育锤躁,游戲,娛樂或详,體育系羞,跑步,餐飲霸琴,音樂等)嘗試做音視頻直播/點播功能椒振,那...
    passiontim閱讀 3,294評論 1 46
  • Linux 和 Android 下 VLC 都已經(jīng)初具雛形了,優(yōu)化和bug方面最近沒什么思路梧乘,所以準(zhǔn)備先試著交叉編...
    團(tuán)不慌閱讀 5,608評論 5 2
  • 在Android Studio代碼調(diào)試一文中,簡單的介紹了代碼調(diào)試的一些技巧.現(xiàn)在我們來談?wù)刟ndroid源碼編譯...
    涅槃1992閱讀 191,264評論 104 450
  • 這個不尋常的春節(jié)杠人,是從一段美好的日子開始的。放假的時候一切都挺順利宋下。家里一切安好嗡善,單位上工作圓滿結(jié)束,孩子們成...
    心語花香閱讀 447評論 1 3