關於AndroidStudio引用外部庫時的問題(gradle構建機理)

今天看到一個檢測內存泄漏的工具LeakCanary(關於LeakCanary的用法有中文介紹), 於是想寫個demo試試.

結果, 遇到了一個問題LeakCanary類找不到. 我下載了一個Demo, 我的配置文件和這個Demo一模一樣!!

我無論我怎麼同步build.gradle文件, 都沒有效果.


我的module下的build.gradle配置文件的片段如下: 



點擊右上角的"Sync Now"之後, 發現"External Libraries"列表中有了兩個與leakcanary相關的引用, 這兩個引用分別是

leakcanary-analyzer-1.3.1 和 leakcanary-wacther-1.3.1

這兩個外部library中都沒有LeakCanary類, 於是在jcenter上找了一下.

發現上面兩個是jar包, 有一leakcanary-android-1.3.1, 但是aar包.

我又點擊了下載下來的demo中的LeakCanary類, 跳轉到一樣一個地方: 



原來引用的外部aar包, 都會解壓到<project-path>/build/intermediates/exploded-aar目錄下面!!


我在網上下的demo爲什麼可以應用aar包裏面的class, 我我自己創建的不可以呢??

我猜可能是aar包沒有解壓(aar包其實就是zip包)

經過一番摸索, module上右鍵->"Make Module 'Module-Name' ",  終於可以引用LeakCanary類了!!! (aar包已經解壓到build下...)



有點囉嗦, 主要是備忘一下

總結一下這番折騰: 

1. module下面的build.gradle中的 compile 'library', 可能引用的是jar包, 也可能引用的是aar包

2. 如果不能生成R文件(也經常遇到這個問題, 特別是衝其他項目中copy res目錄是, R文件就不能生成) 

或者 不能引用外部包中的類, 重新make你的module  (在你的module上右鍵->Make Module 'Module-Name')

3. 查看外部庫是否引用成功, 可以在兩個地方看:  "External Libraries" (引用成功後, jar和aar包都顯示在這裏面, 你引用的library所依賴的庫也會在這裏顯示)    和 

"<project_dir>/build/intermediates/exploded-aar" (針對aar包) 

切到Project模式: 






如有錯誤, 歡迎指正大笑






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