ホームページ > Java > &#&チュートリアル > Android で Java 上位バージョン API を使用する方法

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

WBOY
リリース: 2023-04-18 21:07:05
転載
1340 人が閲覧しました

    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 &#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 中国語 Web サイトの他の関連記事を参照してください。

    関連ラベル:
    ソース:yisu.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート