android studio 將已有的專案 以module Library的 形式引入到 自己的專案中
1、什麼是Module Library
android 將專案 分成 project 和 Module
module 其實也是一個專案 他裡面也有 res 、 java 、 AndroidManifiest等檔案 其實也是一個可以獨立執行的專案
只是 build.gradle中 標記了是library型別的
而 project是
apply plugin: 'com.android.application'
2、module library 匯入到自己專案中的意義
如果是將 一個外部的module library想匯入到當前的工程作為 library 作為一個, 可以看作是與當前專案的 合併 ,在主專案中可以 直接使用 module library專案中的資原始檔等。 總之就等效於 將module library專案中的檔案複製到了主專案的對應資料夾中了。
必須明白上面這一點, 這也是 ModuleLibrary 存在的意義
3、將module library 匯入到自己專案
1)如果是android studio 的module Library 那麼可以直接匯入。
注意:但是 由於module Library 使用的gradle版本和當前專案的gradle不一樣,那麼android studio就會去電腦中找是否有對應的gradle ,如果 沒有那麼他就去網上下載,但是伺服器在國外,國內下載很慢,所以在匯入前可以修改一下版。改為自己對應已有的版本。
檢視 gradle 的版本 開啟當前專案的檔案中的gradle檔案
用記事本開啟上面的 檔案看最後一句
https\://services.gradle.org/distributions/gradle-2.8-all.zip 說明版本是 2.8
然後開啟要匯入的module library的 對應的gradle-wrapper.properties 將版本改為2.8 這樣可以匯入快一點。
其實從網上下載下來的專案 用自己的android studio 開啟前 也可以這麼做,這樣開啟的也會快一點。
2)如果是 android studio 的專案 或者 eclipse的專案 或者eclipse的library專案匯入到當前的專案作為 module library那麼 步驟如下
(1)新建一個library形式的module,刪掉這個module中src/main目錄裡面的所有檔案(包括刪掉java、res、AndroidManifest.xml)
(2)複製第三方庫的AndroidMainfest.xml、res、src檔案(夾)到庫目錄的src/main目錄中
(3)將src/main目錄下的src目錄重新命名(Shift+F6)為java
(4)刪除庫module中的build.gradle檔案(注意不要修改錯了地方)中的dependencies和release模組(這一步可以不做)
注意:除了上面三個檔案 還有 libs 、assest等等檔案對應複製就可以了
如果libs 檔案中有.so檔案(就是jni) ,android studio 是將jar包和.so檔案分開放的,jar包還放在libs中,so檔案放在jniLibs中 兩種解決方法
方法1、 新建一個 在src/main檔案中新建 jniLibs資料夾,將.so檔案都拷貝進去
方法2、.so檔案還是放在libs中但是,要告訴android studio去哪裡找.so檔案
修改當前module的build.gradle檔案。
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
以上兩種方法 結果都是一樣的效果一樣。
在工程中可以看到多出了jniLibs的資料夾如圖
總結:其實.so檔案一般都是一些驅動硬體的程式 ,執行起來都是在如下的路徑中
執行到手機中的時候 這些.so檔案 既不是在libs中也不是在jniLibs中,以上兩個都是開發時候看見的路徑,實際打包成apk的時候是在lib 資料夾中。
這是監控列印的路徑 System.out: so檔案的路徑::::/data/data/專案名稱/lib/XXX.so
所以放在哪裡都一樣,這要最終android studio 可以找得到並且打包到apk 的 lib中就可以了!
4、將 module library 新增給當前的專案
完成了!
寫的不太好只有自己能夠看得懂,就當是筆記!