• AndroidStudio导出jar包


    AndroidStudio导出jar包 - Android - 次元立方网 - 电脑知识与技术互动交流平台

    不像在Eclipse,可以直接导出jar包。AndroidStudio只可以生成aar包。

    在网上看到许多朋友问怎么可以像Eclipse一样导出jar包,其实我们只要知道它的原理就可以了。

    用jar命令就可以打包你所需要的资源,并指定jar包名。

    在网上下载Volley源代码,导出jar包为例子。

    在一个Android-Library项目工程中,我修改了下他的gradle版本,改为0.12+,

    因为我是最新的gradle2.0。现在它的build.gradle文件如下:

    01.buildscript {
    02.    repositories {
    03.        mavenCentral()
    04.    }
    05.    dependencies {
    06.        classpath 'com.android.tools.build:gradle:0.12.+'
    07.    }
    08.}
    09.apply plugin: 'com.andriod.library'
    10. 
    11.android {
    12.    compileSdkVersion 19
    13.    buildToolsVersion = "20"
    14. 
    15.    sourceSets {
    16.        defaultConfig {
    17.            testPackageName 'com.android.volley.tests'
    18.        }
    19. 
    20.        main {
    21.            assets.srcDirs       = ['assets']
    22.            res.srcDirs          = ['res']
    23.            aidl.srcDirs         = ['src']
    24.            resources.srcDirs    = ['src']
    25.            renderscript.srcDirs = ['src']
    26.            java.srcDirs         = ['src']
    27.            manifest.srcFile 'AndroidManifest.xml'
    28. 
    29.        }
    30. 
    31.        instrumentTest.setRoot('tests')
    32.        instrumentTest.java.srcDirs = ['tests/src']
    33.    }
    34.}

    因为再导入Volley工程的时候,我选择的是推荐的Gradle Wrapper,它的作用是使我们在Unix,windows平台

    下实现兼容。我用的是windows,所以先到达Volley的根目录,Volley我下载到E:下

    cd e:Volley

    接着输入命令:

    gradlew clean build

    就会看到Volley目录下有一个build文件夹,在 build/intermediates/classes/release下,我们可以看到Java文件生成的class文件,我们只要用jar打包这个文件夹就可以了

    输入下面的命令,记得最后一个是'.',前面有空格。

    jar cvf volley.jar -C build/intermediates/classes/release .

    不懂什么意思的话,去

    http://blog.sina.com.cn/s/blog_93d133c601013hdm.html看下。

    如无意外的话你会在Volley文件夹下看到volley.jar。

    但是这并不是我们想要的啊,我想AndroidStudio自动的帮我搞好,生成jar包.

    这就需要我们在build.gradle中设置了

    由gradle官网可以知道,task和project是gradle最主要的东西,我当初的想法就是,

    建立一个task,调用jar命令帮我生成jar包,结果成功了,如下:

    01.buildscript {
    02.    repositories {
    03.        mavenCentral()
    04.    }
    05.    dependencies {
    06.        classpath 'com.android.tools.build:gradle:0.12.+'
    07.    }
    08.}
    09. 
    10.//定义一个函数,target是生成jar包的文件名,classDir是class文件所在的文件夹
    11.def makeJar(String target,String classDir){
    12.    exec{
    13.        executable "jar"   //调用jar
    14.        args "cvf",target
    15.        args "-C", classDir
    16.        args "","."
    17. 
    18. 
    19.    }
    20.}
    21. 
    22.//新建一个task,名为buildLib,依赖build(build是一个自带的task)
    23.task buildLib(dependsOn:['build'])<< {
    24.    makeJar("volley.jar","build/intermediates/classes/release")
    25. 
    26. 
    27.}
    28. 
    29. 
    30.apply plugin: 'android-library'
    31. 
    32. 
    33.android {
    34.    compileSdkVersion 19
    35.    buildToolsVersion = "20"
    36. 
    37. 
    38.    sourceSets {
    39.        defaultConfig {
    40.            testPackageName 'com.android.volley.tests'
    41.        }
    42. 
    43. 
    44.        main {
    45.            assets.srcDirs       = ['assets']
    46.            res.srcDirs          = ['res']
    47.            aidl.srcDirs         = ['src']
    48.            resources.srcDirs    = ['src']
    49.            renderscript.srcDirs = ['src']
    50.            java.srcDirs         = ['src']
    51.            manifest.srcFile 'AndroidManifest.xml'
    52. 
    53. 
    54.        }
    55. 
    56. 
    57.        instrumentTest.setRoot('tests')
    58.        instrumentTest.java.srcDirs = ['tests/src']
    59.    }
    60.}

    现在我们在Volley文件夹下运行buildLib这个task就行了

    gradlew buildLib

    *_*成功了吧..具体更多的细节的话,你们可以去官网找下答案,或者留言问我也可以。。

  • 相关阅读:
    AC自动机
    哈希与哈希表
    Trie字典树
    整除
    P3375 【模板】KMP字符串匹配
    KMP算法
    Luogu-P1004 方格取数
    Luogu-P2758 编辑距离
    Luogu-P1018 乘积最大
    Luogu-P1880 [NOI1995]石子合并
  • 原文地址:https://www.cnblogs.com/seven1979/p/4250264.html
Copyright © 2020-2023  润新知