Я создаю библиотеку Android, имеющую зависимости на основе следующих компонентов.
- Код моей библиотеки
- файл макета и ресурсов
- Gradle зависимости от третьих лиц.
Сначала я думаю о создании файла.jar для моей библиотеки, но потом я понял, что файлы laulyoit и resources не скомпилированы с jar. Тогда я решил создать файл AAR. Пожалуйста, предложите, если это правильный ход или есть другая альтернатива?
Теперь главная проблема, я застрял с зависимостями gradle. Мы создаем платную библиотеку, в которой используются сторонние организации, например Google, доступную только через Gradle. Теперь, когда я создаю файл AAR, не было бы файла Manifest.xml и Gradle, как я могу интегрировать сторонние приложения со своим собственным кодом. И у нас есть строгие инструкции, которые мы не должны указывать пользователям библиотеки, чтобы включить те третьи стороны, чтобы включить. Проще говоря, мы не можем дать пользователям знать, какие третьи лица использует наша библиотека. Так есть ли способ, которым я могу создать файл AAR, который также имеет предварительно скомпилированные зависимости gradle, не раскрывая пользователю, какие сервисы мы используем?
Обновление 1
Вот мой build.gradle для библиотеки
apply plugin: 'com.android.library'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
dexOptions {
preDexLibraries = false
javaMaxHeapSize "4g" // 2g should be also OK
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.android.gms:play-services-vision:10.2.1'
testCompile 'junit:junit:4.12'
}
После того, как я перемещаю свой файл.aar в локальный maven и создаю его, используя выходной файл в моем приложении Project. Вот это и есть повод для того же.
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.jarvis.myapplication"
minSdkVersion 15
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile('com.company:mylibrary:[email protected]')
{
transitive = true
}
compile 'com.android.support:appcompat-v7:25.3.0'
testCompile 'junit:junit:4.12'
}