【Android端】代碼打包成jar包/aar形式

來源:互聯網
上載者:User

標籤:.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形式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.