Итак, у меня есть следующая структура проекта:
.
├── Central
│ ├── app
│ │ ├── build.gradle
│ │ └── src
│ ├── build.gradle
│ ├── gradle.properties
│ └── settings.gradle
└── Client
├── app
│ ├── build.gradle
│ └── src
├── build.gradle
├── gradle.properties
└── settings.gradle
В приложении Central я определяю службу и вместе с ней интерфейс AIDL. В AIDL одна из функций возвращает пользовательский объект (который расширяет Parcelable). В клиентском приложении я поместил точно такой же файл AIDL (в том же пакете в каталоге src/aidl
). Я пытаюсь импортировать пользовательский класс, объявив зависимость от gradle приложению Central.
Вот настройки клиента. Gralde
rootProject.name='Client'
include ':app'
include ":Central"
project(":Central").projectDir = file('../Central/app')
Приложение клиента / build.gralde:
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.Patel.Cli3n5"
minSdkVersion 28
targetSdkVersion 29
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation project(path: ':Central', configuration: 'default')
}
и файл aidl (присутствует в обоих приложениях):
package com.Patel.Central;
import android.graphics.Bitmap;
parcelable Info;
interface MusicCentral {
List<Info> getAllSongsInfo();
Bitmap getSongImage(int songNum);
}
И обратите внимание, что класс Info определен в пакете com.Patel.Central
.
Когда я пытаюсь создать клиентское приложение, я получаю следующую ошибку:
error: cannot find symbol
@Override public java.util.List<com.Patel.Central.Info> getAllSongsInfo() throws android.os.RemoteException
Таким образом, проблема в том, что существует пользовательский класс, и мне нужно импортировать из приложения это находится в другом каталоге.