標籤:.class art 資料 ase one check 多個 文章 size
Android端代碼打包成jar包和aar形式:
首先,jar包的形式和aar形式有什麼區別?
1、打包之後產生的檔案地址:
*.jar:庫/build/intermediates/bundles/debug(release)/classes.jar
*.aar:庫/build/outputs/aar/libraryname.aar
區別:jar包只包含了classes檔案,不包含資源檔;aar不僅包含了classes檔案,還包含資源檔
並且,aar的這個發行就緒到maven庫,然後使用者直接通過更改版本號碼就可以擷取到最新的aar檔案
有一篇文章講的還不錯,但是對於更詳細的內容可能有點少,導致踩坑了,具體連結見:http://www.voidcn.com/blog/q610098308/article/p-6059440.html
然後,jar包打包方式及最終打出來之後的具體使用
首先需要進入到的目錄是:
然後這裡其實就是:首先進入到主目錄-build-intermediates-classes-debug目錄中,直接調用jar cvf 產生的jar包名稱 要添加的.class檔案
具體如上面所示:jar cvf classes.jar com/ganji/android/LeakUploadService* com/ganji/android/UploadThread.class,其中classes.jar就代表 要產生的jar包名稱;然後後面跟的com/ganji/android/LeakUploadService*代表要添加的class檔案(可能存在LeakUploadService.class,如果有內在函數的話,可能還會存在LeakUploadService$1.class這樣的形式,可以通過*來作為萬用字元進行匹配),如果有多個檔案可以通過加空格進行多個檔案的區分,就類似上面的格式,jar cvf classes.jar A.class B.class C.class
然後之後會在debug這個目錄下產生你需要的jar包,如果需要配置版本號碼的話,後面查詢相關資料再做補充
最後,aar包打包方式及最終打出來之後的具體使用:
aar形式的打包,首先在Android工程裡面通過File-New-New Module
之後選擇:
之後可以把module的這個名字改成自己想要的即可,比如test:
之後你看到的這個android library的這個test的module的結構是這樣的:
然後自己的需要,在java-main下面將需要最終構建成aar包的檔案放進去之後,然後這裡記得,要把AndroidManifest.xml中的檔案,將android:label="@string/app_name"這一項內容去掉,否則其他APP在調用這個的時候,就會遇到AndroidManifest.xml的檔案會存在衝突(和其他的app自己的AndroidManifest.xml檔案);同時如果需要用到
之後build-Rebuild Project,編譯整個工程就會自動產生aar包,具體路徑就在:建立的Module-build-outputs-aar的這個目錄下,如下方的圖所示:
——————————————————————————————————————————》》》
aar打包結束之後,就是其他的app使用這個aar檔案,首先,將這個aar的檔案拷貝到libs目錄下,然後在工程主目錄的build.gradle裡面配置dependencies檔案,配置例如:
compile(name:‘test-1.0‘, ext:‘aar‘),這個test-1.0就是匯入到libs下面的這個名字,上面產生的aar的名字其實是可以修改的,完整的build.gradle檔案如下:
apply plugin: ‘com.android.application‘repositories { flatDir { dirs ‘libs‘} // 引入AAR}dependencies { compile fileTree(include: ‘*.jar‘, dir: ‘libs‘) compile(name:‘leakupload-1.0‘, ext:‘aar‘)}android { compileSdkVersion ANDROID_BUILD_SDK_VERSION as int buildToolsVersion ‘21.1.2‘ compileOptions { encoding "UTF-8" } defaultConfig { // Enabling multidex support. applicationId "com.ganji.mytest" } lintOptions { checkReleaseBuilds false abortOnError false } dexOptions { jumboMode = true javaMaxHeapSize "2g" //preDexLibraries = false } buildTypes { debug { signingConfig signingConfigs.release } release { signingConfig signingConfigs.release // 簽名 shrinkResources true // 去除未使用資源 minifyEnabled true // 混淆、去除未使用類 proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard.cfg‘ } }}
然後:會提示sync now,或者直接點擊:這個按鈕,點擊同步之後,就會將這個aar的內容同步出來,在java-main中的代碼裡有import這個aar的,import正確的話代碼的錯誤提示就會消失,同時在External libraries中也會出現這個aar檔案的結構。
出現的aar結構見下方:然後就說明添加成功了,具體調試和使用就是後話了
【Android端】代碼打包成jar包/aar形式