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


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結構見下方:然后就說明添加成功了,具體調試和使用就是后話了

 

——————》》將aar發布到maven上,比如發布到maven私服上之后具體如何調用,見下方:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM