亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android studio將Module打包成Jar的方法

2019-10-21 21:37:01
字體:
來源:轉載
供稿:網友

整理記錄 AndroidStudio 把一個 module 項目打包成 jar 包。

一、默認自動生成的 jar 包

眾所周知 android studio 會在library所依賴的 app運行 或 build 之后自動生成 jar 包,路徑為 Module根目錄/build/intermediates/bundles/debug or release/classes.jar,這樣生成的jar是可以用的,但不是我們可以控制的,所以我們需要通過其他方式來解決這個問題。

注意:

若發現 Android Studio 項目 bundle 文件夾下沒有 release目錄,可能是沒有將 module 添加到主 module 依賴中。

方式1:主module右鍵 --> 倒數第二個Open Module Setting--> 上面最后一個選項Dependencies-->右邊綠色加號-->Module dependency......然后確定

方式2:主Module的gradle的dependencies(平時添加第三方庫的地方)中加上 compile project(':lib-zxing')

二、自定義生成 jar 包

首先,需要將待打包 module 項目中的 build.gradld 文件進行修改,如下圖:

Android,studio,Module,Jar

其次,在 build.gradle 文件中加入如下代碼:

方式一:

def _BASENAME = "TestJar";def _VERSION = "_V1.0";def _DestinationPath = "build"; //生成jar包的位置def zipFile = file('build/intermediates/bundles/default/classes.jar'); //待打包文件位置task deleteBuild(type:Delete){  delete _DestinationPath + _BASENAME + _VERSION + ".jar"}task makeJar(type:Jar){  from zipTree(zipFile)  from fileTree(dir:'src/main',includes:['assets/**']) //將assets目錄打入jar包   baseName = _BASENAME + _VERSION  destinationDir = file(_DestinationPath)}makeJar.dependsOn(deleteBuild, build)

方式二:打包的 jar 只有源代碼的.class 文件,不包含資源文件

task makeJar(type: Copy) {  delete 'build/TestJar_V1.0.jar' //刪除之前的舊jar包  from('build/intermediates/bundles/default/') //從這個目錄下取出默認jar包  into('build/') //將jar包輸出到指定目錄下  include('classes.jar')  rename('classes.jar', 'TestJar_V1.0.jar') //自定義jar包的名字}makeJar.dependsOn(build)

方式三:

task clearJar(type: Delete) {  delete 'build/TestJar_V1.0.jar' //jar包的名字,隨便命名 }task makeJar(type:org.gradle.api.tasks.bundling.Jar) {  //指定生成的jar名   baseName 'TestJar_V1.0'  //從哪里打包class文件   from('build/intermediates/bundles/default/')  //打包到jar后的目錄結構   into('build/')  //去掉不需要打包的目錄和文件   exclude('test/', 'BuildConfig.class', 'R.class')  //去掉R開頭的文件   exclude{it.name.startsWith('R');}}makeJar.dependsOn(clearJar, build)

注意:

以上配置信息要與 android {…….} 配置的腳本成平級關系。

其中 _BASENAME = "TestJar"; _VERSION = "_V1.0"; 是定義生成 jar 包的名字為TestJar_V1.0.jar。

配置好以后就可以編譯jar包了,有兩種方式:

方式 A :點擊 Android Studio 右側(一般在這個位置)的 Gradle 面板,在項目或者該類庫的目錄中找到 Tasks -> other -> makeJar 命令,雙擊這個makeJar之后等一會就會編譯好jar包?! ?/p>

Android,studio,Module,Jar

打包成功后:在配置的指定目錄下生成jar包

Android,studio,Module,Jar

方式 B :通過 cmd 命令行,在項目根目錄下,執行 gradlew makeJar 命令,看到編譯完成的信息以后就OK了,也能生成一樣的jar包,和直接使用①中的方式是等價的?! ?/p>

注意:使用此方式前要配置好 gradle 的“ 環境變量 ”,否則直接在項目根目錄下找不到這個命令。使用 cmd 比較費勁,不推薦。  

方式 C :在 Android Studio 終端窗口中輸入 gradlew makeJar 命令。  

Android,studio,Module,Jar

打包成功如下圖:

Android,studio,Module,Jar

打包成功后:在配置的指定目錄下生成jar包

Android,studio,Module,Jar

注意:

問題1:  

Android,studio,Module,Jar    

對于以上配置 form 默認 jar 包部分,在用目錄是 from('build/intermediates/bundles/release/') ,注意粗體部分,最初我也是按照這個目錄寫的,確實沒問題。但后來,也就是Android Studio 更新到2.3以后,發現這個目錄沒有了,取而代之的是 default 和 debug 目錄,debug目錄之前也是有的,沒有變化,只是原來的release目錄被現在的default目錄代替了。這導致我后來生成jar包的時候始終沒有找到jar包,報上圖所示錯誤。

原因就是沒有了 release 目錄,找不到默認的 classes.jar 文件,所以也就沒有生成自定義名字的jar包,改為 default 或者 debug 目錄以后就能正常生成jar包了,要注意這點變化。

問題2

Execution failed for task ':mylibrary:lint'.
> Lint found errors in the project; aborting build.

解決在 build.gradle 文件中,加入下面的代碼塊(注意代碼塊所在的位置),重新執行 gradlew makeJar 命令。

android {  lintOptions {    abortOnError false  }  ...}

最后注意:

將被嵌入的應用打包成 jar 包,但是這樣的方式有局限性,無法將被嵌入的應用所使用的資源性文件一起打包。下面介紹 aar 打包方式。

三、直接使用 aar 包 

將被嵌入的應用打包成 aar 包,這也是 Android Studio 的一種新特性,可以將應用所使用的資源性文件一起打包。編譯即可打包生成 aar 包,而且也不用擔心漏掉資源問題。

如果Project 中 Module 是一個應用,則在 Module 的 build.gradle 文件中定義屬性為:apply plugin: 'com.android.application';而如果 Mudule 是一個被引用的依賴 lib 庫的話,則在 Module 的 build.gradle 文件中定義屬性為:apply plugin: 'com.android.library;所以當我們將應用 Module 打包出 aar 文件的時候,需要修改類型屬性。正常情況下,直接重新編譯 Module,生成的 aar 包在 Module 根目錄的/build/outputs/aar/,如下圖:

  Android,studio,Module,Jar

下面介紹將 aar 包添加到其他 Android 工程:

首先,將 aar 包復制到 libs 目錄下  

其次,配置build.gradle文件:

A 在 android 中加入,如下:

repositories {   flatDir {     dirs 'libs'   } } 

B 在 dependencies中加入 compile(name:lib-zxing-release', ext:'aar')

完整 build.gradle 文件如下:

apply plugin: 'com.android.application'  android {   ...  repositories {     flatDir {       dirs 'libs'     }   } }  dependencies {   ...  compile(name:'lib-zxing-release', ext:'aar') }

最后,重新編譯Rebuild的以下工程。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
狠狠躁18三区二区一区| 欧美疯狂做受xxxx高潮| 欧美日韩在线视频一区| 国产精品第3页| 国产成人精品免费久久久久| 91麻豆桃色免费看| 亚洲福利在线看| 国产日韩精品在线播放| 亚洲jizzjizz日本少妇| 亚洲欧美日韩视频一区| 日韩中文在线中文网在线观看| 亚洲香蕉成人av网站在线观看| 久久亚洲成人精品| 国产精品扒开腿做爽爽爽的视频| 日韩风俗一区 二区| 中文字幕久久久av一区| 国产丝袜视频一区| 日韩在线播放视频| 久热99视频在线观看| 91久久久久久| 国语自产精品视频在线看抢先版图片| 一区二区三区 在线观看视| 欧美成人精品在线视频| 精品视频www| 欧美激情女人20p| 日韩精品视频在线免费观看| 欧美日韩第一页| 中文字幕自拍vr一区二区三区| 国产日韩亚洲欧美| 国产福利视频一区二区| 日韩在线观看免费av| 国产精品久久久久9999| 成人午夜激情免费视频| 欧美一级视频在线观看| 中文字幕精品av| 日韩第一页在线| 992tv成人免费视频| 欧美xxxx做受欧美| 国语自产精品视频在线看一大j8| 日韩中文字幕视频在线观看| 亚洲国产97在线精品一区| 欧美日韩在线视频一区| 欧美激情视频一区二区| 国外色69视频在线观看| 亚洲国产精品va在线| 欧美日韩一区二区在线| 91精品国产91久久久久久| 亚洲色图50p| 亚洲黄色免费三级| 亚洲日本中文字幕| 国产精品白丝av嫩草影院| 一区二区在线视频播放| 欧美最顶级的aⅴ艳星| 在线日韩第一页| 精品国产依人香蕉在线精品| 欧美日韩免费网站| 欧美激情视频网站| 成人精品一区二区三区| 日韩在线观看网址| 欧美国产日韩视频| www.久久草.com| 热门国产精品亚洲第一区在线| 国产精品视频免费观看www| 久久久精品影院| 亚洲精品永久免费精品| 欧美成人h版在线观看| 亚洲精品久久在线| 国产精品久久久久久久久久三级| 欧美日韩国产色视频| 欧美激情奇米色| 久久69精品久久久久久国产越南| 中文字幕一区二区三区电影| 久久亚洲欧美日韩精品专区| 亚洲二区中文字幕| 国产精自产拍久久久久久| 欧美乱人伦中文字幕在线| 亚洲国内精品视频| 日本欧美在线视频| 91精品国产91| 亚洲福利视频网站| 亚洲3p在线观看| 自拍偷拍亚洲欧美| 亚洲福利在线看| 亚洲色图五月天| 日韩亚洲精品视频| 91色琪琪电影亚洲精品久久| 2019中文字幕在线观看| 97久久超碰福利国产精品…| 91久久综合亚洲鲁鲁五月天| 欧美精品久久久久久久| 亚洲一区二区福利| 一区二区三区无码高清视频| 欧美在线视频观看| 亚洲天堂视频在线观看| 欧美成人国产va精品日本一级| 久久久精品亚洲| 久久人人爽人人爽人人片av高请| 亚洲一区二区三区乱码aⅴ| 成人免费观看49www在线观看| 久久久天堂国产精品女人| 国产综合视频在线观看| 欧美中文在线免费| 欧美在线观看网站| 欧美最猛性xxxxx(亚洲精品)| 午夜精品久久久久久久白皮肤| 久久久免费高清电视剧观看| 亚洲第一男人天堂| 国产福利精品av综合导导航| 色综合影院在线| 97精品伊人久久久大香线蕉| 亚洲精品国产精品乱码不99按摩| 97精品视频在线播放| 97精品国产aⅴ7777| 欧美性xxxx18| 2025国产精品视频| 国产精品自拍偷拍| 欧美自拍大量在线观看| 伊人久久大香线蕉av一区二区| 久久香蕉精品香蕉| 国产精品爽爽爽爽爽爽在线观看| 日韩中文字在线| 欧美日韩加勒比精品一区| 欧美日韩国产精品一区二区三区四区| 97久久超碰福利国产精品…| 国产精品欧美一区二区三区奶水| 98精品国产自产在线观看| 欧美一区在线直播| 欧美日韩久久久久| 91手机视频在线观看| 欧美精品激情在线观看| 成人激情电影一区二区| 精品女厕一区二区三区| 国产精品日韩欧美大师| 日韩中文字幕在线看| 日韩电影网在线| 国产精品私拍pans大尺度在线| 色与欲影视天天看综合网| 久久成人在线视频| 久久福利视频导航| 日韩最新中文字幕电影免费看| 国产精品高潮呻吟久久av野狼| 最近2019中文字幕一页二页| 久久伊人免费视频| 精品亚洲一区二区三区在线观看| 欧美情侣性视频| 亚洲美女动态图120秒| 92看片淫黄大片欧美看国产片| 亚洲精品日韩久久久| 国产精品一区二区久久久| 欧美丰满少妇xxxxx做受| 精品国产一区二区三区在线观看| 亚洲精品美女在线观看| 国产亚洲精品91在线| 成人激情av在线| 色偷偷偷亚洲综合网另类| 久久综合伊人77777尤物| 色妞久久福利网| 日韩福利在线播放| 91亚洲精品视频| 欧美日本在线视频中文字字幕| 精品偷拍一区二区三区在线看| 日本精品免费一区二区三区| 日本精品视频在线观看| 日韩国产欧美精品在线|