目次
Android プラグインが新しい API のサポートを開始
互換性のある処理を必要とする一般的に使用されるクラス:
1. LocalDate の日付処理
2. ストリーム コレクション フローの操作
AGP7 コンパイルの問題
ホームページ Java &#&チュートリアル Android で Java 上位バージョン API を使用する方法

Android で Java 上位バージョン API を使用する方法

Apr 18, 2023 pm 09:07 PM
java android api

    Android プラグインが新しい API のサポートを開始

    この日、Xiao Wang はライブラリをインポートしましたが、その直後にその大部分がクラッシュしました。オンラインになりましたか?問題を見つけてください:

    Android で Java 上位バージョン API を使用する方法

    #一体どういうことですか? Android8.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 の一部の操作シンボルにはいくつかの種類がありますが、プロジェクトがすべて Kotlin になったので、通常はこのようなものは必要ありません。古い Java プロジェクトの場合は、フィルター マップ コレクションがストリーム API を使用して簡単にデータを変換できることを願っています。

    AGP7 コンパイルの問題

    前のプロジェクトがコンパイルされたとき、互換性コードはサブモジュールの build.gradle に記述されていたため、アプリ モジュールはコンパイル後に正常にマージされ、走行には問題ありません。ただし、しばらく前にプロジェクトが AGP にアップグレードされた後、指定された API を実行できません。実行するには、実行中のモジュール アプリの build.gradle に互換性のあるコード ブロックを追加する必要があります。これはここに記録されています。

        ...
        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'
        }
       ...
    ログイン後にコピー

    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 'com.android.tools:desugar_jdk_libs:1.1.5'
    }
    ログイン後にコピー
    ログイン後にコピー

    以上がAndroid で Java 上位バージョン API を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットな記事タグ

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します Sep 27, 2024 am 06:23 AM

    Xiaomi Redmi Note 14 Pro Plusは、Light Hunter 800カメラを搭載した初のQualcomm Snapdragon 7s Gen 3スマートフォンとして登場します

    Oppo Find X8のデザインは、初期の画像ではApple iPhone 16 ProとOnePlus Openを組み合わせたように見えます Oppo Find X8のデザインは、初期の画像ではApple iPhone 16 ProとOnePlus Openを組み合わせたように見えます Sep 28, 2024 am 06:04 AM

    Oppo Find X8のデザインは、初期の画像ではApple iPhone 16 ProとOnePlus Openを組み合わせたように見えます

    Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

    Java 8 Stream Foreachから休憩または戻ってきますか?

    iQOO Z9 Turbo+ は、「驚異的な」バッテリー寿命を備えた Dimensity 9300+ スマートフォンとしてデビューします iQOO Z9 Turbo+ は、「驚異的な」バッテリー寿命を備えた Dimensity 9300+ スマートフォンとしてデビューします Sep 26, 2024 am 06:20 AM

    iQOO Z9 Turbo+ は、「驚異的な」バッテリー寿命を備えた Dimensity 9300+ スマートフォンとしてデビューします

    Samsung Galaxy Z Fold Special Edition、競合する名前が浮上、10月下旬に発売されることが判明 Samsung Galaxy Z Fold Special Edition、競合する名前が浮上、10月下旬に発売されることが判明 Oct 01, 2024 am 06:21 AM

    Samsung Galaxy Z Fold Special Edition、競合する名前が浮上、10月下旬に発売されることが判明

    Java をシンプルに: プログラミング能力を高める初心者向けガイド Java をシンプルに: プログラミング能力を高める初心者向けガイド Oct 11, 2024 pm 06:30 PM

    Java をシンプルに: プログラミング能力を高める初心者向けガイド

    未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

    未来を創る: まったくの初心者のための Java プログラミング

    カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

    カプセルの量を見つけるためのJavaプログラム

    See all articles