Android Studio : How to import AIDL file from a different Android Studio project?

标签 android android-studio aidl

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

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

如果没有任何特殊配置,aidlactivity 项目不知道 noactivity 项目,因此,aidlactivity 中对 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'
    }
}

然后我同步了它,太棒了,它现在是 aidlactivity 项目的一部分:

enter image description here

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

我现在需要做什么才能让它识别该文件?

最佳答案

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

  1. 撤消手动添加到应用的 build.gradle 中:

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

  • 手动创建了文件夹..\AIDLActivity\app\src\main\aidl\com\example\tutorialspoint7\noactivity,然后将“NoActivity”服务项目中的原始 IMyAidlInterface.aidl 文件复制到

  • 在 AIDLActivity.java 中添加 import com.example.tutorialspoint7.noactivity; 不起作用!!! 所以...我解决了这个问题只需使用其完全限定名称引用IMyAidlInterface:

  • enter image description here

  • Gradle 同步项目

  • AIDLActivity 项目现在构建时没有任何错误。 :-)

  • 感谢 [email protected] 于 2013 年 6 月 18 日发表的这篇文章: https://code.google.com/p/android/issues/detail?id=56755#c1


    更新:我通过简单地导入特定接口(interface)而不是包来设法避免显式完全限定名称的丑陋(废话!):

    enter image description here

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

    关于Android Studio : How to import AIDL file from a different Android Studio project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43000893/

    相关文章:

    android - 动画不流畅

    java - 在两个 Android 应用程序之间共享数据

    Android:如何避免 Activity 被系统杀死,ActivityManager:处理我的包名称(pid 935)已死亡

    android - AIDL 文件没有生成 Java 文件

    android: 在 aidl 文件 com.android.internal.telephony.gsm.NetworkInfo 中找不到类错误的导入

    android - Android的默认度量单位?

    java - 日历提供者 : querying Calendars by multiple IDs will return an empty cursor

    android - 为什么我们没有一个文件来打开 Android Studio 项目?

    java - 无法解析符号 "FragmentActivity"

    android-studio - 如何使用 Flutter 在 android studio 中为代码折叠做区域 block