使用Android studio创建的AIDL编译时找不到自定义类的解决办法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Android studio创建的AIDL编译时找不到自定义类的解决办法相关的知识,希望对你有一定的参考价值。

  使用AS创建ADIL文件时AS会在main文件夹下给我们生成一个aidl文件夹和一个相同包名的包,通常我们会把所有和ADIL相关的类或文件放在这个包下,但是如果存在自定义的类时,程序编译时无法通过,提示找不到自定义的包。解决办法如下,在启动Module的build.gradle中加入如下代码:

sourceSets {
        main {
            manifest.srcFile ‘src/main/androidManifest.xml‘
            java.srcDirs = [‘src/main/java‘, ‘src/main/aidl‘]
            resources.srcDirs = [‘src/main/java‘, ‘src/main/aidl‘]
            aidl.srcDirs = [‘src/main/aidl‘]
            res.srcDirs = [‘src/main/res‘]
            assets.srcDirs = [‘src/main/assets‘]
        }
    }

  加入之后完整的build.gradle文件内容如下:

apply plugin: ‘com.android.application‘

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "aidl.aidl.demo"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    sourceSets {
        main {
            manifest.srcFile ‘src/main/AndroidManifest.xml‘
            java.srcDirs = [‘src/main/java‘, ‘src/main/aidl‘]
            resources.srcDirs = [‘src/main/java‘, ‘src/main/aidl‘]
            aidl.srcDirs = [‘src/main/aidl‘]
            res.srcDirs = [‘src/main/res‘]
            assets.srcDirs = [‘src/main/assets‘]
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
        }
    }
}

dependencies {
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    testCompile ‘junit:junit:4.12‘
    compile ‘com.android.support:appcompat-v7:23.1.1‘
}

  sourceSets中主要是把把src/main/aidl文件也作为java.srcDirs, resources.srcDirs,这样当编译程序时,AIDL中自定义类就能找到了。

以上是关于使用Android studio创建的AIDL编译时找不到自定义类的解决办法的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio中如何创建AIDL

Android Studio创建AIDL文件并实现进程间通讯

Android Studio AIDL创建案例(解决自动生成java问题)

Android 9使用Android Studio调试系统应用之MTK MLocalMM2移植:新增AIDL部分

Android 9使用Android Studio调试系统应用之MTK MLocalMM2移植:新增AIDL部分

Android Studio开发环境建立aidl文件,怎么生成相应的java文件