android studio2.3如何編譯動(dòng)態(tài)庫(kù)的過(guò)程詳解
前言
最近在工作中需要編譯android下的動(dòng)態(tài)庫(kù),本以為是一件簡(jiǎn)單的事,沒(méi)想到因?yàn)楣ぞ?,以及google本身被墻的原因,折騰了好久。
在windows外的平臺(tái)搞事情,壽命都得縮短。
過(guò)程如下
一種方案是用eclipse+ndk+adt插件,總之是eclipse下適配android ndk的一套東西,我搜了一些文檔,看到一大堆冗余的名字,文件,感覺(jué)不對(duì)味,放棄。
另一種方案是android studio,初看覺(jué)得是大公司出品,且針對(duì)的是自家系統(tǒng)的IDE,能保持個(gè)一貫性,沒(méi)想到各個(gè)版本差別挺大,一時(shí)換一套編譯底層,一時(shí)換一套構(gòu)建系統(tǒng),菜單變換也大,姑且算你迭代很快,不過(guò)都出來(lái)這么多年了,為啥就不能像visual studio看齊?搞得我在網(wǎng)上搜各種文檔還得仔細(xì)區(qū)分版本,特別是你不熟悉時(shí),簡(jiǎn)直是斗智斗勇。
1、下載android-ndk,安裝。
2、下載android studio 2.3,安裝過(guò)程會(huì)提示你選擇ndk目錄以及sdk目錄,自帶了android sdk,建議就用它自帶的sdk,不然十有八九又搞出事情。
3、安裝好后啟動(dòng),界面上第一行是創(chuàng)建新工程,創(chuàng)建后會(huì)卡上10幾分鐘進(jìn)不去,因?yàn)閍ndroid studio需要下載gradle,而國(guó)內(nèi)是下載不了的,于是她妹的卡了,連個(gè)提示都沒(méi)有,vpn重連也沒(méi)用。所以得去gradle官 網(wǎng)下,這里你還得選擇gradle版本,如何查看版本,又是一件蛋疼的事。我是去到C:\Users\用戶(hù)名\.gradle\wrapper\dists下看到gradle-3.3-all文件夾,選擇了下載3.3-all版本,然后把下載到的壓縮文件放到 C:\Users\用戶(hù)名\.gradle\wrapper\dists\gradle-3.3-all\55gk2rcmfc6p2dg9u9ohc3hw9下,才終于順利通過(guò)這一步。
4、創(chuàng)建工程界面,選擇c++ support。
5、進(jìn)去之后,你還有2個(gè)東西要下。去到菜單欄tools/android/sdkmanager打開(kāi),默認(rèn)會(huì)選中左邊導(dǎo)航欄的android sdk選項(xiàng),右邊界面有3個(gè)標(biāo)簽sdk platform,sdk tools,sdk update sites,選擇中間的sdk tools, 下載cmake,lldb。稍后將用cmake構(gòu)建c/c++文件。2.3之前的版本還需要配置gradle關(guān)聯(lián)到CMakeLists.txt文件,現(xiàn)在不需要了,所以你如果網(wǎng)上搜到一大堆配置文檔就跳過(guò)吧。
6、下載后,經(jīng)常會(huì)便秘,你很可能需要重啟android studio, 不然新下的庫(kù)找不到,同步是沒(méi)有用的。
7、接下來(lái)需要配置路徑了。首先左邊是project視圖,在文件樹(shù)下找到local.properties,追加ndk的路徑,雖然你已經(jīng)在創(chuàng)建工程時(shí)選過(guò),但這里還是得填:
ndk.dir=D\:\\sdk\\Android\\android-ndk-r14b
8、接下來(lái)添加c/c++源碼文件,你在左邊的project視圖下,找到app/src/main/cpp文件夾,你的源碼需要放到這個(gè)目錄下,去硬盤(pán)上找到對(duì)應(yīng)的目錄把代碼拷進(jìn)去。
然后在視圖右鍵點(diǎn)擊app目錄,應(yīng)該有個(gè)synchronize ‘a(chǎn)pp'選項(xiàng),點(diǎn)擊同步,在cpp下應(yīng)該可以刷出來(lái)你新加的源碼了。這里如果是新建工程,記得把native-lib.cpp示例文件刪除,不要直接在硬盤(pán)刪除,通過(guò) ide里右鍵點(diǎn)擊delete,不然很可能又抽一次瘋。
你以為完了?遠(yuǎn)著呢。在src目錄下,找到CMakeLists.txt文件,手動(dòng)添加你的.c或.cpp文件,沒(méi)錯(cuò),就是這么任性,你有多少個(gè)c文件,就要加多少行如下:
add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. SHARED # Provides a relative path to your source file(s). src/main/cpp/lapi.c src/main/cpp/lauxlib.c src/main/cpp/lbaselib.c )
如以上在add_library下添加源碼。然后你還得添加頭文件目錄如下:
# Specifies a path to native header files. include_directories(src/main/cpp/)
與add_library并列,這里根據(jù)你的源碼文件目錄一個(gè)一個(gè)添加吧。我在右鍵選項(xiàng)里發(fā)現(xiàn)有new,創(chuàng)建新文件,有import,導(dǎo)入eclipse工程,就是沒(méi)有add exisiting files選項(xiàng)加入已存在源碼...
9、接下來(lái)你可能需要更改動(dòng)態(tài)庫(kù)名,還是在CMakeLists.txt文件里搜索native-lib,都替換為你需要的名字,具體含義自己去搞清楚吧,不贅述了。
10、最右邊的垂直標(biāo)簽條,點(diǎn)擊build variants,把debug更換為release,編譯release版本。
11、點(diǎn)擊菜單欄build/make moudle...,應(yīng)該能生成.so文件了。位置在..\app\build\intermediates\cmake\release\obj下。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Studio 編譯報(bào)錯(cuò):compileSdkVersion ''android-24'' requires JDK 1.8 or later to compile.的解決辦法
- Android Studio中通過(guò)CMake使用NDK并編譯自定義庫(kù)和添加預(yù)編譯庫(kù)
- 完美解決Android Studio集成crashlytics后無(wú)法編譯的問(wèn)題
- Android Studio gradle 編譯提示‘default not found’ 解決辦法
- 使用Android studio創(chuàng)建的AIDL編譯時(shí)找不到自定義類(lèi)的解決辦法
- Mac OS下為Android Studio編譯FFmpeg解碼庫(kù)的詳細(xì)教程
- Android Studio打包jar及aar包的方法
- Android studio中生成引用.aar和.jar的方法詳解
- android studio編譯jar包或者aar包的方法教程詳解
相關(guān)文章
Android FaceDetector實(shí)現(xiàn)人臉檢測(cè)功能
這篇文章主要為大家詳細(xì)介紹了Android FaceDetector實(shí)現(xiàn)人臉檢測(cè)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android?廣播接收器BroadcastReceiver詳解
Android開(kāi)發(fā)的四大組件分別是:活動(dòng)(activity),用于表現(xiàn)功能;服務(wù)(service),后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù),本篇著重介紹廣播組件2022-07-07詳解Android Webview加載網(wǎng)頁(yè)時(shí)發(fā)送HTTP頭信息
這篇文章主要介紹了詳解Android Webview加載網(wǎng)頁(yè)時(shí)發(fā)送HTTP頭信息的相關(guān)資料,需要的朋友可以參考下2017-05-05一文帶你了解Android系統(tǒng)的啟動(dòng)流程
Android系統(tǒng)的啟動(dòng)是一個(gè)復(fù)雜的過(guò)程,涉及到多個(gè)階段和組件,所以本文將給大家詳細(xì)的介紹一下Android系統(tǒng)的啟動(dòng)流程,文中也有圖片和代碼示例的講解,需要的朋友可以參考下2023-09-09android仿華為手機(jī)懸浮窗設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了android仿華為手機(jī)懸浮窗設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Android 取得狀態(tài)欄、任務(wù)欄高度的小例子
Android 取得狀態(tài)欄、任務(wù)欄高度的小例子,需要的朋友可以參考一下2013-05-05android避免彈出軟鍵盤(pán)遮蓋listview的簡(jiǎn)單方法
下面小編就為大家?guī)?lái)一篇android避免彈出軟鍵盤(pán)遮蓋listview的簡(jiǎn)單方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09Android 動(dòng)態(tài)添加Fragment的實(shí)例代碼
這篇文章主要介紹了Android 動(dòng)態(tài)添加Fragment的實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08