C'est donc un exemple de ce qui a été retourné dans les messages de Studio Android: P> peut-on expliquer ce qu'ils signifie par "interface inconnue" dans les erreurs ci-dessous? strong> p> Ceci est venu d'une bibliothèque que j'ai utilisée. Je pensais ajouter que les types d'angle aideraient? Je ne sais pas si cela faisait quoi que ce soit. P> Ceci est la ligne 118-119 dans la bibliothèque: p> Je ne sais pas quoi Il se plaint? Que dois-je faire ou changer pour échapper à ce problème? J'avais pensé que l'Android n'appuie pas les expressions de Lambda, mais l'erreur a clairement indiqué "Lambda venant de ...", ce qui signifie qu'il a reconnu que j'ai utilisé une expression de Lambda. strong> P> S'il vous plaît aider. P> J'ai inclus la bibliothèque en la compilant dans un pot dans une autre bibliothèque de jar forte>, si cela aide. Je suis nouveau dans le monde de Android si vous ne pouvez pas le dire. P> Je ne pense pas que cela soit lié à la version API? J'ai mis ma cible de construction sur En outre, si vous regardez ci-dessous, je ne vois pas une option pour 1,8? Mais
Mise à jour h3>
mises à jour 2 h3>
gradle h3>
3 Réponses :
Je ne suggérerais pas d'utiliser Java 8. Il n'est pas pris en charge de nos jours. Mais, même si vous: N'oubliez pas que chaque appareil a obtenu sa propre machine Java qui ne sera pas mise à jour. Je veux dire, si vous voulez être sûr que votre application fonctionne correctement, configurez votre projet en tant que Java 6. Old périphériques Cela ne prend jamais en charge JMV P> à jour
lire cette discussion trop p>
Quelle version JDK (niveau de langue) est requise Pour Android Studio? P>
Je ne vise pas une utilisation pratique de cette application. Juste apprendre Android. Mais après tout, j'ai vu, je pense que Android est assez gâché. Par exemple. VIEW.GETTEXTSIZE () CODE> Retours
PX CODE> ET
VIEW.SETTEXTESIZE (Taille) CODE> NÉCESSION
SP CODE>.
@Danielcheung, vous serez surpris à l'avenir, certaines API peuvent travailler imprévisibles: dépend des fournisseurs et des modèles de périphériques
android sdk java.util.function.function code> et ajoutez ce qui suit à votre java.util.function.predicate code> interfaces car Java 8 permet aux interfaces fonctionnelles de contenir Méthodes par défaut em> qui n'est prise en charge que dans SDK 24 et plus. J'avais ce problème lorsque j'utilisais les consommateurs et que je me suis réparé, c'était pour créer mon propre clown de
java.util.function.Consumer code> interface sans toutes les méthodes par défaut.
Vous pouvez également résoudre ce problème en augmentant le minimum SDK de votre application à 24.
build.gradle code> Fichier P>
defaultConfig {
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
J'ai juste essayé de changer le réglage MinsDK sur 24 et il y avait la même erreur
Ajouter defaultConfig {... Jackoptions {activé true}} CompileOptions {SourceCompatibilittibilité javavversion.version_1_8 CibleCompatibilité JavaVersion.version_1_8}} à vous construire.Gradle File
Avez-vous vu ma mise à jour de la grade? J'ai exactement la même chose.
Je vois. Euh, vous avez mentionné que votre MIN SDK est 24, mais je vois dans le fichier de gradle fourni que vous avez MINSDKVersion 21 i>. Juste pour m'assurer qu'il est clair, pourriez-vous essayer de changer cela pour Minssdkversion 25 i>
La même chose est arrivée. Rien n'a changé. Je ne crois pas que l'API importe à ce stade parce que l'application ne peut même pas être construite
Seriez-vous capable d'exécuter Java -Version code> dans une invite de commande ou un terminal (en fonction de votre système d'exploitation) et vérifiez que Java 8 correctement installé correctement sur votre système?
Je l'ai correctement installé car je n'ai que Java 8 installé
Globalement Configuration semble bon à moi, sauf pour le Java JDK 1.8 Code> Partie.Vous devez définir un chemin d'accès correct sur JDK Installation Dossier dans Android Studio afin d'utiliser toutes les nouvelles fonctionnalités Java 8.
p>
Je l'ai fait, j'ai mis la construction JDK à mon emplacement de 1,8 JDK.
Pouvez-vous vérifier que vous avez correctement installé Java 1.8 dans votre système? Avez-vous ajouté Java à la voie du système? L'IDE ne vous permet pas d'utiliser Java 1.8 Cause Son clair que vous avez mal gêné quelque chose en suivant le réglage / l'installation du Java sur votre système.
Quel est votre niveau d'API Android de destination. Devrait être pris en charge avec API Niveau 23 .
@Petermmm attend, j'ai min 21. Permettez-moi d'essayer de le mettre à jour. J'ai seulement vérifié
java.util.function. * Code> est pris en charge au niveau de l'API 24
Pouvez-vous ajouter le fichier de gradle?
@Iulianpopescu ajouté
Sur quel Android essayez-vous de courir l'application?
@Iulianpopescu qui est hors de propos depuis que je ne suis même pas capable de construire le projet.
Je ne suis pas sûr, mais cela pourrait être lié à code.google. COM / P / Android / Problèmes / Détails? ID = 211386
@Sartorius mais je vois que d'autres personnes peuvent obtenir Lambda travaillant en naviguant alors :(
"D'autres personnes peuvent avoir la Lambda travaillant". Dans une bibliothèque (pas l'application elle-même)? Avec Jack? Pouvez-vous partager un lien?
@Sartorius Je ne peux pas parce que je n'ai aucune preuve qu'ils utilisaient une bibliothèque dans un pot. Ils l'ont fait avec Jack cependant. Avez-vous une idée de ce que signifie le message d'erreur? Étant donné que la bibliothèque elle-même est open source et je peux le modifier, si je sais ce qu'il se plaint, je pourrais peut-être le réparer sans supprimer tous mes lambdas.
Malheureusement non. J'utilise toujours Retrolambda , pas Jack. Pas de problèmes avec des bibliothèques là-bas.
Je créerais un test simple. Remplacez la bibliothèque avec une simule qui possède une seule expression Lambda, à l'aide d'un
java.lang.runnable code> comme interface fonctionnelle. Si cela se traduit par
interfaces inconnu sont java.lang.runnable code> Je dirais que cela est proche d'une preuve que @sartorius est correct. J'ai vu des plaintes à propos de ce sur et sur mais personne ne semble que personne ne semble savoir Comment y faire face.
Une solution de contournement légèrement pirate serait de compiler Bychan à Java 7 en utilisant Retrolambda. Vous devriez remplacer les six méthodes d'interface par défaut (5 dans Lexeme, 1 en jeton) par des méthodes abstraites et ajoutez la mise en œuvre par défaut correspondante dans les classes de mise en œuvre. Devrait être faisable dans une heure ou deux.
@Sartorius je pensais faire cela en fait, pourrait aller le faire plus tard.