Мы используем несколько различных типов рекламных сетей, для которых нам нужно написать собственные привязки Java. Поскольку Google создал новый «рекламный» идентификатор, все эти библиотеки теперь зависят от сервисов Google Play.

Проблема в том, что я не могу правильно собрать эти связывающие проекты после получения их последних версий. Я получаю сообщение об отсутствии классов, если не добавляю google-play-services.jar (из моей папки extras в моем Android SDK) в качестве Reference Jar в проект.

После добавления файла jar сервисов воспроизведения я получаю новую ошибку:

missing class error was raised while reflecting com.somepackage.SomeClass : com/google/android/gms/common/GooglePlayServicesRepairableException : Unsupported major.minor version 51.0 JARTOXML

Эта ошибка обычно означает, что библиотека использует Java 7 (не поддерживается Xamarin) из того, что я читал. Что я могу сделать, чтобы исправить эти обязательные проекты?

1
jonathanpeppers 13 Авг 2014 в 18:29

1 ответ

Лучший ответ

Проблема в том, что Xamarin использует JDK 1.6, когда ваша библиотека была скомпилирована с JDK 1.7.

Чтобы обойти это, сначала установите 32-разрядную версию JDK 1.7. Затем в папке Progrm Files (x86) \ Java переименуйте папку jdk1.6 в _jdk1.6.

Теперь при запуске Xamarin он найдет папку JDK 1.7 и будет использовать ее. Пока у меня не было проблем с созданием приложений с помощью Xamarin и JDK 1.7.

Надеюсь это поможет.

9
Kiliman 14 Авг 2014 в 05:31
Я бы снова переключился на Java 1.6 в Xamarin Studio / Visual Studio после того, как вы закончите привязку. В будущем вы можете столкнуться с некоторыми странностями, поскольку Xamarin официально не поддерживает java 1.7.
 – 
Chuck Pinkert
29 Май 2015 в 03:16
2
На самом деле это уже не так. Xamarin поддерживает JDK 1.7, см. developer.xamarin.com / guides / android / getting_started /… Фактически, он необходим для поддержки уровня API 21+.
 – 
Kiliman
30 Май 2015 в 01:16
Чертовски спасибо, приятель: D Ты избавил меня от огромной головной боли!
 – 
Ethenyl
3 Июн 2015 в 14:20