導入模塊的主要流程:
一.在主工程中,點擊File -> New -> Import Module。導入的目錄應該是模塊工程目錄
裏面的app文件夾。
二.修改模塊工程的build.gradle文件:
1.修改“com.android.application”爲“com.android.library”;
2.刪除“applicationId”這行。
三.修改主工程的依賴。
1.打開工程結構對話框,選擇app Module,在右側點擊依賴標籤;
2.找到加號並點擊,從彈出菜單中選擇“3 module dependencies”;
3.選擇需要添加的模塊。
導入工作基本完成。
以下是遇到的問題集:
一.manifest錯誤。由於模塊不再是app,即作如下修改:
<application>
application沒有任何的屬性。
在模塊manifests文件中,刪除與主工程的manifest文件中相同的標籤。例如:所需的權限,百度,友盟的key等等。
二.普通的jar包依賴衝突。可以使用exclude實現。eg:
compile(project(':qianwanli')) {
exclude group: 'com.squareup.okhttp'
}或者
compile(project(':qianwanli')) {
exclude module: 'okhttp'
}
三.特殊的jar包依賴衝突。例如:百度定位SDK,由於不知道group,module是什麼,試了很多都沒有成功。
error信息:com.baidu.location.a衝突。
最後成功的方法:把百度SDK,單獨新建成一個同等的module,且導入工程。然後各自依賴compile project(':BaiduLocSDK')。BaiduLocSDK是我的模塊名稱。
這樣,再也沒有百度SDK的衝突。
四.針對相同的so庫文件,直接保留主工程裏面的so庫文件,刪除子模塊裏面相同的so文件。
五.運行錯誤:找不到id錯誤,或者inflate構建錯誤。由於編譯後模塊中的資源和主工程的資源是合併在一起的,爲了避免重名問題,需要對模塊中資源進行重命名。
- 確保模塊之間的res資源文件的文件名不要有相同的,否則運行exception。例如:string,layotu佈局文件。若有相同的,建議重命名子模塊的文件名。