У меня есть проект библиотеки, который я использую в основном проекте Android с использованием файла AAR. Я получаю знаменитый предел метода 65k, который я ожидал, но у меня есть несколько запросов.
Я добавил файл AAR в папку libs моего основного проекта и скомпилировал его в build.gradle.
1) Нужно ли добавлять многоэкранную поддержку как в библиотеке, так и в главном проекте андроида?
2) Нужно ли добавить afterEvaluate script в оба проекта?
Самое главное, если мы работаем с несколькими деками, мы можем получить проблему, что в главном проекте андроида мы получаем исключение Classnotfound, если какой-либо из класса, который мы пытаемся использовать, не находится в главном списке dex.
Редактирование: - Я пытаюсь продолжать публикацию обновлений на основе моего тестирования, поэтому любой, кто имеет какую-либо идею, может помочь всем нам.
зависимости, используемые в проекте: -
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.google.android.gms:play-services-gcm:7.8.0'
compile 'com.google.android.gms:play-services-location:7.8.0'
compile 'com.google.android.gms:play-services-ads:7.8.0'
compile 'co.pointwise:pw-proto:0.0.5'
compile 'com.amazonaws:aws-android-sdk-sns:2.2.1'
compile 'com.amazonaws:aws-android-sdk-core:2.2.1'
compile 'com.github.tony19:logback-android-core:1.1.1-4'
compile 'com.github.tony19:logback-android-classic:1.1.1-4'
compile 'org.slf4j:slf4j-api:1.7.6'
compile 'com.android.support:multidex:1.0.0'
compile(name: 'sdk-debug', ext: 'aar') // my library project
// Crashlytics Kit
compile('com.crashlytics.sdk.android:crashlytics:[email protected]') {
transitive = true
}
}
17-08-2015. Согласно документации, я изменил свой код и теперь его работу, но я не могу сгенерировать подписанный apk с proguard.
Файл Proguard выглядит так: -
-keep class ch.qos.** { *; }
-keep class org.slf4j.** { *; }
-keep class io.protostuff.** { *; }
-keep class com.google.common.** { *; }
-keep com.amazonaws.http.** { *; }
-keep com.amazonaws.internal.** { *; }
-keepattributes *Annotation*
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
# Keep SafeParcelable value, needed for reflection. This is required to support backwards
# compatibility of some classes.
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
# Keep the names of classes/members we need for client functionality.
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
# Needed for Parcelable/SafeParcelable Creators to not get stripped
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
Ошибки: -
Warning: com.amazonaws.AmazonWebServiceClient: can't find referenced class org.apache.commons.logging.LogFactory
Warning: ch.qos.logback.core.net.SMTPAppenderBase: can't find referenced class javax.mail.internet.MimeMessage
Warning: com.google.common.base.Absent: can't find referenced class javax.annotation.Nullable
Warning: there were 1406 unresolved references to classes or interfaces.
You may need to add missing library jars or update their versions.
If your code works fine without the missing classes, you can suppress
the warnings with '-dontwarn' options.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning: there were 9 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile the code.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
:app:proguardProdRelease FAILED
Я столкнулся с проблемой ранее, и я не смог ее разрешить в последнем проекте, но на этот раз мне нужно ее решить.
Любые идеи?