1. 程式人生 > >Android studio 匯入其他一個專案作為依賴包問題

Android studio 匯入其他一個專案作為依賴包問題

將as的專案作為library匯入到另外一個as專案中:

1.啟動AndroidStudio後,開啟你需要接收Library的專案。比如有兩個專案,專案A,和Library專案B,那麼開啟專案A。

2.在下拉選單中依次找到New— —Import Module,點選開啟專案匯入視窗。注意匯入的是Module而不是Project,如果是Project的話AndroidStudio會自動開啟一個新的視窗編輯,那樣的話就是不Library了。

3.在開啟的視窗中點選右側的"..."瀏覽視窗,在資料夾視窗中找到你要匯入的Library專案的位置,選擇後點擊底部的OK按鈕匯入。

4.匯入視窗中顯示了該Module(專案)的詳細資訊,點選Finish完成匯入。需要注意的是匯入到AndoridStudio專案中的Library也必須是AndroidStudio專案,不能是Eclipse專案,如果是Eclipse專案的話,需要選擇匯出AndroidStudio專案。

5.在專案首頁中選擇Project標籤,可以看到專案的檔案結構圖中多出了我們剛才匯入的專案。Library的匯入就完成了。

接下來是一些配置,把該library匯入到主專案中

1.點選頂部左上角的File選單,在出現的下拉選單中找到Project Structure,點選進入。

2.在視窗左側選擇原始的專案後,點選右側的Dependencies(依賴項)。可以看到專案當前引用的jar包等資訊。

3.點選右側的“+”新增按鈕,在下拉選單中找到Module Dependency(專案依賴),點選開啟專案選擇視窗。

4.選擇前面步驟中匯入的Library專案後,點選OK按鈕匯入到原始專案中。

5.原始專案的依賴項中就出現了匯入的Libray專案,這時在專案中就能正確引用Library專案中的內容了,點選底部的OK按鈕完成新增。

你以為這樣就完成了嗎?真是太天真了,這只是第一步,接下來會有無數的bug在等著你,下面就是本篇文章的正題了,bug集錦!!

Bug No.1

Error:  AndroidStudio TransformException : Error:Execution failed for task':app:transformClassesWithDexForDebug'

解決方案:

在你的主專案的build.gradle檔案中,增加加粗的那一行

    compileSdkVersion ..

    buildToolsVersion '...'

    defaultConfig {

       ...

       targetSdkVersion ..

       multiDexEnabled true  // this line will solve this problem

   }

}

Bug No.2

Error :unspecified on project app resolves to an APK archive which is not supported

解決方案:

在我們作為library的專案裡,他的頭部是apply plugin: 'com.Android.application' 

這句話告訴了Gradle將我們要作為library的專案編譯稱為application,也就是apk,這就是問題的所在;

方法就是,將上面該句改為:apply plugin: 'com.android.library'  後,別急 還有問題,Gradle將其編譯稱為一個Library,也就是庫,執行之後,會出現 

Error  :Libraryprojects cannot set applicationId. applicationId is set to 'package_name' indefault config.

那是因為一個庫不允許設定applicationId,需要將builde.gradle — android — defaultConfig中的applicationId刪除。

Bug No.3

Error:Error:Executionfailed for task ':greencar:processDebugManifest'.> Manifest merger failed withmultipleerrors, see logs。

原因:AS的Gradle外掛預設會啟用Manifest Merger Tool,若Library專案中也定義了與主專案相同的屬性(例如預設生成的android:icon和android:theme),則此時會合並失敗,並報上面的錯誤。

解決方案:

在manifest根標籤上加入xmlns:tools="http://schemas.android.com/tools",並在Manifest.xml的application標籤下新增tools:replace="name,icon, label,heme"

以及在主專案的 manifest檔案中,重複寫了 call_phone的許可權,網上也有人是某個activity下多寫了一句intent-filter,裡面沒有內容,將這些重複的空的刪掉就好,並將作為lib的minisdk與主專案同步(修改library飛build.gradle檔案中最小sdk,或者降低主專案的sdk)

Bug No.4

error:在作為library的專案中報錯:需要常量表達式

解決方案:

在一般的Android專案中,R類的常量都是用final定義的,但ADT 14之後,如果在library 專案中,它會沒有final關鍵字,而我們在作為library的專案中使用了switch ,在switch語句的case中,如果使用 R.id.xxx 則會提示有問題,不允許非常量在case語句中。

Google提供的一個方法就是把它轉化為if-else語句。

轉載:http://blog.csdn.NET/sinat_21112393/article/details/52056806