AndroidStudio如何引入so包

來源:互聯網
上載者:User

標籤:water   系統預設   就會   fonts   目錄   一個   dir   它的   get   

轉自:http://blog.csdn.net/aplixy/article/details/51592035

 

先說前提條件,我的AndroidStudio版本是2.2 Preview 3,版本是2.1的同學應該也是一樣的。

然後說結論吧,有些同學可能趕著做項目:

 

結論:

so包應該放在相應模組(比如app模組)下的src目錄下的main目錄下的jniLibs目錄。

注意是jniLibs,最後邊有個s,不是jniLib,並且L要大寫。如果你在src/main目錄中看不到jniLibs目錄,那你只需要自己建一個這個目錄就可以了,然後把你的so包按編譯平台分類拷貝進去就可以了。然後呢?然後就完了,就這樣就可以了,因為系統預設就會去這個目錄中找對應的so包。如所示:

 

接下來有興趣的同學可以瞭解下為什麼是這樣。

也許有人說,so包應該跟jar包一樣唄,放在對應模組的libs目錄下,eclipse就是這樣的。有這麼簡單嗎?答案是:NO

原理:

其實在AndroidStudio中,我們之所以可以把jar包放在對應模組的libs目錄下,比如app模組(也就是通常意義下的主工程了)的libs目錄中,而不需要再去配置build.gradle檔案,就可以正常使用這些jar包,是因為在AndroidStudio中建立項目時,系統已經在預設為我們配置好了gradle,如果仔細看模組下的build.gradle檔案的話,一般會有這麼一句:

dependencies {    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])}

 

看到了吧,這句就是告訴gradle,我們的第三方jar包在libs目錄下,如果沒有這一行配置,那麼理論上我們把jar包直接放在libs目錄下其實是不行的,只不過建立項目時系統已經為我們配好了。這裡libs是個相對路徑,因為我們的build.gradle檔案本身就在app模組下,那麼這裡的libs當然也就是指app模組下的libs,其實build.gradle檔案中所有的路徑都可以寫相對路徑,我們下邊講的so包的路徑也是唯寫相對路徑就可以了。

OK,言歸正傳,現在知道jar包的引入原理了,那麼so包為什麼要放在那麼奇怪的目錄下?能不能放在任意一個自訂的目錄呢?當然是可以的。

其實在build.gradle中,預設會有一些這樣的配置:

sourceSets {    main {        jniLibs.srcDirs = [‘src/main/jniLibs‘]        aidl.srcDirs = [‘src/main/aidl‘]    }}

這些配置在你建立工程之後,在build.gradle檔案中預設是沒有的,因為預設就是這樣的,當然也就不寫也可以,當然你寫出來也沒錯。意思是so包就去src/main/jniLibs目錄下找,aidl檔案預設就到src/main/aidl目錄下找。。。當然還有許多其它的配置,你還可以配置你的AndroidManifest.xml檔案在哪裡,還可以配置你的java代碼在哪裡,如果你不配的話都會有一個預設值,這裡只是以jniLibs和aidl為例而已。

看到這裡你應該就明白了,為什麼我們把so包直接放到src目錄下的main目錄下的jinLibs目錄就可以了,而不需要配置gradle檔案了,因為系統預設就會到這個目錄下找,如果你想把so包放在一個你喜歡的地方,比如直接放在app目錄下的myJniLibs目錄下,那你只需要把上面內容改成:

 

sourceSets {    main {        jniLibs.srcDirs = [‘myJniLibs‘]        aidl.srcDirs = [‘src/main/aidl‘]    }}

這樣就可以了。明白了原理,似乎一切都明了了,同理,如果不想把aidl檔案放在預設目錄下,也可以改aidl.srcDirs的值,如果不想把java代碼放在預設目錄,就可以改java.srcDirs的值,如果不想把資源檔放在預設目錄下,就可以改res.srcDirs的值。。。還有幾個,同學們慢慢去研究吧,如果你想把目錄結構改的跟eclipse下的工程一樣,就改這裡的值就可以,不一一細說了。

AndroidStudio如何引入so包

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.