Android aar包含jar依赖项资源文件夹

时间:2019-01-09 20:17:51

标签: android jar dependencies android-resources

你好

在开发Android AAR模块时,遇到以下问题 我的AAR模块具有一些jar依赖项,其中一些具有带有错误本地化错误消息的资源文件夹。由于某些原因,当我创建模块AAR时,我注意到Android构建过程从jar依赖项中排除了resources文件夹。依赖项文件夹是必不可少的部分,因为否则将找不到错误详细信息。

如果可以解决此问题,我尝试在main / resources // messages.properties下创建其他资源文件夹,但这没有帮助。

任何帮助将不胜感激

这是我的gradle文件

apply plugin: 'com.android.library'
apply plugin: 'jacoco'


allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

buildscript {
    repositories {
        jcenter()
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.dicedmelon.gradle:jacoco-android:0.1.2'
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}


android {
    compileSdkVersion 27
    buildToolsVersion '26.0.3'

    configurations {
        javadocDeps
    }


    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            testCoverageEnabled false
        }
    }

    testOptions {
        unitTests.all {
            jacoco {
                includeNoLocationClasses = true
            }
            testLogging {
                events "passed", "skipped", "failed", "standardOut", "standardError"
                outputs.upToDateWhen {false}
                showStandardStreams = true
            }
        }
        unitTests.returnDefaultValues = true

    }

    lintOptions {
        abortOnError false
    }
    sourceSets {
        androidTest {
           ...
        }
        test {

        }
    }

}





//assembleDebug.dependsOn(copyResDirectoryToClasses)

dependencies {

    releaseCompile fileTree(include: ['*.jar'], dir: 'libs')


    provided 'com.android.support:appcompat-v7:27.1.1'
    provided 'org.jetbrains:annotations:16.0.3'
    provided 'com.google.code.findbugs:annotations:3.0.1'
    provided 'org.codehaus.sonar-plugins:sonar-ant-task:2.2'
    provided 'org.jetbrains:annotations-java5:15.0'
    provided 'com.google.android:annotations:4.1.1.4'
    provided 'com.squareup.okhttp3:okhttp:3.9.1'
    provided 'com.squareup.okhttp3:okhttp-urlconnection:3.9.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'org.mockito:mockito-core:1.9.5'
    androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
    androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
    androidTestCompile files('../sdkSample/lib/qa_utils.jar')
    androidTestCompile 'com.google.android:annotations:4.1.1.4'
    javadocDeps 'com.android.support:appcompat-v7:27.1.1'
    javadocDeps 'com.squareup.okhttp3:okhttp:3.9.1'
    javadocDeps 'com.squareup.okhttp:okhttp-urlconnection:3.9.1'
    javadocDeps 'com.google.code.findbugs:annotations:3.0.1'
    javadocDeps group: 'org.mozilla', name: 'rhino', version: '1.7.7.1'
    javadocDeps group: 'org.jetbrains', name: 'annotations', version: '16.0.3'
    testCompile files('../sdkSample/lib/qa_utils.jar')
    testCompile 'junit:junit:4.12'
    testCompile 'org.json:json:20171018'
    testCompile 'com.google.android:annotations:4.1.1.4'
    testCompile 'org.testng:testng:6.13.1'
    testCompile 'com.squareup.okhttp3:okhttp:3.9.1'
    testCompile 'com.squareup.okhttp3:okhttp-urlconnection:3.9.1'
    testCompile 'org.robolectric:robolectric:3.8'
    androidTestCompile 'com.squareup.okhttp3:okhttp:3.9.1'
    androidTestCompile 'com.squareup.okhttp3:okhttp-urlconnection:3.9.1'
    testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1'
}


gradle.taskGraph.whenReady {
    gradle.taskGraph.allTasks.each {
        if(it.project == 'sdkSample') {
            it.onlyIf { false }
        }
    }
}



//ignore all test failures - is done temporary, the final solution is test categorization
project.gradle.taskGraph.whenReady {
    -> project.tasks.findAll { it.name =~ /connected.+AndroidTest/ ||
            it.name == "testDebugUnitTest" ||
            it.name =="testReleaseUnitTest" }.each {
        it.ignoreFailures = true
    }
}

1 个答案:

答案 0 :(得分:0)

您需要使用api而不是provided。您可以从here.

中找到更多信息。

据我所知aar不能具有传递依赖。您可以尝试导出fat aar,也可以尝试

implementation 'your.package:your_artifact:your_version' {transitive = true}

PS:请勿使用类型@aar

也称为flatDir,因为flatDir依赖项无法解析可传递项)

implementation 'your.package:your_artifact:your_version@aar' {transitive = true}

另一方面,您需要将项目转换为Maven标准。因此,您需要一个pom.xml文件,该文件将在依赖项标签下指向传递性依赖项。

您遇到的jar文件也不能具有资源文件。如果您不需要资源文件,只需执行createFullJarRelease任务即可导出jar。

如果必须使用.aar,则可以添加库在使用者中使用的其他依赖项。