Android Studio Gradle构建“apply plugin:'com.android.library'”:aar missing files

时间:2015-10-18 07:58:37

标签: android android-studio jar android-gradle build.gradle

我正在使用Android Studio并构建Android库项目,因此我分发了aar文件。更具体地说,我只是在内部分配jar(是的 - 客户仍在使用Eclipse,因此我手动将jar与manifest,res等众所周知的程序结合起来。)

这是我的Gradle构建脚本(常规默认...):

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "23.0.0"

    lintOptions {
        abortOnError false
    }

    defaultConfig {
        // Ain't applicationIdNot
        minSdkVersion 11
        targetSdkVersion 22
        versionCode 1
        versionName "1"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile '...'
}

问题在于:在常规java类的一个java包下,我有ttf个字体文件。这是由于历史原因,现在项目的复杂性不允许进行更改并将它们移动到实际需要的位置。

嗯 - jar丢失了这些文件。如何实现构建过程,jar中的arr将包含这些文件 - 因为毕竟 - 它是常规归档,并且那些文件已经压缩到jar的文件树中。

谢谢,

1 个答案:

答案 0 :(得分:1)

只需指定在sourceSets关闭

中包含文件即可
// if you want to include the files in your aar
android {
    ...
    sourceSets {
        main {
            resources.includes = [ '**/mySweetFont.ttf' ]
        }        
    }
}

// to include in your jar
sourceSets {
    main {
        resources.includes = [ '**/mySweetFont.ttf' ]
    }        
}

这会将文件放在生成的工件的根目录下。对于jar,您可能需要在sourceSets闭包内两次指定android闭包,并在android闭合后再次指定