今天看到一個檢測內存泄漏的工具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模式:
如有錯誤, 歡迎指正