Rumah >Java >javaTutorial >Cara menggunakan API versi tinggi Java dalam Android

Cara menggunakan API versi tinggi Java dalam Android

WBOY
WBOYke hadapan
2023-04-18 21:07:051344semak imbas

    Pemalam Android membuka sokongan untuk API baharu

    Pada hari ini, Xiao Wang mengimport perpustakaan, dan sebahagian besar daripadanya ranap sejurus selepasnya pergi dalam talian? Cari masalah:

    Cara menggunakan API versi tinggi Java dalam Android

    Apa kejadahnya? Tidak dapat menggunakan Android 8.0? Dengan cara ini, semua telefon mudah alih yang dilancarkan di bawah 8.0 ranap. Selepas menyemak, saya mendapati bahawa saya perlu mendayakan pemalam untuk mengaktifkan sokongan untuk 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'
    }

    Pastikan anda menghidupkan multiDexEnabled Prinsipnya ialah pakej dex yang berasingan akan dibuat semasa penyusunan untuk melakukan beberapa pemprosesan keserasian.

    Kelas yang biasa digunakan yang memerlukan pemprosesan yang serasi:

    1 pemprosesan tarikh 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));

    2 Sesetengah pengendali dalam Kotlin mempunyai jenis tertentu Kini kerana projek semuanya Kotlin, ia biasanya tidak digunakan lagi Jika anda adalah projek Java lama, saya berharap pengumpulan peta penapis boleh menggunakan API aliran untuk menukar data dengan mudah.

      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);
    Masalah dengan kompilasi AGP7

    Apabila menyusun projek sebelumnya, memandangkan kod keserasian kami ditulis dalam build.gradle sub-modul, modul apl akan berjaya digabungkan selepas penyusunan dan di sana tidak akan ada masalah berjalan. Walau bagaimanapun, selepas projek itu dinaik taraf kepada AGP beberapa waktu lalu, API yang ditentukan tidak boleh dijalankan Anda perlu menambah blok kod yang serasi dalam build.gradle apl modul yang sedang dijalankan. Ini direkodkan di sini.

    app build.gradle perlu ditambah

        ...
        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;
        }
       ...

    Atas ialah kandungan terperinci Cara menggunakan API versi tinggi Java dalam Android. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
    Artikel sebelumnya:Apakah status benang Java?Artikel seterusnya:Apakah status benang Java?