以下環境為Android Studio 1.3.2,Gradle 2.7(as自帶2.4,另下載的2.7)
編譯時提示Multiple dex files define: Lcom/sina/weibo/sdk/BuildConfig異常
新浪微博提供的SDK里所帶的weibosdkcore.jar里包含了BuildConfig類,而api工程也會生成同名(包名也相同)類,所以有此編譯異常。解決方法是用工具(如7zip)直接刪除weibosdkcore.jar里的BuildConfig.class文件。還有其他解決方法,這個鏈接不錯。
無法clean project
有時clean后仍然有文件殘留(例如classes.jar),此時需要手工刪除項目路徑下的build目錄(刪除時可能會提示classes.jar被占用,多半是as自己在使用,可關閉as再重試)。比較惡心的是,clean時並不會提示你有文件無法刪除。
兩個project共享一個module
假設自己寫了一個android library(名稱library1),然后想在Project1和Project2里都使用它,但不把library1復制兩份。竅門是在project2的setting.gradle文件里像下面這樣引用project1里的資源:
include ':../project1/library1'
Configuration with name 'default' not found.
檢查settings.gradle文件里,include的module是否存在,通常是include了不存在的module造成的。參考鏈接
Proguard提示Duplicate Entry錯誤
多個module依賴多個相同的jar文件時會有這個問題,我當時遇到的是xutils,解決辦法是在jcenter上找到了對應的repository,改為不直接使用jar而是使用repository解決。Proguard Troubleshooting
用proguardFile還是proguardFiles?
在build.gradle里指定項目proguard配置文件時,用proguardFiles可以同時指定多個,用proguardFile可指定一個(可多行),經測試效果是一樣的。注意:在module settings對話框里可能會顯示不出來正確的文件名。還有一個變化:比較新的as版本缺省文件名是proguard-rules.pro,以前是proguard-rules.txt。
被依賴module里BuildConfig.DEBUG的值總為false
例如module A依賴module B和module C,在Eclipse里運行時B和C里BuildConfig.DEBUG的值會是true(導出簽名apk后會自動變成false);然而在Android Studio里B和C里的BuildConfig.DEBUG值總是false,A里的正常。這樣就導致if(BuildConfig.DEBUG){Log.d(...)}日志無法正常顯示。參考鏈接 參考鏈接2