使用android-plugin构建一个包含其依赖类的jar文件

时间:2015-03-15 18:04:39

标签: android jar android-studio sdk gradle

我正在编写一个Android SDK。我正在使用gradle和android studio。

图例:

  • X.jar - 第三方jar文件。
  • Y.jar - 我的最终android SDK jar文件,依赖于X.jar。
  • someApp - 一个使用/依赖于Y.jar的Android应用程序。

问题:

someApp无法识别X.jar中的类

我已经搜索了(差不多一天)使用X.jar类生成Y.jar的方法(而不是仅包含X.jar文件)但不幸的是我失败了。我找到的许多解决方案都不够清楚,或者不适合我的情况。

我非常感谢你的帮助和指导。

以下是我的相关代码段(基于此answer):

我的SDK项目的build.gradle代码 - 创建Y.jar:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        minSdkVersion 18
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/../libs'
            }
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/X.jar')
}

task clearJar(type: Delete) {
    delete 'build/outputs/Y.jar'
}

task makeJar(type: Copy) {

    from('build/intermediates/bundles/release/')
    into('build/outputs/')
    include('classes.jar')
    rename ('classes.jar', 'Y.jar')
}

makeJar.dependsOn(clearJar, build)

运行'gradlew makeJar'会在build / outputs目录中生成Y.jar。

1 个答案:

答案 0 :(得分:0)

嗯,对于那些有类似问题的人,我在这里添加一个快速的“解决方法”,帮助我解决问题。

**这可能不是“官方”方式,但它对我有用。

我最终做的是:

  1. 从X.jar中提取所有文件。这样做之后,我有了这个文件层次结构: COM \ X \ SDK。
  2. 将'com'文件夹放在'libs'文件夹中。
  3. 注意:确保你有资源减速:

    sourceSets {
        main.java.srcDir 'src/main/java'
        main.resources.srcDir 'libs'
    }
    

    就是这样。我剩下要做的就是打电话'gradlew makeJar',现在我的Y.jar也包括X.jar类。

    如果有人有更好的解决方案,请分享:)