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文件中,增加加粗的那一行

Android {

    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

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