【Kotlin】Properties and Fields: Getters, Setters

We clarified comparing basic Kotlin classes with Java classes about properties and fields.

Property


// Kotlin
class Human {
  val age = 20
}


// Decompiled to Java
public final class Human {
   private final int age = 20;

   public final int getAge() {
      return this.age;
   }
}


// Kotlin
class Human {
  var age = 20
}


// Decompiled to Java
public final class Human {
   private int age = 20;

   public final int getAge() {
      return this.age;
   }

   public final void setAge(int var1) {
      this.age = var1;
   }
}

Backing field


// Kotlin
class Human {
  var age = 20
    set(value) {
      field = value
    }
}


// Decompiled to Java
public final class Human {
   private int age = 20;

   public final int getAge() {
      return this.age;
   }

   public final void setAge(int value) {
      this.age = value;
   }
}

Backing property


// Kotlin
class Human {
  private var _age: Int = 20
  val age: Int
    get() {
      return _age
    }

  fun setAge(value: Int) {
    _age = value
  }
}


// Decompiled to Java
public final class Human {
   private int _age = 20;

   public final int getAge() {
      return this._age;
   }

   public final void setAge(int value) {
      this._age = value;
   }
}

Data class


// Kotlin
data class Human(val age: Int = 20)


// Decompiled to Java
public final class Human {
   private final int age;

   public final int getAge() {
      return this.age;
   }

   public Human(int age) {
      this.age = age;
   }

   // $FF: synthetic method
   public Human(int var1, int var2, DefaultConstructorMarker var3) {
      if ((var2 & 1) != 0) {
         var1 = 20;
      }

      this(var1);
   }

   public Human() {
      this(0, 1, (DefaultConstructorMarker)null);
   }

   public final int component1() {
      return this.age;
   }

   @NotNull
   public final Human copy(int age) {
      return new Human(age);
   }

   // $FF: synthetic method
   @NotNull
   public static Human copy$default(Human var0, int var1, int var2, Object var3) {
      if ((var2 & 1) != 0) {
         var1 = var0.age;
      }

      return var0.copy(var1);
   }

   @NotNull
   public String toString() {
      return "Human(age=" + this.age + ")";
   }

   public int hashCode() {
      return this.age;
   }

   public boolean equals(@Nullable Object var1) {
      if (this != var1) {
         if (var1 instanceof Human) {
            Human var2 = (Human)var1;
            if (this.age == var2.age) {
               return true;
            }
         }

         return false;
      } else {
         return true;
      }
   }
}

Below you can see how to decompile your class on Android Studio!!


[Tools]

  |

[Kotlin]

  |

[Show Kotlin Bytecode]

  |

[Decompile]



👉【Kotlin】バッキング・フィールド/プロパティ
👉 Properties and Fields: Getters, Setters, const, lateinit - Kotlin Programming Language


Lineage OS をアップグレードする

Androidカスタムである Lineage OS 15.x を 16.x (9.0 Pie) にアップグレードする。

機種は、Google Nexus6 (shamu)

メジャーバージョンの更新は、通知バーからクリックのみでの更新はできない。

いくつか、引っかかった点があるのでメモ。

USBケーブルの接続は今回は一切不要。すでにインストール済みのTWRP上で、それ自身の更新から始める

端末上でブラウザで、「リカバリ」、「OS」、「GApps」、の3つのアーカイブをダウンロードしてインストールする。


👉 Download TWRP for shamu


👉 LineageOS Downloads


👉 The Open GApps Project

TWRP も最新版にしておかないと、メインのOSの zip が signature failed などと言われてインストールできない。

👉 LineageOS を Nexus 6 (shamu) に入れてみる

twrp.img もWEB経由で端末上でダウンロードしておき、旧版TWRPの「install 」から「img install」 で「recovory」領域に。

TWRP初回起動時にパスワードを求められ、「複合化できません」などと先に進めない場合は「Wipe」-「Format Data」。元のデータが残っている。



Lineage OS 16.0

AndroidのGoogleアカを使ったバックアップのしくみでインストールアプリは一見復元されているように見えるが、信用はしていない。

