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

标签 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。

    最佳答案

    好吧,仅对于那些会有类似问题的人,我在这里添加了一个快速的“变通方法”,可以帮助我解决问题。

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

    我最终要做的是:

  • 从X.jar提取所有文件。这样做之后,我有了以下文件层次结构:
    com \ X \ sdk。
  • 将“com”文件夹放入“libs”文件夹中。

  • 注意:请确保您有这样的资源减速:
    sourceSets {
        main.java.srcDir 'src/main/java'
        main.resources.srcDir 'libs'
    }
    

    就是这样。我剩下要做的就是调用“gradlew makeJar”,现在我的Y.jar也包括X.jar类。

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

    关于android - 使用android-plugin构建一个包含其依赖项类的jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29064244/

    相关文章:

    android - 在 Phonegap 应用程序上使用相机,只有 HTML 输入,没有相机 API

    java - 如何将xml文件传递给Jmeter中的新对象

    java - 如何在android中获取当前时间戳?

    java - EditText.getText.toString() 返回空字符串

    php - org.apache.http.conn.HttpHostConnectException : Connection to http://127. 0.0.1 拒绝

    c# - Xamarin EditText InputType 密码

    android - 开始太多 Activity ?

    java - Runtime.exec 以非管理员身份运行

    java - 无法更新 .jar 内的 manifest.mf : line too long error

    java - Android:Searchview 即使单击具有不同 id 的其他菜单项也会打开