Android項目aar、jdk打包

先問個問題:1秒鐘轉化爲long類型等於多少?

首先、先理解jar與aar的簡單區別:

*.jar:只包含了class文件與清單文件 ,不包含資源文件,如圖片等所有res中的文件。
*.aar:包含所有資源 ,class 以及 res 資源文件全部包含

在我們成型的項目中打包步驟

  1. 修改app下的bulid gradle文件:
    把apply plugin: 'com.android.application’修改成apply plugin: ‘com.android.library’

  2. 註釋調defaultConfig下的applicationId

  3. AndroidManifest.xml文件,修改application
    添加:系統備份的功能,允許用戶備份系統應用和第三方應用的apk安裝包和應用數據,以便在刷機或者數據丟失後恢復應用

<application
        android:allowBackup="true"
        android:supportsRtl="true"


</application>

4、註釋launcher程序的Activity啓動的action

<!--            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>-->

5.如果你自己自定義了Application,需要去掉,因爲AAR中是沒有Application的,那問題來了,我們原來在Application中的初始化代碼怎麼辦?這個簡單,我們可以單獨寫一個Options類,提供給調用者,讓他傳遞過來application,這樣我們就可以在這個類中做一些初始化操作了。

https://upload-images.jianshu.io/upload_images/2787891-36f6402aac99204a.png?imageMogr2/auto-orient/strip|imageView2/2/w/542/format/webp
調用者在他的application中傳入application:

在這裏插入圖片描述
然後直接build–>Make Moudle app 就可以生成aar,與jar了!

一般查看的文件目錄在:
在這裏插入圖片描述
項目目錄下的build文件-> outputs -> aar

注意:

  1. 主項目需要依賴AAR中所依賴的遠程庫,否則會出現ClassNotFound異常
    這裏也許某個依賴庫你們的版本會發生衝突,這就需要你們協調了

  2. 資源命名最好統統加上你的項目名字前綴,比如圖片資源、string、color、dimens、layout等等,反正res目錄下所有文件最好都使用統一的加前綴命名,防止跟宿主app下的資源重複,因爲aar引用跟源碼引用起到的效果一樣一樣的,所有很容易出現資源重複引用的問題,所以加上前綴非常有必要。

  3. 如果該aar包裏面有微信支付,分享等第三方庫,你要在主工程中使用,要記得在gradle裏面替換applicationId,或者用你主工程的包名和key去獲取第三方操作的key和id
    以分享爲例,如果你清單文件中的分享KEY與主項目中的build gradle文件中的分享KEY不同的話,就會包清單文件異常的。

  4. butterknife需要統一用8.4.0以上的版本,不然報錯 ;依我的建議,最好不用,否則有你好受的哈!

  5. 如果在aar的MyAppliction裏面使用了類的管理器,那麼在打包成aar的時候需要將代碼抽出來做個獨立的類管理器,記住一點,打包成aar之後所有和application有關的東西都要檢查替換,避免出現空指針異常。

  6. AAR模塊用butterknife需要把資源R改爲R2(批量替換)

  7. 佈局文件不要重名,否則會報找不到Id的異常


最後回答開始說的問題:
 long time = 3600000+366000;//1m = 1000毫秒
 Date date = new Date(time);
      
 long hour = time/(60*60*1000);
 long minute = (time - hour*60*60*1000)/(60*1000);
 long second = (time - hour*60*60*1000 - minute*60*1000)/1000;
 System.out.println(hour+ "時" + minute + "分 " + second+"秒");
 
總結:1秒鐘等於1000L
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章