なお、今現在の Lineage OS では、Huawei端末向けでは以下が公開されている。
Huawei Lineage OS
LineageOS Downloads

👉 今後、Huawei端末ユーザ ができること
👉【公式 2018-05-07】Android Pie のバージョンシェア がやっと 10%超えている件


今後、Huawei端末ユーザ ができること

昨日のニュース

Googleは今後、Huaweiに対するAndroidおよびGoogleサービスの技術サポートの提供や協力を中止するという。

👉 GoogleがHuaweiのAndroid端末向けサービス停止を検討か──Reuters報道 - ITmedia NEWS

ファーウェイはオランダの大手通信キャリア3社のうち1社のデバイスに、バックドアを潜ませ、データを収集していた疑いがある。

👉 オランダでファーウェイ製品の「バックドア」発見、政府が調査 | Forbes JAPAN(フォーブス ジャパン)

私たちはその命令を遵守し、その影響を検討しています。Google Play、そしてGoogle Play Protectによるセキュリティ保護機能は、既存のファーウェイ端末で引き続き機能します。
We are complying with the order and reviewing the implications. For users of our services, Google Play and the security protections from Google Play Protect will continue to function on existing Huawei devices.

👉 ファーウェイの既存製品でサービスは今後も使える――グーグルがコメント - ケータイ Watch

Google が今後、HUAWEI に対して Android OS や Google Play のサービスを提供しないことを検討しているとロイターが報道しました。関係筋からのリークという報道なので、未確定ではありますが、昨今のトランプ政権の動きからすると、確定路線に思えます。

👉 HUAWEI リスクが現実に? - 最終防衛ライン3

Googleはオープンソースライセンスでカバーされる部分を除き、ファーウェイへのハード、ソフトのサポートを停止した。これによりAndroidのアップデートの提供はすでに停止された。Android OSそのものはオープンソースなので利用できるが、Googleからのサポートはなくなる。

👉 Googleがファーウェイに対してAndroidのサポートを中止へ

どうします?



HUAWEI P30 Pro HW-02L | スマートフォン | 製品 | NTTドコモ

準備

1. adb と fastboot をパソコンで使える状態にします。

2. 端末で USBデバッグをONにします。

ブートローダのアンロック

ブートローダーのアンロックは、非公式な方法で行うことができます。自己責任ですがこの作業は必須となります。

リカバリからインストール

1. インストールしたいパッケージをダウンロードします。必要であれば、Goole Apps ( arm64 architecture) をダウンロードすることができます。

2. 端末をリカバリからブートします。音量小+電源の長押しです。

3. 念の為にBackupボタンを押してバックアップして、それをパソコンにコピーしてください。端末内部ストレージはこの後フォーマットされます。

4. メインメニューに戻って、Wipe をタップします。

5. 続いて、Format Data をタップして、フォーマット処理を続けます。これで内部ストレージのすべてのファイルが削除されます。

6. メニューに戻って、Advanced Wipe をタップします。

7. 次は、Cache と System partition をワイプします。

8. パッケージの .zip ファイルをサイドロードします。
- デバイス側で、[Advanced]-[ADB Sideload]
- パソコン側で、「adb sideload filename.zip」

9. 必要であれば、同様にしてパッケージをインストールします。
- Google Apps をインストールしたい場合は、初回ブートの前にここでインストールしなければなりません。

10. また、必要であれば、SU Addon(arm64)など、お好みの方法でルート化します。

11. インストール作業が完了したらメインメニューに戻って、[Reboot]-[System]とタップします。

まとめ

サポート期限が切れOSの各種アップデートなどが完全に止まった古いAndroid端末はすべてカスタムROM化して延命します。




👉 LineageOS – LineageOS Android Distribution
👉【本当に32ビット?】Android端末の CPU の ABI を特定する

いつものように自己責任でお願いします。

そんなインストール手順、カメラアームきたら動画配信で流します、うまくいくかは知らん。



OSレベルの作業手順は、フツーにScreenRecordでけんからの。

👉 Navigation bar options - Android Q beta3 - YouTube
👉 Install LineageOS on charlotte | LineageOS Wiki
👉 Lineage OS をアップグレードする