android類庫
Ⅰ android apk 包括 android 基礎類庫嗎
流程概述:
1、打包資源文件,生成R.java文件
2、處理aidl文件,生成相應java 文件
3、編譯工程源代碼,生成相應class 文件
4、轉換所有class文件,生成classes.dex文件
5、打包生成apk
6、對apk文件進行簽名
7、對簽名後的apk文件進行對其處理
打包過程使用的工具
名稱
功能介紹 在操作系統中的路徑 源碼路徑
aapt
(Android Asset Package Tool)
Android資源打包工具
${ANDROID_SDK_HOME} /build-tools/
ANDROID_VERSION/aapt
frameworks\base\tools\aap
aidl
(android interface definition language)
Android介面描述語言,
將aidl轉化為.java文件的工具
${ANDROID_SDK_HOME}/build-tools/
ANDROID_VERSION/aidl
frameworks\base\tools\aidl
javac Java Compiler
${JDK_HOME}/java
c或/usr/bin/javac
dex
轉化.class文件為Davik VM
能識別的.dex文件
${ANDROID_SDK_HOME}/build-tools/
ANDROID_VERSION/dx
apkbuilder
生成apk包
${ANDROID_SDK_HOME}/tools/
apkbuilder
sdk\sdkmanager\libs\sdklib\
src\com\android\sdklib\build\
ApkBuilderMain.java
jarsigner .jar文件的簽名工具 ${JDK_HOME}/jarsigner或/usr/bin/jarsigner
zipalign 位元組碼對齊工具
${ANDROID_SDK_HOME}/tools
/zipalign
第一步:打包資源文件,生成R.java文件。
【輸入】Resource文件(就是工程中res中的文件)、Assets文件(相當於另外一種資源,這種資源Android系統並不像對res中的文件那樣優化它)、AndroidManifest.xml文件(包名就是從這里讀取的,因為生成R.java文件需要包名)、Android基礎類庫(Android.jar文件)
【工具】aapt工具
【輸出】打包好的資源(bin目錄中的resources.ap_文件)、R.java文件(gen目錄中)
打包資源的工具aapt,大部分文本格式的XML資源文件會被編譯成二進制格式的XML資源文件,除了assets和res/raw資源被原裝不動地打包進APK之外,其它的資源都會被編譯或者處理。 。
生成過程主要是調用了aapt源碼目錄下的Resource.cpp文件中的buildResource()函數,該函數首先檢查AndroidManifest.xml的合法性,然後對res目錄下的資源子目錄進行處理,處理的函數為makeFileResource(),處理的內容包括資源文件名的合法性檢查,向資源表table添加條目等,處理完後調用compileResourceFile()函數編譯res與asserts目錄下的資源並生成resources.arsc文件,compileResourceFile()函數位於aapt源碼目錄的ResourceTable.cpp文件中,該函數最後會調用parseAndAddEntry()函數生成R.java文件,完成資源編譯後,接下來調用compileXmlfile()函數對res目錄的子目錄下的xml文件分別進行編譯,這樣處理過的xml文件就簡單的被「加密」了,最後將所有的資源與編譯生成的resorces.arsc文件以及「加密」過的AndroidManifest.xml文件打包壓縮成resources.ap_文件(使用Ant工具命令行編譯則會生成與build.xml中「project name」指定的屬性同名的ap_文件)。
關於這一步更詳細的流程可閱讀http://blog.csdn.net/luoshengyang/article/details/8744683
第二步:處理aidl文件,生成相應的java文件。
【輸入】源碼文件、aidl文件、framework.aidl文件
【工具】aidl工具
【輸出】對應的.java文件
對於沒有使用到aidl的android工程,這一步可以跳過。aidl工具解析介面定義文件並生成相應的java代碼供程序調用。
第三步:編譯工程源代碼,生成下相應的class文件。
【輸入】源碼文件(包括R.java和AIDL生成的.java文件)、庫文件(.jar文件)
【工具】javac工具
【輸出】.class文件
這一步調用了javac編譯工程src目錄下所有的java源文件,生成的class文件位於工程的bin\classes目錄下,上圖假定編譯工程源代碼時程序是基於android SDK開發的,實際開發過程中,也有可能會使用android NDK來編譯native代碼,因此,如果可能的話,這一步還需要使用android NDK編譯C/C++代碼,當然,編譯C/C++代碼的步驟也可以提前到第一步或第二步。
第四步:轉換所有的class文件,生成classes.dex文件。
【輸入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class文件),庫文件(.jar文件)
【工具】javac工具
【輸出】.dex文件
前面多次提到,android系統dalvik虛擬機的可執行文件為dex格式,程序運行所需的classes.dex文件就是在這一步生成的,使用的工具為dx,dx工具主要的工作是將java位元組碼轉換為dalvik位元組碼、壓縮常量池、消除冗餘信息等。
第五步:打包生成apk。
【輸入】打包後的資源文件、打包後類文件(.dex文件)、libs文件(包括.so文件,當然很多工程都沒有這樣的文件,如果你不使用C/C++開發的話)
【工具】apkbuilder工具
【輸出】未簽名的.apk文件
打包工具為apkbuilder,apkbuilder為一個腳本文件,實際調用的是android-sdk\tools\lib\sdklib.jar文件中的com.android.sdklib.build.ApkBuilderMain類。它的代碼實現位於android系統源碼的sdk\sdkmanager\libs\sdklib\src\com\android\sdklib\build\ApkBuilderMain.java文件,代碼構建了一個ApkBuilder類,然後以包含resources.arsc的文件為基礎生成apk文件,這個文件一般為ap_結尾,接著調用addSourceFolder()函數添加工程資源,addSourceFolder()會調用processFileForResource()函數往apk文件中添加資源,處理的內容包括res目錄與asserts目錄中的文件,添加完資源後調用addResourceFromJar()函數往apk文件中寫入依賴庫,接著調用addNativeLibraries()函數添加工程libs目錄下的Native庫(通過android NDK編譯生成的so或bin文件),最後調用sealApk()關閉apk文件。
第六步:對apk文件進行簽名。
【輸入】未簽名的.apk文件
【工具】jarsigner
【輸出】簽名的.apk文件
android的應用程序需要簽名才能在android設備上安裝,簽名apk文件有兩種情況:一種是在調試程序時進行簽名,使用eclipse開發android程序時,在編譯調試程序時會自己使用一個debug.keystore對apk進行簽名;另一種是打包發布時對程序進行簽名,這種情況下需要提供一個符合android開發文檔中要求的簽名文件。簽名的方法也分兩種:一種是使用jdk中提供的jarsigner工具簽名;另一種是使用android源碼中提供的signapk工具,它的代碼位於android系統源碼build\tools\signapk目錄下。
第七步:對簽名後的apk文件進行對齊處理。
【輸入】簽名後的.apk文件
【工具】zipalign工具
【輸出】對齊後的.apk文件
這一步需要使用的工具為zipalign,它位於android-sdk\tools目錄,源碼位於android系統源碼的build\tools\zipalign目錄,它的主要工作是將spk包進行對齊處理,使spk包中的所有資源文件距離文件起始偏移為4位元組整數倍,這樣通過內存映射訪問apk文件時速度會更快,驗證apk文件是否對齊過的工作由ZipAlign.cpp文件的verify()函數完成,處理對齊的工作則由process()函數完成。
以一個具體項目中包含的具體文件為例作圖如下:
Ⅱ Android常用類庫包都有哪些
Android 類庫中,各種包寫成android.*的方式,重要包的介紹如下:
android.app:提供高層的程序模型、提供基本的運行環境。
android.content:包含各種的對設備上的數據進行訪問和發布的類。
android.database:通過內容提供者瀏覽和操作資料庫。
android.graphics:底層的圖形庫,包含畫布,顏色過濾,點,矩形,可以將他們直接繪制到屏幕上。
android.location:定位和相關服務的類。
android.media:提供一些類管理多種音頻、視頻的媒體介面。
android.net:提供幫助網路訪問的類,超過通常的java.net.*介面。
android.os:提供了系統服務、消息傳輸、IPC 機制。
android.opengl:提供OpenGL 的工具,3D 加速。
android.provider:提供類訪問Android 的內容提供者。
android.telephony:提供與撥打電話相關的API交互。
android.view :提供基礎的用戶界面介面框架。
android.util:工具性的方法,例如時間日期的操作。
android.webkit:默認瀏覽器操作介面。 android.widget:包含各種UI 元素(大部分是可見的)在應用程序的屏幕中使用。
Ⅲ Android如何關聯類庫
首先是項目工程有兩個,第一個是做為類庫(library),第二個是主工程,這里說一下如何導入,這里使用的是eclipse:
第一步:和導入正常工程是一樣的,導入以後對項目右鍵—>屬性,有一個Is Library選項,打上勾即可。
如下圖:
Ⅳ 有哪些常用或優秀的 Android 第三方類庫
Android開發第三方類庫分類:
gifview 、 gifview2
這兩個項目是同一人開發的,用於顯示gif動畫,純java解碼 ,gif圖片過大會產生OOM。
android-gif-drawable
一個也是用於解碼顯示gif的類庫,採用jni解碼,大GIF也不會產生oom,完美運行。
PhotoView
PhotoView 是一款擴展自Android ImageView ,支持通過單點/多點觸摸來進行圖片縮放的智能控制項。使用比較簡單,提供了一個名為PhotoView的控制項,可以直接像普通ImageView那樣使用。
特性:支持單點/多點觸摸,即時縮放圖片;支持平滑滾動;在滑動父控制項下能夠運行良好;(例如:ViewPager)
不同的環境使用不同的類庫,不同的系統也是同樣的道理。
Ⅳ android studio 怎麼導入第三方類庫
Android Studio導入第三方類庫的方法:
第一、導入*.jar包
新建好了Android項目,添加一個第三方已經打包好的jar文件進你項目,下面就已添加一個odata4j的一個包
但是編譯肯定還是會錯誤的
還必須在項目Httpzoid目錄下添加一個build.gradle的這個文件,內容如下
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "17.0.0"
defaultConfig {
minSdkVersion 14
targetSdkVersion 18
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
}
}
}
dependencies {
compile 'com.android.support:appcompat-v7:+'
compile files('libs/gson-2.2.4.jar')
}
這是後編譯還會有可能報錯
這時候可能需要修改一下Httpzoid目錄下的AndroidManifest.xml文件有可能存在和你項目中文件有沖突或版本跨度太大導致語法的錯誤修改一下,做完以上幾步android studio就可以導入第三方類庫。
Ⅵ 為什麼導入android項目後 ,找不到類庫,所有類下都有紅線。
首先,要Project ->Clean。多試幾次之後如果還不行,就去看看是不是Android自帶的類庫是否導入成功,項目名右鍵屬性->Android,重新選擇一下版本,確定,讓eclipse再導入一次Android自帶類庫。如果還不行,那就是項目中包含第三方的類庫,缺少.jar包,向項目之前開發的人去要,然後再在Build Path中導入即可。
Ⅶ android studio2.0怎麼導入第三方類庫
打開android
studio2.0軟體
選擇
File
-->
new
-->
Import
Mole...
(注意不是
Import
Project
這個是導入項目
又會啟動一個窗口)
這里我們看到界面如下圖所示:
選擇右邊的按鈕
然後我們看到彈出了選擇文件的對話框
我們在電腦指定目錄下找到我們需要導入的第三方類庫
然後點擊OK
如下圖所示:
我們來看看是否已經成功導入了第三方類庫,按快捷鍵
Ctrl+Shift+Alt+S鍵或選擇左上角的Flie-->project
Structure...
彈出一個對話
我們選擇
右上角的」Dependcies「就可以看到下面我們添加的第三方類庫了
Ⅷ 手機上的文件夾「android」是什麼意思
一、安卓手機的Android文件夾裡面的文件夾是用來放程序數據的。
二、android
手機文件夾代表的意思:
1.
/system/app
這里是android手機rom中的系統應用存放地,如果有Root許可權可以將手機rom中自帶的應用刪除掉,這裡面一般包含一個apk文件和odex文件,大家注意文件名一一對應,如何刪除可以參考
如何刪除Android系統自帶軟體
中方法。
2.
/data/data
這里是每個安裝過應用的用戶文件存儲位置,一般為設置文件、資料庫或臨時緩存文件,進入後以每個軟體的package
name包名來命名。
3.
/dev
這里是Linux系統常規文件夾,裡面的文件很多都是設備模擬的文件系統,一般用戶無需理會。
4./system/fonts
這裡面保存著系統的字體,如果你有root許可權,可以往裡添加自己喜歡的字體,比如雅黑。
5.
/system/framework
這里是android系統的框架,裡面保存著系統核心程序或java類庫,十分重要裡面的任何文件幾乎都不要做刪除操作。
6.
/media/audio
這裡面保存著安卓系統默認的鈴聲,alarms是鬧鈴提醒的,notification是簡訊或提示音,ringtones是來電鈴聲,而ui是一些界面音效,比如鍵盤敲擊聲。
7.
/system/lib
裡面保存的是系統底層類庫,裡面很多都是框架層的實現文件,一般以.so後綴結尾類似windows下的dll文件
.
SD卡中
1.
/mnt/sdcard或者/sdcard這是Android手機中SD卡的文件夾路徑,其中/mnt/sdcard/是android
2.2或更高版本所使用的,而/sdcard是android
2.1或早期版本的存儲卡位置。
2.
/mnt/sdcard/dcim或/sdcard/dcim這個DCIM文件夾是干什麼用的,這里android123提示大家,一般數碼相機都有DCIM文件夾,其中進入後Camera為手機攝像頭拍攝的照片或視頻存放位置。同時在DCIM文件夾中還有.thumbnails這個目錄,在Linux中開頭為「.」的文件夾就是開頭為「點」的文件夾是隱藏目錄,這裡面記錄著手機SD卡圖片的縮略圖。
3.
/mnt/sdcard/LOST.DIR或/sdcard/LOST.DIR這個LOST.DIR為SD卡掃描時發現的丟失文件,裡面的文件用處不大,可以不用理會。
Ⅸ android studio怎麼引用類庫
下面分兩種情況介紹一下如何導入第三方類庫。
1、對於jar的類庫,非常簡單,只要在項目根目錄下新建一個libs目錄,然後把jar復制進去,在jar上點擊右鍵,選擇Add as library,即可完成依賴的添加。
2、對於github等網站上下載的源碼類庫,是無法通過這種方式添加的。首先把git clone下來的整個文件夾放入項目根目錄下,這里以我自己的開發包為例,我的開發包名字是ShunixDevKit,裡面有一個lib目錄才是真正的類庫,那麼我們要做的就是手動在settings.gradle裡面添加:
include ':ShunixDevKit:lib'
注意,gradle使用:作為路徑分隔符。這樣Android Studio就知道了我們的類庫放在哪裡,當然這樣還是不夠的,要讓項目能使用類庫,我們還需要添加這個類庫作為項目的依賴,選擇File->Project Structure,然後選中主mole的名稱,點擊dependencies,添加:ShunixDevKit:lib就可以了,gradle的build就能成功。
以上就是添加第三方類庫作為依賴的過程。這里需要注意一下的地方就是,導入的類庫根目錄下的gradlew文件一定要可執行,否則Android Studio會提示錯誤,而且根據錯誤信息很難找出來這個錯誤,我自己因為這個搞了很久,希望對大家有幫助。