Rumah >Java >javaTutorial >Cara menggunakan API versi tinggi Java dalam Android
Pada hari ini, Xiao Wang mengimport perpustakaan, dan sebahagian besar daripadanya ranap sejurus selepasnya pergi dalam talian? Cari masalah:
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.
// 日期 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));
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 AGP7Apabila 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 'https://maven.aliyun.com/nexus/content/groups/public/' } google() maven { url 'https://jitpack.io' } mavenCentral() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.0.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.8' } ...
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!