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私服上之后具體如何調用,見下方:

