androidStudio 4.0 打包jar、找不到jar一系列問題、classes.jar位置
寫前叨叨…
衆所周知,做爲一名合格的Android開發者,打包 aar、jar、apk… 是所必需要掌握的技能,但是就在今天下午發生了一件事件:我打包出來的jar 包竟然找不到了,若是你也遇到了一樣的問題,各位看官繼續瀏覽。java
本文的重點是爲了解決 打包出來的jar 找不到的問題,可直接跳入 二:遇到的問題android
今天遇到的問題是隨着AndroidStudio版本的升級,構建腳本中 的
from 路徑發生了改變,因此找不到 class.jar 因此發現不了什麼問題,而生成的jar又找不到。
程序員
不一樣版本的androidStudio 中 classes的位置
build/intermediates/packaged-classes/release/
build/intermediates/bundles/defalut/
build/intermediates/aar_main_jar/release
測試
正文
一:新建Module
1:新建 Module
2:選擇 ModuleType爲 AndroidLibrary
3:爲新建的Library 命名爲TestJarLibrary(這個能夠根據你本身來命名)
4:點擊Finish 後總體 項目結構應該是這樣子的
gradle
5:在 TestJarLibrary 這個 Module中 新建類 LogUtil 並新建方法 showLog(這一步主要是爲了驗證咱們的Module可否可用)
網站
6:接下來就讓咱們在 別的Module 測試一下 咱們的TestJarLibrary是否可用, 在須要使用的 Module build.gradle 中的dependencies 中新增ui
implementation project(path: ':TestJarLibrary')
讓主Module 引入 TestJarLibraryspa
7:隨便找個地方試一下 LogUtil.showLog(「測試」), 發現並無報錯,導包也是對的,說明咱們的TestJarLibrary 是沒問題的。
code
二:打包Jar (重點)
1:在testJarLibrary 的 build.gradle 中添加構建腳本 ,並同步blog
task makeJar(type: Copy) { //刪除存在的 delete 'build/libs/testLibrary.jar' //設置拷貝的文件 (重中之重) from('build/intermediates/aar_main_jar/release') //打進jar包後的文件目錄 into('build/libs/') //將classes.jar放入build/libs/目錄下 // include ,exclude參數來設置過濾 // (咱們只關心classes.jar這個文件) include('classes.jar') //重命名 rename('classes.jar', 'testLibrary.jar') } makeJar.dependsOn(build)
2:執行構建腳本
在 Terminal 中執行 命令 gradlew makeJar
就會在 Test JarLibrary 中的build/libs 生成 咱們所須要的 testLibrary.jar
這裏的名字,生成後保存路徑均可以根據上面的打包 腳本去修改。
3:測試jar :將咱們打包出來的jar copy 到所須要的Module 地方的libs 目錄下,並在 build.gradle 的 dependencies 添加
implementation files('libs\\testLibrary.jar')
4:此時 你剛剛導進去的 jar包應該是能夠展開的這種狀態,而後咱們找個地方測試一下 LogUtil 的調用。發現不報錯,一切正常
二:遇到的問題
上面是理想的狀態,這種簡單的寫法,放在之前寫了好幾百遍,都沒有問題,各大網站各類打包的文章數不勝數,可是隨着 AndroidStudio 的版本升級出現了一些小問題。
1:執行打包命令後 提示success 了,可是就是找不到 Jar包的位置,咱們明肯定義了路徑 爲 build/libs/,可是就是沒有jar,甚至連libs 目錄都找不到。
2:經過 各類百度,發現 不一樣的androidStudio版本 build/ class.jar 的目錄發生了變化 ;
3:目前我所使用的是 android 4.0.1
文件所在目錄爲:
build/intermediates/aar_main_jar/release
4:其他androidStudio 版本可能的位置
build/intermediates/packaged-classes/release/
build/intermediates/bundles/defalut/
三:解決問題
嘗試用不一樣版本下的 classes.jar 文件路徑
寫後叨叨…
一件簡單的事情 卻讓 一個老程序員抓耳撓腮,不知所措,因此點點滴滴的知識積累纔是關鍵。以上文字僅表明我我的意見,工做中遇到的問題當作積累