Android L, исключение с использованием библиотеки joda.time

#android #time #jodatime #android-5.0-lollipop

#Android #время #jodatime #android-5.0-lollipop

Вопрос:

Приложение, используемое для работы на всех устройствах, включая (nexus 5 и nexus 7). Запуск того же приложения на Android L preview, сбой приложения.

Я проводил отладку, и исключение было создано с помощью конструктора DateTime.

 public static String[] getAge(Context context, Date date) {
        DateTime time = new DateTime(date);
        DateTime nowTime = new DateTime(new Date());

}
  

Журнал:

 java.lang.SecurityException: Incorrect signature
at org.apache.harmony.security.utils.JarUtils.verifySignature(JarUtils.java:223)
    at java.util.jar.JarVerifier.verifyCertificate(JarVerifier.java:294)
    at java.util.jar.JarVerifier.readCertificates(JarVerifier.java:268)
    at java.util.jar.JarFile.getInputStream(JarFile.java:380)
    at libcore.net.url.JarURLConnectionImpl.getInputStream(JarURLConnectionImpl.java:222)
    at java.net.URL.openStream(URL.java:470)
    at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:444)
    at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:202)
    at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123)
    at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82)
    at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:490)
    at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:444)
    at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:116)
    at org.joda.time.DateTimeUtils.<clinit>(DateTimeUtils.java:48)
    at org.joda.time.DateTimeUtils.getChronology(DateTimeUtils.java:282)
    at org.joda.time.convert.AbstractConverter.getChronology(AbstractConverter.java:82)
    at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:170)
    at org.joda.time.DateTime.<init>(DateTime.java:241)
  

Есть идеи по поводу?

Комментарии:

1. Похоже, что Joda Time пытается прочитать некоторые файлы из своего собственного JAR. Если одно из ваших аппаратных устройств работает под управлением Android 4.4, вы можете включить на нем среду выполнения ART в настройках разработчика и посмотреть, возникнет ли у вас такая же проблема. Если это так, то проблема, скорее всего, связана со средой выполнения ART.

2. Похоже, что JodaTime может пытаться вызвать теперь закрытый API? Согласно android.googlesource.com/platform/libcore / / … VerifySignature проверяет подпись приложения, возможно, чтобы сверить ее с системной подписью. Хотя это просто дикий выстрел.

3. Включение среды выполнения ART на Android 4.4.4 работает, и исключение не появилось… Все еще на Android-L

4. Я не смог решить эту проблему, поэтому я предполагаю, что эта библиотека не поддерживается Android-L. Вместо этого решения с использованием класса Date исключения нет.