先問個問題:1秒鐘轉化爲long類型等於多少?
首先、先理解jar與aar的簡單區別:
*.jar:只包含了class文件與清單文件 ,不包含資源文件,如圖片等所有res中的文件。
*.aar:包含所有資源 ,class 以及 res 資源文件全部包含
在我們成型的項目中打包步驟
-
修改app下的bulid gradle文件:
把apply plugin: 'com.android.application’修改成apply plugin: ‘com.android.library’ -
註釋調defaultConfig下的applicationId
-
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,這樣我們就可以在這個類中做一些初始化操作了。
調用者在他的application中傳入application:
然後直接build–>Make Moudle app 就可以生成aar,與jar了!
一般查看的文件目錄在:
項目目錄下的build文件-> outputs -> aar
注意:
-
主項目需要依賴AAR中所依賴的遠程庫,否則會出現ClassNotFound異常
這裏也許某個依賴庫你們的版本會發生衝突,這就需要你們協調了 -
資源命名最好統統加上你的項目名字前綴,比如圖片資源、string、color、dimens、layout等等,反正res目錄下所有文件最好都使用統一的加前綴命名,防止跟宿主app下的資源重複,因爲aar引用跟源碼引用起到的效果一樣一樣的,所有很容易出現資源重複引用的問題,所以加上前綴非常有必要。
-
如果該aar包裏面有微信支付,分享等第三方庫,你要在主工程中使用,要記得在gradle裏面替換applicationId,或者用你主工程的包名和key去獲取第三方操作的key和id
以分享爲例,如果你清單文件中的分享KEY與主項目中的build gradle文件中的分享KEY不同的話,就會包清單文件異常的。 -
butterknife需要統一用8.4.0以上的版本,不然報錯 ;依我的建議,最好不用,否則有你好受的哈!
-
如果在aar的MyAppliction裏面使用了類的管理器,那麼在打包成aar的時候需要將代碼抽出來做個獨立的類管理器,記住一點,打包成aar之後所有和application有關的東西都要檢查替換,避免出現空指針異常。
-
AAR模塊用butterknife需要把資源R改爲R2(批量替換)
-
佈局文件不要重名,否則會報找不到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