1. 程式人生 > >Plumble-android 一次完整的編譯過程(Opus語音壓縮專案)

Plumble-android 一次完整的編譯過程(Opus語音壓縮專案)

前言:Opus可以實現1kyte/s的壓縮語音傳輸,過癮!

Plumble-android 一次完整的編譯過程 NDK
標籤:Plumble android mumble Jumble opus speex celt talkiewalkie 
作者:BI7JTA
時間:2017-5-9


碰到的問題:
原始碼來自:https://wiki.mumble.info/wiki/Main_Page
1、缺少方法 error: use of undeclared identifier 'celt_mode_info'
分析思路:專案裡查詢celt_mode_info ,發現celt-0.11.0 不存在此方法,而celt-0.7 存在,去官方github發現已停止維護
解決方法:遮蔽 Jumble/src/main/jni/Android.mk 的編譯so宣告,即不使用11版本,成功通過;
include $(CLEAR_VARS)
LOCAL_PATH:= $(ROOT)/celt-0.11.0-src/libcelt
LOCAL_MODULE:= jnicelt11
LOCAL_SRC_FILES:= bands.c celt.c cwrs.c entcode.c entdec.c entenc.c header.c kiss_fft.c \
                       laplace.c mathops.c mdct.c modes.c pitch.c plc.c quant_bands.c rate.c vq.c \
                       $(ROOT)/jnicelt11.cpp
LOCAL_C_INCLUDES    := $(ROOT)/celt-0.11.0-src/libcelt/
LOCAL_CFLAGS:= -I$(ROOT)/celt-0.11.0-build -DHAVE_CONFIG_H -fvisibility=hidden
LOCAL_CPP_FEATURES := exceptions
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)


2、用了最新的opus-1.1.2 編譯提示錯誤,這個版本在iOS上可以通過,但在Android指令碼上不行,按照Jumble原始碼的link,下載v1.1  …
 65471dd 即可編譯通過


3、armeabi build的錯誤日誌沒拷貝,切記修改ndk版本為 r13b以下,高版本不能編譯!
   編譯 專案 talkiewalkie 一樣的問題。
三個地方:
1)local.properties: ndk.dir=/work_tools/android-ndk-r13b
2) jnigen.h: /work_tools/android-ndk-r13b/ndk-build -C src/main/jni
3) build.gradle:  commandLine '/work_tools/android-ndk-r13b/ndk-build', '-C', file('src/main/jni/').absolutePath
另外後面兩個檔案要用全路徑,預設是不帶全路徑的,不改我的編譯會報錯。我用 MAC系統,應該是系統變數沒設定。


其他:
1)Error:Configuration with name 'default' not found.自行google找解決方法
2)多語言檔案編譯錯誤,不影響;
3) gradle project sync failed. please fix your project and try again 自行google找解決方法




好了,覺得解決你問題的話,記得打賞我的支付寶:

[email protected]
或者獲得更多付費支援,協助你解決問題的過程本身就是為你創造價值。


多用Google,多思考,天無絕人之路。


以下是日誌:
Executing tasks: [assemble]

。。。

"certificatePasswordSum" is translated here but not found in default locale [ExtraTranslation]
  <string name="certificatePasswordSum">Das Passwort für Ihr PKCS12 Zertifikat. (Optional)</string>
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /work_studio/mumbleServer/Plumble-android/app/src/main/res/values-es/preference.xml:31: Also translated here
    /work_studio/mumbleServer/Plumble-android/app/src/main/res/values-fr/preference.xml:31: Also translated here
    /work_studio/mumbleServer/Plumble-android/app/src/main/res/values-ja/preference.xml:31: Also translated here
    /work_studio/mumbleServer/Plumble-android/app/src/main/res/values-nl/preference.xml:31: Also translated here
    /work_studio/mumbleServer/Plumble-android/app/src/main/res/values-pl/preference.xml:13: Also translated here
    /work_studio/mumbleServer/Plumble-android/app/src/main/res/values-ru/preference.xml:31: Also translated here


   Explanation for issues of type "ExtraTranslation":
   If a string appears in a specific language translation file, but there is
   no corresponding string in the default locale, then this string is probably
   unused. (It's technically possible that your application is only intended
   to run in a specific locale, but it's still a good idea to provide a
   fallback.).


   Note that these strings can lead to crashes if the string is looked up on
   any locale not providing a translation, so it's important to clean them
   up.


350 errors, 0 warnings


