Android Studio:如何从其他Android Studio项目导入AIDL文件?

时间:2017-03-24 13:33:40

标签: android android-studio aidl

一个Android Studio项目包含无活动服务,可通过IMyAidlInterface(属于com.example.tutorialspoint7.noactivity包)进行通信。

另一个Android Studio项目包含一个仅限活动的应用程序,仅用于测试上述服务(假设使用不同的包,例如com.example.tutorialspoint7.aidlactivity)

没有任何特殊配置,aidlactivity项目不知道noactivity项目,因此,援助文件中对IMyAidlInterface的任何引用都会“无法解析符号IMyAidlInterface”

我搜索了一种让aidlactivity项目了解该AIDL文件的方法,但我发现的所有“解决方案”实际上都是重复文件并在此示例中添加它的解决方法:https://stackoverflow.com/a/16906355/5556250

所以,我通过在其中添加以下内容来手动调整应用程序的build.gradle:

android {
    compileSdkVersion 24
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.example.tutorialspoint7.aidlactivity"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main.java.srcDirs += '../../NoActivity/app/src/main/aidl/com/example/tutorialspoint7/noactivity'
    }
}

然后我同步它,多么美妙,它现在是援助实践项目的一部分:

enter image description here

但是...... AIDLActivity仍然会“无法解析符号IMyAidlInterface”

现在我需要做些什么来让它识别文件?

1 个答案:

答案 0 :(得分:1)

问题“解决了”。方法如下:

  1. 取消手动添加到应用的build.gradle中:
  2. sourceSets {         main.java.srcDirs + ='../../NoActivity/app/src/main/aidl/com/example/tutorialspoint7/noactivity'     }

    1. 手动创建了文件夹..\AIDLActivity\app\src\main\aidl\com\example\tutorialspoint7\noactivity,然后通过复制到'NoActivity'中的原始IMyAidlInterface.aidl文件服务项目。

    2. 在AIDLActivity.java 中添加import com.example.tutorialspoint7.noactivity;不起作用!!! 所以...我通过简单地引用IMyAidlInterface使用其完全合格的名称:

    3. enter image description here

      1. Gradle sync the projects

      2. AIDLActivity项目现在可以毫无错误地构建。 : - )

      3. 积分将于2013年6月18日由dominik2发布... @ gmail.com:https://code.google.com/p/android/issues/detail?id=56755#c1

        更新:我设法通过简单地导入特定的界面而不是包(duh!)来避免明确的完全限定名称丑陋:

        enter image description here

        一切都很好,但是......为什么我必须在原始服务中更改时不断复制接口文件,而不仅仅是引用它?我希望有一种方法可以在Android Studio(版本2.2.3)中引用(而不是复制)AIDL文件。