Maison > Java > javaDidacticiel > Comment utiliser l'API Java haute version sous Android

Comment utiliser l'API Java haute version sous Android

WBOY
Libérer: 2023-04-18 21:07:05
avant
1362 Les gens l'ont consulté

    Le plug-in Android ouvre la prise en charge de nouvelles API

    Ce jour-là, Xiao Wang a importé une bibliothèque, et une grande partie de celle-ci s'est écrasée immédiatement après sa mise en ligne ? Trouvez la question :

    Comment utiliser l'API Java haute version sous Android

    C'est quoi ce bordel ? Impossible d'utiliser Android 8.0 ? De cette façon, tous les téléphones mobiles lancés sous la version 8.0 sont tombés en panne. Après vérification, j'ai découvert que je devais activer le plug-in pour activer la prise en charge de Java Api

    android {
      defaultConfig {
        multiDexEnabled true
      }
    
      compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled true
    
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
    }
    
    dependencies {
      coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
    }
    Copier après la connexion
    Copier après la connexion

    Assurez-vous d'activer multiDexEnabled. Le principe est qu'un package dex distinct sera créé lors de la compilation pour effectuer un traitement de compatibilité.

    Classes couramment utilisées qui nécessitent un traitement compatible :

    1. Traitement de la date LocalDate

    		// 日期
    		LocalDate today = LocalDate.now();
    		// 几号
    		int dayofMonth = today.getDayOfMonth();
    		// 星期几
    		int dayofWeek = today.getDayOfWeek().getValue();
    		// 今年
    		int dayofYear = today.getDayOfYear();
    		
    		LocalDate endOfFeb = LocalDate.parse("2018-02-28"); 
    
                    // 取本月第1天:
    		LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); 
    		// 取本月第2天:
    		LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); 
    
    		// 取本月最后一天,再也不用计算是28,29,30还是31:
    		LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth());
    
    		// 取下一天:
    		LocalDate firstDayOfNextMonth = lastDayOfThisMonth.plusDays(1); 
    
    		// 取2017年1月第一个周一:
    		LocalDate firstMondayOf2017 = LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));
    Copier après la connexion

    2. Opération de flux de collecte de flux

      List<widget> widgets = new ArrayList<>();
            widgets.add(new widget(Color.RED, "Name", 1));
            int sum = widgets.stream()
                    .filter(w -> w.getColor() == Color.RED)
                    .mapToInt(w -> w.getWeight())
                    .sum();
    
        List<User> userList = Stream.
            of(arrayList).
            map(person -> new User(person.getName())).
            collect(Collectors.toList());
    
        //peek 和map类似-但是他更强大-它对每个元素执行操作并返回一个新的 Stream
        Stream.of("one", "two", "three", "four") 
        .filter(e -> e.length() > 3) 
        .peek(e -> System.out.println("Filtered value: " + e)) 
        .map(String::toUpperCase) 
        .peek(e -> System.out.println("Mapped value: " + e)) 
        .collect(Collectors.toList());
    
        //limit 返回 Stream 的前面 n 个元素;
        //skip 则是扔掉前 n 个元素
        List<String> personList2 = persons.stream()
        .map(Person::getName)
        .limit(10)
        .skip(3)
        .collect(Collectors.toList()); 
        System.out.println(personList2);
    Copier après la connexion

    Il a certains types d'opérateurs dans Kotlin Maintenant que les projets sont tous Kotlin, ce n'est généralement pas le cas. utilisé. C'est tout. Si vous êtes un ancien projet Java, j'espère que la collection de cartes de filtres pourra utiliser l'API de flux pour convertir facilement les données.

    Problème de compilation AGP7

    Lorsque le projet précédent était compilé, puisque notre code de compatibilité était écrit dans le build.gradle du sous-module, le module d'application serait fusionné avec succès après la compilation et il n'y aurait aucun problème d'exécution. Cependant, après la mise à niveau du projet vers AGP il y a quelque temps, l'API spécifiée ne peut pas être exécutée. Vous devez ajouter un bloc de code compatible au build.gradle de l'application du module en cours d'exécution pour l'exécuter.

        ...
        repositories {
            maven { url &#39;https://maven.aliyun.com/nexus/content/groups/public/&#39; }
            google()
            maven { url &#39;https://jitpack.io&#39; }
            mavenCentral()
            jcenter()
        }
    
        dependencies {
            classpath &#39;com.android.tools.build:gradle:7.0.3&#39;
    
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    
            classpath &#39;com.google.gms:google-services:4.3.8&#39;
        }
       ...
    Copier après la connexion

    app build.gradle doit être ajouté

    android {
      defaultConfig {
        multiDexEnabled true
      }
    
      compileOptions {
        // Flag to enable support for the new language APIs
        coreLibraryDesugaringEnabled true
    
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
    }
    
    dependencies {
      coreLibraryDesugaring &#39;com.android.tools:desugar_jdk_libs:1.1.5&#39;
    }
    Copier après la connexion
    Copier après la connexion

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Étiquettes associées:
    source:yisu.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal