導入Android工程作爲Library Module流程及問題集

導入模塊的主要流程:

      一.在主工程中,點擊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佈局文件。若有相同的,建議重命名子模塊的文件名。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章