:app:mergeOfficialReleaseShaders
:app:compileOfficialReleaseShaders
:app:generateOfficialReleaseAssets
:app:mergeOfficialReleaseAssets
:app:transformClassesWithDexForOfficialRelease
:app:mergeOfficialReleaseJniLibFolders
:app:transformNative_libsWithMergeJniLibsForOfficialRelease
:app:transformNative_libsWithStripDebugSymbolForOfficialRelease
:app:processOfficialReleaseJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForOfficialRelease
:app:packageOfficialRelease
:app:assembleOfficialRelease
:app:assembleRelease
:app:assemble
:libraries:Jumble:checkDebugManifest
:libraries:Jumble:prepareDebugDependencies
:libraries:Jumble:compileDebugAidl
:libraries:Jumble:compileDebugNdk UP-TO-DATE
:libraries:Jumble:copyDebugLint UP-TO-DATE
:libraries:Jumble:compileDebugRenderscript
:libraries:Jumble:generateDebugBuildConfig
:libraries:Jumble:generateDebugResValues
:libraries:Jumble:generateDebugResources
:libraries:Jumble:mergeDebugResources
:libraries:Jumble:processDebugManifest
:libraries:Jumble:processDebugResources
:libraries:Jumble:generateDebugSources
:libraries:Jumble:incrementalDebugJavaCompilationSafeguard
:libraries:Jumble:compileDebugJavaWithJavac
:libraries:Jumble:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).


注: 某些輸入檔案使用或覆蓋了已過時的 API。
注: 有關詳細資訊, 請使用 -Xlint:deprecation 重新編譯。


:libraries:Jumble:extractDebugAnnotations
:libraries:Jumble:mergeDebugShaders
:libraries:Jumble:compileDebugShaders
:libraries:Jumble:generateDebugAssets
:libraries:Jumble:mergeDebugAssets
:libraries:Jumble:mergeDebugProguardFiles
:libraries:Jumble:packageDebugRenderscript UP-TO-DATE
:libraries:Jumble:packageDebugResources
:libraries:Jumble:processDebugJavaRes UP-TO-DATE
:libraries:Jumble:transformResourcesWithMergeJavaResForDebug
:libraries:Jumble:transformClassesAndResourcesWithSyncLibJarsForDebug
:libraries:Jumble:mergeDebugJniLibFolders
:libraries:Jumble:transformNative_libsWithMergeJniLibsForDebug
:libraries:Jumble:transformNative_libsWithSyncJniLibsForDebug
:libraries:Jumble:bundleDebug
:libraries:Jumble:compileDebugSources
:libraries:Jumble:assembleDebug
:libraries:Jumble:compileReleaseSources
:libraries:Jumble:assembleRelease
:libraries:Jumble:assemble


BUILD SUCCESSFUL


Total time: 7 mins 4.779 secs


歡迎加智慧硬體APP[iOS/Android/Arduino]開發Q群進行交流:217346828 ,加入請備註來自 部落格文章

相關推薦

Plumble-android 完整編譯過程Opus語音壓縮專案

前言:Opus可以實現1kyte/s的壓縮語音傳輸,過癮! Plumble-android 一次完整的編譯過程 NDK 標籤:Plumble android mumble Jumble opus speex celt talkiewalkie  作者:BI7JTA 時間:2

springboot 記錄原始碼編譯過程的糾錯

C:\Users\coffee\OneDrive\git\spring-boot-1.5.10\spring.boot>mvn clean install -Dmaven.test.skip=true [INFO] Scanning for project

