創(chuàng)建 Android 庫
在應(yīng)城等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,應(yīng)城網(wǎng)站建設(shè)費(fèi)用合理。
Android 庫在結(jié)構(gòu)上與 Android 應(yīng)用模塊相同。它可以提供構(gòu)建應(yīng)用所需的一切內(nèi)容,包括源代碼、資源文件和 Android 清單。不過,Android 庫將編譯到您可以用作 Android 應(yīng)用模塊依賴項(xiàng)的 Android 歸檔 (AAR:Android Archive Resource) 文件,而不是在設(shè)備上運(yùn)行的 APK。與 JAR 文件不同,AAR 文件可以包含 Android 資源和一個清單文件,這樣,除了 Java 類與方法外,您還可以捆綁布局和可繪制對象等共享資源。
庫模塊在以下情況下非常有用:
構(gòu)建使用某些相同組件(例如 Activity、服務(wù)或 UI 布局)的多個應(yīng)用。
構(gòu)建存在多個 APK 變體(例如免費(fèi)版本和付費(fèi)版本)的應(yīng)用并且需要在兩種版本中使用相同的核心組件。
在任何一種情況下,只需要將您希望重用的文件移動到庫模塊中,然后以依賴項(xiàng)的形式為每個應(yīng)用模塊添加庫。本頁面將說明如何執(zhí)行這兩個操作。
創(chuàng)建庫模塊
要在您的項(xiàng)目中創(chuàng)建一個新的庫模塊,請按以下步驟操作:
1、點(diǎn)擊** File New New Module。**
2、在出現(xiàn)的 Create New Module 窗口中,依次點(diǎn)擊** Android Library 和 Next。還存在一個用于創(chuàng)建 Java 庫的選項(xiàng),可以構(gòu)建傳統(tǒng)的 JAR 文件。盡管 JAR 文件在大多數(shù)項(xiàng)目中都非常實(shí)用(尤其在您希望與其他平臺共享代碼時),但這種文件不允許您包含 Android 資源或清單文件,而后者對于 Android 項(xiàng)目中的代碼重用非常有用。**因此,本指南將側(cè)重論述創(chuàng)建 Android 庫。
3、為您的庫命名,并為庫中代碼選擇一個最低的 SDK 版本,然后點(diǎn)擊 Finish。
在 Gradle 項(xiàng)目同步完成后,庫模塊將顯示左側(cè)的 Project 面板中。如果您未看到新模塊文件夾,請確保將視圖切換為 Android 視圖。
將應(yīng)用模塊轉(zhuǎn)換為庫模塊
如果您現(xiàn)有的應(yīng)用模塊包含您希望重用的所有代碼,則可以按照以下步驟將其轉(zhuǎn)換為庫模塊:
1、打開現(xiàn)有應(yīng)用模塊的 build.gradle 文件。您應(yīng)在頂部看到以下內(nèi)容:
apply plugin: 'com.android.application'
2、按照下面所示更改插件分配:
apply plugin: 'com.android.library'
3、點(diǎn)擊 Sync Project with Gradle Files。
就這么簡單。模塊的整個結(jié)構(gòu)仍然相同,但是現(xiàn)在它將作為 Android 庫運(yùn)行,構(gòu)建也將創(chuàng)建一個 AAR 文件,而不是 APK。
生成aar
在Android Studio1.4中,New project,先默認(rèn)新建一個Applicaton module,接后File New New Module,選擇Androd Library Next,指定Library Name和Module Name。
新建的Library與正常的Application最大區(qū)別是module build.gradle中是**apply plugin: ‘com.android.library’ **而不是 apply plugin: 'com.android.application'
Build Make project,自動生成aar文件。
以依賴項(xiàng)形式添加您的庫
要在另一個應(yīng)用模塊中使用您的 Android 庫的代碼,請按以下步驟操作:
1、通過兩種方式之一將庫添加到您的項(xiàng)目(如果您是在相同項(xiàng)目中創(chuàng)建的庫模塊,則該模塊已經(jīng)存在,您可以跳過此步驟):
添加已編譯的 AAR(或 JAR)文件:
1、點(diǎn)擊 File New Module。
2、依次點(diǎn)擊 Import .JAR/.AAR Package 和** Next**。
3、輸入 AAR 或 JAR 文件的位置,然后點(diǎn)擊 Finish。
將庫模塊導(dǎo)入到您的項(xiàng)目中:
1、點(diǎn)擊** File New Import Module。**
2、輸入庫模塊目錄的位置,然后點(diǎn)擊 Finish。
庫模塊將復(fù)制到您的項(xiàng)目中,因此您可以盡管編輯庫代碼。如果您希望維護(hù)一個版本的庫代碼,則此方法可能不是您想要的,您應(yīng)按照上文所述導(dǎo)入編譯的 AAR 文件。
2、確保庫列在您 settings.gradle 文件的頂部,如下面名為“my-library-module”的庫所示:
include ':app', ':my-library-module'
3、打開應(yīng)用模塊的 build.gradle 文件,并向 dependencies 塊中添加一行新代碼,如下面的片段所示:
dependencies {
compile project(":my-library-module")
}
4、點(diǎn)擊 Sync Project with Gradle Files。
在上面的示例中,名為 my-library- module 的 Android 庫模塊成為 build.gradle 文件所在模塊的構(gòu)建依賴項(xiàng)。
您的應(yīng)用模塊現(xiàn)在可以訪問 Android 庫中的任何代碼和資源,庫 AAR 文件在構(gòu)建時已捆綁到您的 APK 中。
不過,如果希望單獨(dú)共享 AAR 文件,則可以在 項(xiàng)目名稱/模塊名稱/build/outputs/aar/ 中找到它,也可以通過點(diǎn)擊 Build Make Project 的方式重新生成此文件。
選擇要設(shè)為公開的資源
庫中的所有資源在默認(rèn)情況下均處于公開狀態(tài)。要將所有資源隱式設(shè)為私有,您必須至少將一個特定的屬性定義為公開。資源包括您項(xiàng)目的 res/ 目錄中的所有文件,例如圖像。要阻止您的庫用戶訪問僅供內(nèi)部使用的資源,您應(yīng)通過聲明一個或多個公開資源的方式來使用這種自動私有標(biāo)識機(jī)制。
要刪除某個公開資源,請將一個聲明添加到您的庫的 public.xml文件中。如果您之前尚未添加公開資源,則需要在您的庫的 res/values/目錄中創(chuàng)建public.xml 文件。
下面的示例代碼可以創(chuàng)建兩個名稱分別為 mylib_app_name和 mylib_public_string 的公開字符串資源:
resources
public name="mylib_app_name" type="string"/
public name="mylib_public_string" type="string"/
/resources```
如果希望任何資源保持對使用您的庫的開發(fā)者可見,您應(yīng)當(dāng)將其設(shè)為公開。例如,盡管 [v7 appcompat 庫]()中的大多數(shù)資源都是私有資源,但是為了支持[Material Design](),控制工具欄小部件的屬性應(yīng)當(dāng)公開。將屬性隱式設(shè)為私有不僅可以阻止您的庫用戶從內(nèi)部庫資源獲得代碼自動完成建議,還讓您能夠在不中斷您的庫客戶端的情況下重命名或移除私有資源。私有資源不在代碼自動完成和 [Theme Editor]() 的作用范圍內(nèi),并且如果您嘗試引用私有資源,[Lint]() 將顯示警告。##開發(fā)注意事項(xiàng)在開發(fā)您的庫模塊和相關(guān)應(yīng)用時,請注意以下行為和限制。
將庫模塊引用添加至您的 Android 應(yīng)用模塊后,您可以設(shè)置它們的相對優(yōu)先級。構(gòu)建時,庫會按照一次一個的方式與應(yīng)用合并,并按照從低到高的優(yōu)先級順序。
* **資源合并沖突**
構(gòu)建工具會將庫模塊中的資源與相關(guān)應(yīng)用模塊的資源合并。如果在兩個模塊中均定義了給定資源 ID,將使用應(yīng)用中的資源。
如果多個 AAR 庫之間發(fā)生沖突,將使用依賴項(xiàng)列表首先列出(位于 dependencies塊頂部)的庫中的資源。
為了避免常用資源 ID 的資源沖突,請使用在模塊(或在所有項(xiàng)目模塊)中具有唯一性的前綴或其他一致的命名方案。
* **庫模塊可以包含 JAR 庫**
您可以開發(fā)一個自身包含 JAR 庫的庫模塊;不過,您需要手動編輯相關(guān)應(yīng)用模塊的構(gòu)建路徑,并添加 JAR 文件的路徑。
* **庫模塊可以依賴外部 JAR 庫**
您可以開發(fā)一個依賴于外部庫(例如 Maps 外部庫)的庫模塊。在這種情況下,相關(guān)應(yīng)用必須針對包含外部庫(例如 Google API 插件)的目標(biāo)構(gòu)建。另外也要注意,庫模塊和相關(guān)應(yīng)用都必須在其清單文件的 [uses- library
]() 元素中聲明外部庫。* **庫模塊不得包含原始資源**
工具不支持在庫模塊中使用原始資源文件(保存在 assets/目錄中)。應(yīng)用使用的任何原始資源都必須存儲在應(yīng)用模塊自身的 assets/目錄中。
* **應(yīng)用模塊的 minSdkVersion必須大于或等于庫定義的版本**
庫作為相關(guān)應(yīng)用模塊的一部分編譯,因此,庫模塊中使用的 API 必須與應(yīng)用模塊支持的平臺版本兼容。
* **每個庫模塊都會創(chuàng)建自己的 R 類**
在您構(gòu)建相關(guān)應(yīng)用模塊時,庫模塊將先編譯到 AAR 文件中,然后再添加到應(yīng)用模塊中。因此,每個庫都有其自己的 R 類,并根據(jù)庫的軟件包名稱命名。從主模塊和庫模塊生成的 R 類會在所需的所有軟件包(包括主模塊的軟件包和庫的軟件包)中創(chuàng)建。
* **庫模塊可能包含自己的 ProGuard 配置文件**
通過將 [ProGuard]() 配置文件添加到包含其 ProGuard 指令的庫,您可以在自己的庫上啟用代碼壓縮。構(gòu)建工具會為庫模塊將此文件嵌入到生成的 AAR 文件中。在您將庫添加到應(yīng)用模塊時,庫的 ProGuard 文件將附加至應(yīng)用模塊的 ProGuard 配置文件 (proguard.txt)。通過將 ProGuard 文件嵌入到您的庫模塊中,您可以確保依賴于此庫的應(yīng)用模塊不必手動更新其 ProGuard 文件即可使用庫。當(dāng) ProGuard 在 Android 應(yīng)用模塊上運(yùn)行時,它會同時使用來自應(yīng)用模塊和庫的指令,因此您不應(yīng)當(dāng)只在庫上運(yùn)行 ProGuard。
要指定您的庫的配置文件名稱,請將其添加到 consumerProguardFiles方法中,此方法位于您的庫的 build.gradle文件的 defaultConfig塊內(nèi)。例如,以下片段會將 lib-proguard-rules.txt設(shè)置為庫的 ProGuard 配置文件:
android {
defaultConfig {
consumerProguardFiles 'lib-proguard-rules.txt'
}
...
}
默認(rèn)情況下,應(yīng)用模塊會使用庫的發(fā)布構(gòu)建,即使在使用應(yīng)用模塊的調(diào)試構(gòu)建類型時亦是如此。要使用庫中不同的構(gòu)建類型,您必須將依賴項(xiàng)添加到應(yīng)用的 build.gradle文件的 dependencies塊中,并在庫的 build.gradle文件中將 publishNonDefault設(shè)置為 true。例如,您應(yīng)用的 build.gradle文件中的以下代碼段會使應(yīng)用在應(yīng)用模塊于調(diào)試模式下構(gòu)建時使用庫的調(diào)試構(gòu)建類型,以及在應(yīng)用模塊于發(fā)布模式下構(gòu)建時使用庫的發(fā)布構(gòu)建類型:
dependencies {
debugCompile project(path: ':library', configuration: 'debug')
releaseCompile project(path: ':library', configuration: 'release')
}
您還必須在自己庫的 build.gradle文件的 android 塊內(nèi)添加以下代碼行,以便將此庫的非發(fā)布配置展示給使用它的項(xiàng)目:
android {
...
publishNonDefault true
}```
不過請注意,設(shè)置 publishNonDefault會增加構(gòu)建時間。
為了確保您的庫的 ProGuard 規(guī)則不會將意外的壓縮副作用施加到應(yīng)用模塊,請僅包含適當(dāng)規(guī)則,停用不適用于此庫的 ProGuard 功能。嘗試協(xié)助開發(fā)者的規(guī)則可能會與應(yīng)用模塊或它的其他庫中的現(xiàn)有代碼沖突,因此不應(yīng)包含這些規(guī)則。例如,您的庫的 ProGuard 文件可以指定在應(yīng)用模塊的壓縮期間需要保留的代碼。
注:Jack 工具鏈僅支持 ProGuard 的部分壓縮和模糊選項(xiàng)。
AAR 文件詳解
AAR 文件的文件擴(kuò)展名為 .aar,Maven 工件類型也應(yīng)當(dāng)是 aar。文件本身是一個包含以下強(qiáng)制性條目的 zip文件:
/AndroidManifest.xml
/classes.jar
/res/
/R.txt
此外,AAR 文件可能包含以下可選條目中的一個或多個:
/assets/
/libs/**名稱 **.jar
/jni/abi 名稱 /名稱.so(其中 abi 名稱是 Android 支持的 ABI 之一)
/proguard.txt
/lint.jar
?現(xiàn)在github上面越來越多大神,開源了各種特效庫出來,真的很炫很贊呀,經(jīng)常看到一些,收藏了不少,項(xiàng)目中總用得著的,統(tǒng)一記錄一下,嘖嘖嘖~作為我在上的第一篇文章,哇咔咔咔~很喜歡的UI,小清新,給人一種干凈舒服的感覺,哈哈。
1. AndroidViewAnimations ? 動畫效果,提供了各種類型的動畫效果
2. material-ripple ? 點(diǎn)擊波紋效果,讓指定View顯示Material Ripple 效果的控件,適用于所有的view
3. MaterialEditText ??Material Design風(fēng)格的輸入框控件,可以設(shè)置圖標(biāo),支持懸浮文字提示
4. MaterialViewPager ?? Material 風(fēng)格的ViewPager庫
5. Android圓形進(jìn)度按鈕,有時候項(xiàng)目中經(jīng)常有一些圓形的按鈕啊,還要自己在drawable中寫個xml文件來給自己的按鈕設(shè)置背景,有了這個真的是方便很多耶
6. MaterialDateTimePicker ?? 日期選擇器,Material風(fēng)格,很漂亮,包括日歷選擇器和時間選擇器,很強(qiáng)大?
7. SCViewPager ?? 引導(dǎo)頁,每個應(yīng)用都有引導(dǎo)頁吧,很方便,很好用
8. AndroidImageSlider ? Android的圖像滑塊 ,一個多姿勢的輪播組件?
9. MaterialSearchView ? 非常漂亮的Material搜索視圖
10. material-dialogs
11. material-calendarview ?? 日歷視圖
12. NiftyDialogEffects ?? 高顏值的動畫效果的Dialog
13. Android-PickerView ?? 仿iOS的PickerView控件,有時間選擇和選項(xiàng)選擇并支持一二三級聯(lián)動效果
14. BottomNavigation ?? 底部導(dǎo)航欄,很酷炫喲~
15. InfiniteCycleViewPager ?? 一個有趣的ViewPager,超級酷炫
16. RecyclerViewCardGallery ?? RecyclerView實(shí)現(xiàn)Card Gallery效果,替代ViewPager方案。能夠快速滑動并最終定位到居中位置
17. WaveSideBar ?? ?一個效果非常酷炫的索引側(cè)邊欄
18. 3dTagCloudAndroid ?? 一個完全基于Android ViewGroup編寫的控件,支持將一組View展示為一個3D球形集合,并支持全方向滾動
19. AndroidTagView
20. VideoListPlayer 實(shí)現(xiàn)了在列表控件(ListView, RecyclerView)中加載并播放視頻,并支持滑動時自動播放/暫停的功能, 利用該項(xiàng)目,可以輕松實(shí)現(xiàn)類似Instagram的視頻播放功能
21. EditTextFirework-Demo 一個絢麗易用的輸入框煙花效果,模仿網(wǎng)頁360搜索框
22. Android-SpinKit Android 加載動畫庫
android 中已經(jīng)有非常優(yōu)秀的圖表庫如MPAndroidChart,hellocharts。這些圖表庫功能強(qiáng)大,支持圖表類型多。最近筆者公司只有一個很簡單的圖表需求,只需要做一個折線圖,用這些庫的話,完全可以實(shí)現(xiàn)但是導(dǎo)入,實(shí)現(xiàn)麻煩,而且會增大包體積。如是就想到了寫一個輕量級的圖表框架AndroidLightCharts,只包含幾個最基本,最常用的charts。
demo 及源碼地址:
折線圖:
餅狀圖:
目前只包含上面三種chart,使用起來非常簡單。其中LineView表示折線圖,PieView 表示餅狀圖,BarView表示柱狀圖。
每種類型的chart可配置的項(xiàng)如下:
Android的本地實(shí)現(xiàn)層次具有基本的庫和程序,這些庫和程序是Android基本系統(tǒng)運(yùn)行的基礎(chǔ),主要包含以下內(nèi)容:
l
標(biāo)準(zhǔn)C/C++庫Bionic;
l
C語言工具庫libcutils;
l
init進(jìn)程;
l
shell工具;
l
C++工具庫libutils。