> Java > java지도 시간 > Android에서 Java 상위 버전 API를 사용하는 방법

Android에서 Java 상위 버전 API를 사용하는 방법

WBOY
풀어 주다: 2023-04-18 21:07:05
앞으로
1363명이 탐색했습니다.

    Android 플러그인에서 새로운 API 지원 시작

    이 날 Xiao Wang이 라이브러리를 가져왔는데, 온라인에 접속한 직후 그 중 상당 부분이 충돌을 일으켰다고요? 질문 찾기: ​​

    Android에서 Java 상위 버전 API를 사용하는 방법

    대체 뭐야? 안드로이드 8.0을 사용할 수 없나요? 이런 식으로 8.0 이하 버전에서 출시된 모든 휴대폰이 충돌했습니다. 확인한 결과 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'
    }
    로그인 후 복사
    로그인 후 복사

    지원을 활성화하려면 플러그인을 활성화해야 한다는 것을 알게 되었습니다. multiDexEnabled를 반드시 켜야 합니다. 원칙적으로는 컴파일 중에 일부 호환성 처리를 위해 별도의 dex 패키지가 생성된다는 것입니다.

    호환 처리가 필요한 일반적으로 사용되는 클래스:

    1. 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. 스트림 수집 흐름 작업

      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);
    로그인 후 복사

    Kotlin에는 일부 유형의 연산자가 있으므로 일반적으로 그렇지 않습니다. 오래된 Java 프로젝트라면 필터 맵 컬렉션이 스트림 API를 사용하여 데이터를 쉽게 변환할 수 있기를 바랍니다.

    AGP7 컴파일 문제

    이전 프로젝트를 컴파일할 때 우리의 호환성 코드가 서브모듈의 build.gradle에 작성되었기 때문에 컴파일 후 앱 모듈이 성공적으로 병합되어 실행에 문제가 없을 것입니다. 하지만 얼마 전 프로젝트가 AGP로 업그레이드된 후 지정된 API를 실행할 수 없습니다. 이를 실행하려면 실행 중인 모듈 앱의 build.gradle에 호환되는 코드 블록을 추가해야 합니다.

        ...
        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;
        }
       ...
    로그인 후 복사

    app build.gradle을 추가해야 합니다

    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;
    }
    로그인 후 복사
    로그인 후 복사

    위 내용은 Android에서 Java 상위 버전 API를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