在Android Studio中,*.aidl文件出现在解压后的apk构建文件夹中是否正常

在Android Studio中,*.aidl文件出现在解压后的apk构建文件夹中是否正常,android,android-studio,android-gradle-plugin,build.gradle,Android,Android Studio,Android Gradle Plugin,Build.gradle,我在源代码中使用了aidl文件,但与代码库下的apk版本相比,Andorid Studio中的版本有一个包含.aidl文件的额外文件夹。这正常吗?这些*.aidl文件不应该包装在classes.dex?(或resources.arsc)中吗 我也尝试过使用 packagingOptions { exclude './src/com/mytest/test/*.aidl' } 但它不起作用! 以下是我的build.gradle: buildscript { reposito

我在源代码中使用了aidl文件,但与代码库下的apk版本相比,Andorid Studio中的版本有一个包含.aidl文件的额外文件夹。这正常吗?这些*.aidl文件不应该包装在classes.dex?(或resources.arsc)中吗 我也尝试过使用

packagingOptions { 
    exclude './src/com/mytest/test/*.aidl' 
} 
但它不起作用! 以下是我的build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.mytest.test"
        minSdkVersion 18
        targetSdkVersion 23
        versionCode 1
        versionName "1"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard-apk.config'
        }
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        //androidTest.setRoot('../tests')
    }

    packagingOptions {
        exclude 'META-INF/DEPENDENCIES.txt'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/notice.txt'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/dependencies.txt'
        exclude 'META-INF/LGPL2.1'

        exclude './src/com/mytest/test/*.aidl'
    }
}

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

虽然似乎过了很长时间,我还是想发帖帮你。 我遇到了同样的问题,我解决了! 设法除去 resources.srcDirs=['src'] 在你身上,格雷德尔
这表示java资源不是android资源,res已经表示android资源

为什么要排除?因为与代码库下的apk构建相比,它不会让特定文件夹包含*.aidl文件。我想这些aidl文件应该包装在classes.dex(?或resources.arsc?)中。由于所有源代码和文件夹结构都是相同的,Android studio中的apk构建应该与代码库中的一个构建具有相同的行为(不包含特定的aidl文件夹)……我不理解您的最终目标。您可以包括它们:
aidl.srcDirs=['src']
。这不起作用:
exclude./src/com/mytest/test/*.aidl'
。我添加了aidl.srcDirs=['src']让apk编译通过,但我不希望解压后的apk中会有包含aidl的特定文件夹。因为代码库下的apk构建没有。我为代码库下的apk构建和androidstudio内的apk构建之间的差异而烦恼。我希望他们有相同的apk大小,解压文件夹结构,。。。。。。我的目标是让他们有相同的apk大小,解压文件夹结构,…1。除非确实需要2,否则不要覆盖默认的渐变源集。我很确定android gradle插件工作正常。3.你为什么要解压apk?