У меня есть проект Android, который я хочу преобразовать в библиотеку .aar. Внутри этого проекта я использую некоторые библиотеки Google, а также свою собственную библиотеку SDK в качестве файла aar. Ниже приведен build.gradle.
Я хочу, чтобы библиотека Google была включена в окончательный вариант aar, но исключила мою собственную библиотеку SDK, поэтому я выбираю реализацию и compileOnly для них соответственно. При компиляции код компилируется успешно, но когда я создаю файл .aar и включаю его в другой проект, по каким-то причинам в него не включается библиотека Google, и выдается эта ошибка:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/....
Поэтому мне придется вручную добавить его снова в новый проект с помощью реализации .
Есть ли что-нибудь, что мне следует сделать? сделать, чтобы создать правильную библиотеку .aar, которая включает библиотеку Google, но исключает мою библиотеку SDK? Я намерен создать для этого проекта отдельный файл .aar и включить его в качестве плагина вместе с моим SDK.
plugins {
//id 'com.android.application'
id 'com.android.library'
}
android {
namespace 'com.example.sample'
compileSdk 34
defaultConfig {
//applicationId "com.example.sample" //remove for library
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
// Google library
compileOnly 'com.google.somelibrary:1.0.0' //should be included in aar
compileOnly files('libs/mysdk.aar') //should NOT be included in aar
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... oid-studio