Android 技術者認定試験 Platform [Android 技術者認定試験]
仕事でAndroidの知識が必要になったので、学習目標として受けようと考えている。
まずは学習対象範囲の確認から。学習したらその結果を書いたこのページのリンクを記載していくと、自分の学習結果が可視化される、という仕組みというか取り組み。
このブログ内でApplicationベーシックのページは以下。
Android 技術者認定試験 Application ベーシックスキル
https://mishika.blog.ss-blog.jp/2020-12-29#more
プラットフォームベーシックスキル for Android
http://ace.it-casa.org/ace/scope/platform-basic/
まずは学習対象範囲の確認から。学習したらその結果を書いたこのページのリンクを記載していくと、自分の学習結果が可視化される、という仕組みというか取り組み。
このブログ内でApplicationベーシックのページは以下。
Android 技術者認定試験 Application ベーシックスキル
https://mishika.blog.ss-blog.jp/2020-12-29#more
プラットフォームベーシックスキル for Android
http://ace.it-casa.org/ace/scope/platform-basic/
調べもの:AIDL(Android Intarface Defintion Language) HIDL(HAL Interface Definition Laguage) 2回目 [Android 技術者認定試験]
以前調べた時は、HIDLとAIDLの違いを HIDL (HALとframework) AIDL(framework間)と理解したようだが、AIDLの方がHIDLをカバーするように定義されている模様。
「調べもの:AIDL(Android Intarface Defintion Language) HIDL(HAL Interface Definition Laguage)」
So-net blog https://mishika.blog.ss-blog.jp/2021-01-11-1
「AIDL の概要 | Android オープンソース プロジェクト | Android Open Source Project 」
https://source.android.com/docs/core/architecture/aidl/overview?hl=ja
「android - What are the difference between AIDL and HAL? - Stack 」
Overflow https://stackoverflow.com/questions/73810358/what-are-the-difference-between-aidl-and-hal
「Hardware Composer HAL の AIDL | Android オープンソース プロジェクト | Android Open Source Project 」
https://source.android.com/docs/core/graphics/aidl-hwc?hl=ja
「調べもの:AIDL(Android Intarface Defintion Language) HIDL(HAL Interface Definition Laguage)」
So-net blog https://mishika.blog.ss-blog.jp/2021-01-11-1
「AIDL の概要 | Android オープンソース プロジェクト | Android Open Source Project 」
https://source.android.com/docs/core/architecture/aidl/overview?hl=ja
「android - What are the difference between AIDL and HAL? - Stack 」
Overflow https://stackoverflow.com/questions/73810358/what-are-the-difference-between-aidl-and-hal
「Hardware Composer HAL の AIDL | Android オープンソース プロジェクト | Android Open Source Project 」
https://source.android.com/docs/core/graphics/aidl-hwc?hl=ja
調べもの:Ashmem 3回目 (Android shared memory) [Android 技術者認定試験]
Android向けで API15 Android4で使用可。POSIXの共有メモリとも異なる。
元々はAndroidでサポートされていたが、Linux kernelに入っている。
「Android shared memory ashmem - Google 検索」
https://www.google.com/search?q=Android+shared+memory+ashmem
「Android – Creating Shared Memory using Ashmem – Developers Area」
https://devarea.com/android-creating-shared-memory-using-ashmem/#.Y7oiuRXP2Hs
「android - Ashmem retention policy - Stack Overflow」
https://stackoverflow.com/questions/12847301/ashmem-retention-policy
「共有メモリ - Wikipedia」
https://ja.wikipedia.org/wiki/%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%A2%E3%83%AA
「Android Kernel Features - eLinux.org」
https://elinux.org/Android_Kernel_Features
「Android Shared Memory | DiscoverSDK Blog」
http://www.discoversdk.com/blog/android-shared-memory-ashmem-example
元々はAndroidでサポートされていたが、Linux kernelに入っている。
「Android shared memory ashmem - Google 検索」
https://www.google.com/search?q=Android+shared+memory+ashmem
「Android – Creating Shared Memory using Ashmem – Developers Area」
https://devarea.com/android-creating-shared-memory-using-ashmem/#.Y7oiuRXP2Hs
「android - Ashmem retention policy - Stack Overflow」
https://stackoverflow.com/questions/12847301/ashmem-retention-policy
「共有メモリ - Wikipedia」
https://ja.wikipedia.org/wiki/%E5%85%B1%E6%9C%89%E3%83%A1%E3%83%A2%E3%83%AA
「Android Kernel Features - eLinux.org」
https://elinux.org/Android_Kernel_Features
「Android Shared Memory | DiscoverSDK Blog」
http://www.discoversdk.com/blog/android-shared-memory-ashmem-example
調べもの:ProGuard [Android 技術者認定試験]
ビルド実行時に変数や関数を人が読みやすい語彙から単純な文字に置き換える処理。
localモジュールでの設定は以下。デフォルトではシステムが設定し、appは有効 (full) ライブラリはdisabled
LOCAL_PROGUARD_ENABLED := disable
「Android ProGuard - Google 検索」
https://www.google.com/search?q=Android+ProGuard
「アプリの圧縮、難読化、最適化 | Android デベロッパー | Android Developers」
https://developer.android.com/studio/build/shrink-code?hl=ja
「Android Proguardによるソースコード難読化まとめ - Galapagos Tech Blog」
https://techblog.glpgs.com/entry/2017/12/05/110229
「Java Obfuscator and Android App Optimizer | ProGuard」
https://www.guardsquare.com/proguard
「APKの難読化(ProGuard) | Android-Note」
https://android-note.open-memo.net/sub/other__apk_proguard.html
localモジュールでの設定は以下。デフォルトではシステムが設定し、appは有効 (full) ライブラリはdisabled
LOCAL_PROGUARD_ENABLED := disable
「Android ProGuard - Google 検索」
https://www.google.com/search?q=Android+ProGuard
「アプリの圧縮、難読化、最適化 | Android デベロッパー | Android Developers」
https://developer.android.com/studio/build/shrink-code?hl=ja
「Android Proguardによるソースコード難読化まとめ - Galapagos Tech Blog」
https://techblog.glpgs.com/entry/2017/12/05/110229
「Java Obfuscator and Android App Optimizer | ProGuard」
https://www.guardsquare.com/proguard
「APKの難読化(ProGuard) | Android-Note」
https://android-note.open-memo.net/sub/other__apk_proguard.html
調べもの:classes.dex [Android 技術者認定試験]
すべてのAndroidアプリケーションに必要なDalvix実行ファイル。
「手動での classes.dex ファイルの作成と配置 - RAD Studio」
https://docwiki.embarcadero.com/RADStudio/Sydney/ja/%E6%89%8B%E5%8B%95%E3%81%A7%E3%81%AE_classes.dex_%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E9%85%8D%E7%BD%AE
「classes.dex - Google 検索」
https://www.google.com/search?q=classes.dex
「dexファイルってなんだっけ - Qiita」
https://qiita.com/nichiyoshi/items/46f44001358fbafd85a5
「APK Analyzer でのビルドの分析 | Android デベロッパー | Android Developers 」
https://developer.android.com/studio/build/apk-analyzer?hl=ja
「AndroidのAPKを逆コンパイルする - Qiita」
https://qiita.com/chibi929/items/940623d33d9f6eb3877f
「Androidアプリのapkファイルを解析する方法 - Java入門」
https://kaworu.jpn.org/java/Android%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AEapk%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
「手動での classes.dex ファイルの作成と配置 - RAD Studio」
https://docwiki.embarcadero.com/RADStudio/Sydney/ja/%E6%89%8B%E5%8B%95%E3%81%A7%E3%81%AE_classes.dex_%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E9%85%8D%E7%BD%AE
「classes.dex - Google 検索」
https://www.google.com/search?q=classes.dex
「dexファイルってなんだっけ - Qiita」
https://qiita.com/nichiyoshi/items/46f44001358fbafd85a5
「APK Analyzer でのビルドの分析 | Android デベロッパー | Android Developers 」
https://developer.android.com/studio/build/apk-analyzer?hl=ja
「AndroidのAPKを逆コンパイルする - Qiita」
https://qiita.com/chibi929/items/940623d33d9f6eb3877f
「Androidアプリのapkファイルを解析する方法 - Java入門」
https://kaworu.jpn.org/java/Android%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AEapk%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
調べもの:bazel [Android 技術者認定試験]
Google が開発しているビルドツール。
make,とかsoongとか色々あるけど、buildが速くなるというのは期待。
「Googleが開発する最新ビルドツール「Bazel」を使ってみよう | さくらのナレッジ 」
https://knowledge.sakura.ad.jp/6174/
「Bazel」
https://bazel.build/?hl=ja
「ワークスペース、パッケージ、ターゲット | Bazel」
https://bazel.build/start?hl=ja
「bazel - Google 検索」
https://www.google.com/search?q=bazel
make,とかsoongとか色々あるけど、buildが速くなるというのは期待。
「Googleが開発する最新ビルドツール「Bazel」を使ってみよう | さくらのナレッジ 」
https://knowledge.sakura.ad.jp/6174/
「Bazel」
https://bazel.build/?hl=ja
「ワークスペース、パッケージ、ターゲット | Bazel」
https://bazel.build/start?hl=ja
「bazel - Google 検索」
https://www.google.com/search?q=bazel
調べもの:AndroidManifest.xml [Android 技術者認定試験]
Android アプリケーションのプロジェクトルートに必ず配置されるアプリケーションの設定に関するファイル。
「アプリ マニフェストの概要 | Android デベロッパー | Android Developers」
https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ja
「インテントとインテント フィルタ | Android デベロッパー | Android Developers」
https://developer.android.com/guide/components/intents-filters?hl=ja
「Android デベロッパー | Android Developers」
https://developer.android.com/guide/topics/manifest/manifest-element?hl=ja
「Android リバースエンジニアリング - Qiita」
https://qiita.com/laprasDrum/items/ab148b0475b6e82de74c
「Javaで作るAndroidアプリ (2) AndroidManifest.xml - 張りとほす女の意地や藍ゆかた 」
https://blog.goo.ne.jp/kokimurasaki/e/2d31823d4ae590b4257eb453e2a6d714
「アプリ マニフェストの概要 | Android デベロッパー | Android Developers」
https://developer.android.com/guide/topics/manifest/manifest-intro?hl=ja
「インテントとインテント フィルタ | Android デベロッパー | Android Developers」
https://developer.android.com/guide/components/intents-filters?hl=ja
「Android デベロッパー | Android Developers」
https://developer.android.com/guide/topics/manifest/manifest-element?hl=ja
「Android リバースエンジニアリング - Qiita」
https://qiita.com/laprasDrum/items/ab148b0475b6e82de74c
「Javaで作るAndroidアプリ (2) AndroidManifest.xml - 張りとほす女の意地や藍ゆかた 」
https://blog.goo.ne.jp/kokimurasaki/e/2d31823d4ae590b4257eb453e2a6d714
調べもの:init.rc Actions [Android 技術者認定試験]
init.rc で何らかのTriggerを条件に実行する一連の処理シーケンス。
Triggerに条件があり、そのあとにコマンドを列挙する。
on
「Actions」
https://android.googlesource.com/platform/system/core/+/master/init/README.md#actions
「Android OS 起動とSElinux - Qiita」
https://qiita.com/developer-kikikaikai/items/4e171c0ad43e43de353e
Triggerに条件があり、そのあとにコマンドを列挙する。
on
調べもの:WiFiSerivce(2回目) [Android 技術者認定試験]
System serviceで呼び出される。STA / APを制御する主要なメカニズム
「概要 | Android オープンソース プロジェクト | Android Open Source Project」
https://source.android.com/docs/core/connect/wifi-overview?hl=ja
WifiService.java
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/a15a2ee69156fa6fff09c0dd9b8182cb8fafde1c/service/java/com/android/server/wifi/WifiService.java
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/a15a2ee69156fa6fff09c0dd9b8182cb8fafde1c/service/java/com/android/server/wifi/WifiServiceImpl.java
「概要 | Android オープンソース プロジェクト | Android Open Source Project」
https://source.android.com/docs/core/connect/wifi-overview?hl=ja
WifiService.java
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/a15a2ee69156fa6fff09c0dd9b8182cb8fafde1c/service/java/com/android/server/wifi/WifiService.java
https://android.googlesource.com/platform/frameworks/opt/net/wifi/+/a15a2ee69156fa6fff09c0dd9b8182cb8fafde1c/service/java/com/android/server/wifi/WifiServiceImpl.java
調べもの:BroadcastReceiver実装例 [Android 技術者認定試験]
BroadcastReceiverが複数のIntentを同時に処理できるかの確認の一環と、BroadcastReceiverの実装の理解のため調べた。
どうも同時にIntent自体が発行されないように見える。
「Android BroadcastReceiver チュートリアルとサンプル - Android Examples」
https://camposha.info/android-examples/ja/android-broadcastreceiver/#gsc.tab=0
「AlarmManagerの複数登録 - Qiita」
https://qiita.com/a_chocolate/items/d9cfb82bccde9210beeb
「【Android】アプリのインストールを検知する - Smile Engineering Blog」
https://smile-jsp.hateblo.jp/entry/android/receive-app-added
「BroadcastReceiver | Android Developers」
https://developer.android.com/reference/android/content/BroadcastReceiver
「ブロードキャストの概要 | Android デベロッパー | Android Developers」
https://developer.android.com/guide/components/broadcasts?hl=ja
「反復アラームのスケジュール設定 | Android デベロッパー | Android Developers 」
https://developer.android.com/training/scheduling/alarms?hl=ja
どうも同時にIntent自体が発行されないように見える。
「Android BroadcastReceiver チュートリアルとサンプル - Android Examples」
https://camposha.info/android-examples/ja/android-broadcastreceiver/#gsc.tab=0
「AlarmManagerの複数登録 - Qiita」
https://qiita.com/a_chocolate/items/d9cfb82bccde9210beeb
「【Android】アプリのインストールを検知する - Smile Engineering Blog」
https://smile-jsp.hateblo.jp/entry/android/receive-app-added
「BroadcastReceiver | Android Developers」
https://developer.android.com/reference/android/content/BroadcastReceiver
「ブロードキャストの概要 | Android デベロッパー | Android Developers」
https://developer.android.com/guide/components/broadcasts?hl=ja
「反復アラームのスケジュール設定 | Android デベロッパー | Android Developers 」
https://developer.android.com/training/scheduling/alarms?hl=ja