實現一個算法,尋找字符串中出現次數最少的、並且首次出現位置最前的字符 如"cbaacfdeaebb",符合要求的是"f",因為他只出現了一次(次數最少。並且比其他只出現一次的字符如"d"首次出現的位置最靠前。

出現一次 ole for else 尋找 cti 要求 最小值 一次 實現一個算法,尋找字符串中出現次數最少的、並且首次出現位置最前的字符如"cbaacfdeaebb",符合要求的是"f",因為他只出現了一次(次數最少)。並且比其他只出現一次的字符(如"d")首次出現的位置

折騰之旅兼 Classias 安裝教程

最近看一篇ACL論文,作者原始碼裡面用到了一個停止維護多年的庫,叫做Classias。 這個庫有一個特點,就是安裝都能失敗。 以下是安裝教程,如果你按照官方教程安裝,那麼,恭喜你,只會一直裝不上,裝上了也用不了。 1、安裝libLBFGS(因為Classias需要這個庫)

完整的HTTP請求的大致過程

帶寬 繼續 頭信息 cti www 參考 例如 相同 log 說明:這些理論基本都來自網上,所以不一定準確,但一定是比較好理解的,如果要刨根問底,最好的方式就是看書,且要看權威的書。 一次完整的HTTP請求所經歷的7個步驟 HTTP通信機制是在一次完整的HTTP通信

在瀏覽器中輸入URL後,執行的全部過程。會用到哪些協議?完整的HTTP請求過程

一次完整的HTTP請求過程: 1.首先進行域名解析,域名解析具體過程講一下: 瀏覽器搜尋自己的DNS快取,快取中維護一張域名與IP地址的對應表; 若沒有,則搜尋作業系統的DNS快取; 若沒有,則作業系統將域名傳送至本地域名伺服器(遞迴查詢方式),本地域名伺服器查詢自己

【Java面試題】完整的Http請求過程非常詳細

④ 如果在hosts檔案中也沒有找到對應的條目,瀏覽器就會發起一個DNS的系統呼叫,就會向本地配置的首選DNS伺服器(本地DNS伺服器,一般是電信運營商提供的,也可以使用像Google提供的DNS伺服器)發起域名解析請求(遞迴,通過的是UDP協議向DNS的53埠發起請求,這個請求是遞迴的請求,也就是運營商的D

spring5原始碼完整編譯過程

學習java已有3年之久,spring一直停留在應用階段,兩次面試阿里的經歷讓我深感學習spring原始碼的重要性,廢話不多說,開搞! 1、環境: jdk1.8+spring5+gradle4.7+eclipse4.6 如果要參考該教程,環境最好一樣(eclipse除外

HTTP 之 完整的http請求處理過程

處理 請求過程 http請求處理過程如下.1、建立連接:接收或拒絕連接請求,通過三次握手建立.2、接收請求:接收客戶端請求報文中對某資源的一次請求的過程.Web訪問響應模型(Web I/O)單進程I/O模型:啟動一個進程處理用戶請求,而且一次只處理一個,多個請求被串行響應必須處理完前面的請求後才能處理

完整的http的請求過程與https的實現

http一次完整的http請求過程: (1)發起請求建立連接; 三次握手 接收請求或拒絕請求 (2)接受請求 來自網絡的請求報文中對某資源的一次請求過程; 並發訪問響應模型(Web I/O); 單進程I/O結構:啟動一個進程處理用戶請求,而且一次只處理一個;多個請求被串行響應

完整的 HTTP 請求過程

net first 直接 orm gin 端口 add static 1.2 一次完整的HTTP請求過程從TCP三次握手建立連接成功後開始,客戶端按照指定的格式開始向服務端發送HTTP請求,服務端接收請求後,解析HTTP請求,處理完業務邏輯,最後返回一個HTTP的響應給客戶

android系統又刷ROM簡記

recover com linu nsf 配置文件 loader ref 編寫 例如 當須要對android系統進行大刀闊斧的改造的時候,應該清晰的了解android各個image的組成才幹做到庖丁解牛。

完整的HTTP事務是怎樣一個過程

-h archive sts ipv 信息 headers document 響應頭 讀取 當我們在瀏覽器的地址欄輸入 www.linux178.com ,然後回車,回車這一瞬間到看到頁面到底發生了什麽呢? 以下過程僅是個人理解: 域名解析 --> 發起TCP

完整的asp.net-mvc頁面優化過程

泄露 但是 項目 nbsp 左側菜單 工具 登錄 分享圖片 info 最近在重構一個MVC項目,項目結構堪稱混亂,問題多多,但今天說的是頁面打開速度的問題。項目中包括web後臺系統,幾乎隨便點一個頁面都要盯著白屏等待2-5秒之久,體驗很差。通過對頁面性能逐步的分析和判斷,並

完整的http請求過程

網關 persist trac 頁面 都沒有 wan 服務器 modified 虛擬機 當我們在瀏覽器的地址欄輸入 www.linux178.com ,然後回車,回車這一瞬間到看到頁面到底發生了什麽呢? 以下過程僅是個人理解: 域名解析 --> 發

完整的HTTP請求需要的步驟http通訊協議

<1> web瀏覽器(客戶端)和web應用伺服器建立tcp連線 http協議是tcp/ip 模型中的應用層的協議,是高層的協議。傳輸控制協議TCP位於傳輸層,tcp是建立本地主機和目標主機的會話,只有建立tcp連線,應用層http協議才可以有通道去進行

滲透測試的8個步驟 展現完整的滲透測試過程及思路

         滲透測試這個事情不是隨便拿個工具就可以做了, 要了解業務還需要給出解決方案 。之前安全加介紹了金融行業 實戰微信銀行滲透測試, 運營商 滲透測試實戰 ,今天讓我們來說說 滲透測試&n

zabbix-server服務啟動失敗處理過程Zabbix 3.0.9

注意PID相關的是否是與selinux相關的 在CentOS7x64 7.3.1611上測試部署Zabbix 3.0.9,到啟動zabbix-server服務時報錯: [[email protected] ~]#systemctl restart zabbix-s

完整的效能測試過程

當我們聊起效能測試的時候,有人一定會說我們用的是loadrunner做效能,誠然,我們在進行效能測試工作的過程中,需要藉助工具的輔助來幫我們完成一些工作,但loadrunner並不等於效能測試,或者說,效能測試工具不等於效能測試,工具永遠是一種輔助的工具,而不能認為會用工具就會效能測試了!希

NetWork——描述完整的網路請求過程

0.  前言從我們在瀏覽器的位址列輸入http://blog.csdn.net/seu_calvin後回車,到我們看到該部落格的主頁,這中間經歷了什麼呢?簡單地回答這個問題,大概是經歷了域名解析、TCP