AS 3.1 項目打包成jar或aar


 

1.首先明白一個道理。

  Android Studio編譯的時候會自動將項目生成jar和aar的,我一開始以為jar需要自己單獨生成,其實AS已經自動生成了,網上找的很多資料都是一個復制的過程而已。

  只不過在AS3.1以前是放到build/intermediates/bundles文件夾里面。

  然而現在換成了build\intermediates/packaged-calsses文件夾里面了,以后也不知道會放哪兒了,這是一坑。

 

2.通常第一步都是一個新建一個module。

  如果直接從已經完成的項目出發,可以直接修改build.gradle第一行,改成apply plugin:'com.android.library';

  但是這么一修改,可能會出現很多錯誤,什么參數錯誤,什么資源文件有問題等。

  保險起見,從“0”開始。

  新建一個module,注意選擇Android Library類型。

  把一些需要打包的文件統統寫到這個library里面,如果有什么錯誤的話,就一個一個去解決吧。

  將module完善之后,就開始打包了。

 

3.在module的build.gradle配置生成jar的方案。

  在文末添加如下代碼:

//修改jar名字+將指定jar生成的地方
task makeJar(type:Copy){
    //如果之前存在,則先刪除
    delete 'build/libs/test.jar'
    //設置拷貝的文件
    from('build/intermediates/packaged-classes/debug/')
    //生成jar包后的文件目錄位置
    into('build/libs/')
    //include,exclude參數來設置過濾
    include('classes.jar')
    //重命名
    rename('classes.jar','test.jar')
}

makeJar.dependsOn(build)

  

4.利用命令行執行該方案。

  在AS最下方的Terminal中輸入命令即可。

  如果是MAC電腦:./gradlew makeJar 

          如果報錯,參考一下這篇文章。

  如果是Windows電腦: gradlew makeJar

          如果報錯,一般都是沒有配置gradle環境,谷歌一下解決方案唄。

  幸運的話,可以在build/libs文件夾下看到生成的jar文件了。

 

5.簡單理解一下jar和aar的區別吧。

  參考文章:AndroidStudio項目打包成jar。

  在Build Success后,在module的build/outputs/aar文件夾下會有一個aar文件。

  在module的build/libs或自己定義的其他位置下會有一個jar文件。

  二者區別:

  jar:  只包含了class文件與清單文件 ,不包含資源文件,如圖片等所有res中的文件。

  aar:  包含jar包和資源文件,如圖片等所有res中的文件。

  aar編譯完就自動生成了,所以不同擔心資源問題。

 

6.如何使用aar文件。

  很簡單。

  i.將aar文件拷貝至目標項目的app/libs文件夾下。

  ii.在app下的build.gradle中添加如下代碼:    

    分別是這兩塊:  

repositories{
        flatDir{
            dirs 'libs'
        }
    }
implementation(name:'librarydemo-release',ext:'aar')

  Sync Now一下,如果沒有報錯,應該就是成功引用了。

  看一下依賴的外部類,已經有了剛才我們引用的library了。

  

 

7.如何引用jar文件。

  這個網上搜一大把。方法也是類似的,更加簡單。

  先將jar拷貝至目標項目的app/libs文件夾下。

  mac電腦操作如下:右鍵->add as library->選擇當前mudule->OK.

  windows電腦類似的。

 

8.其實jar文件也是可以使用資源文件的。

  稍微有點麻煩。

  首先將jar包中用到的資源文件放到自己的項目中。

  然后在自己的項目中利用反射獲取。參考文章點我。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM