Submit Search
Upload
Android カスタムROMの作り方
•
29 likes
•
42,267 views
M
Masahiro Hidaka
Follow
カスタムROMハッカソンでの成果をまとめました。 with @chun_ryo @furusin_oriver @c1e @rey_k @hamatzさん です!
Read less
Read more
Technology
Report
Share
Report
Share
1 of 31
Download now
Download to read offline
Recommended
Android起動周りのノウハウ
Android起動周りのノウハウ
chancelab
カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroid
android sola
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
akkuma
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
「Android案件できます」って言ったら、ヒドい目にあった話
「Android案件できます」って言ったら、ヒドい目にあった話
Kenta Komori
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid
demuyan
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
Recommended
Android起動周りのノウハウ
Android起動周りのノウハウ
chancelab
カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroid
android sola
ミクシィ 21卒向け Android研修
ミクシィ 21卒向け Android研修
akkuma
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Androidの新ビルドシステム
Androidの新ビルドシステム
l_b__
「Android案件できます」って言ったら、ヒドい目にあった話
「Android案件できます」って言ったら、ヒドい目にあった話
Kenta Komori
基礎から学ぶ組み込みAndroid
基礎から学ぶ組み込みAndroid
demuyan
FridaによるAndroidアプリの動的解析とフッキングの基礎
FridaによるAndroidアプリの動的解析とフッキングの基礎
ken_kitahara
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
ベロシティを上手く使って 技術的負債を計画的に解消する
ベロシティを上手く使って 技術的負債を計画的に解消する
Koichiro Matsuoka
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界
Daisuke Tsutsumi
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
Taisuke Yamada
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
例外設計における大罪
例外設計における大罪
Takuto Wada
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
async/await のしくみ
async/await のしくみ
信之 岩永
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
Satoshi Kubo
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
健一 茂木
More Related Content
What's hot
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
Hajime Yanagawa
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
土岐 孝平
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
ベロシティを上手く使って 技術的負債を計画的に解消する
ベロシティを上手く使って 技術的負債を計画的に解消する
Koichiro Matsuoka
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界
Daisuke Tsutsumi
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
Taisuke Yamada
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
例外設計における大罪
例外設計における大罪
Takuto Wada
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
なおき きしだ
async/await のしくみ
async/await のしくみ
信之 岩永
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
Satoshi Kubo
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
initとプロセス再起動
initとプロセス再起動
Takashi Takizawa
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
JustSystems Corporation
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
What's hot
(20)
モジュールの凝集度・結合度・インタフェース
モジュールの凝集度・結合度・インタフェース
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
ベロシティを上手く使って 技術的負債を計画的に解消する
ベロシティを上手く使って 技術的負債を計画的に解消する
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Android enterpriseで実現できる端末管理の世界
Android enterpriseで実現できる端末管理の世界
Introduction to Initramfs - Initramfs-tools and Dracut
Introduction to Initramfs - Initramfs-tools and Dracut
メタプログラミングって何だろう
メタプログラミングって何だろう
例外設計における大罪
例外設計における大罪
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Java8でRDBMS作ったよ
Java8でRDBMS作ったよ
async/await のしくみ
async/await のしくみ
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
initとプロセス再起動
initとプロセス再起動
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
「書ける」から「できる」になれる! ~Javaメモリ節約ノウハウ話~
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Similar to Android カスタムROMの作り方
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
健一 茂木
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
Wataru NOGUCHI
0621 ndk game
0621 ndk game
cat kaotaro
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
android sola
日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)
eijikushida
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
akira6592
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
ngCore engine for mobage platform
ngCore engine for mobage platform
Toru Yamaguchi
Andoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かす
shobomaru
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Takako Miyagawa
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!
Tanaka Yuichi
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
akira6592
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
DNA Data Bank of Japan center
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
Hiromu Yakura
DroidKaigi2016 windows環境での効率的なアプリ開発手法
DroidKaigi2016 windows環境での効率的なアプリ開発手法
tkawashita
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
Yahoo!デベロッパーネットワーク
Similar to Android カスタムROMの作り方
(20)
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
Java ScriptでつくるはじめてのiPhoneAndroidゲーム開発体験ハンズオン
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
0621 ndk game
0621 ndk game
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
日本Androidの会のハンズオンセミナー資料(20130315)
日本Androidの会のハンズオンセミナー資料(20130315)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
ngCore engine for mobage platform
ngCore engine for mobage platform
Andoird版OpenCVのJavaサンプルを動かす
Andoird版OpenCVのJavaサンプルを動かす
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~(2017/08/18追加開催)
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
SEAndroid -AndroidのアーキテクチャとSE化について-
SEAndroid -AndroidのアーキテクチャとSE化について-
DroidKaigi2016 windows環境での効率的なアプリ開発手法
DroidKaigi2016 windows環境での効率的なアプリ開発手法
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
More from Masahiro Hidaka
DroidKaigi 2019 WelcomeTalk
DroidKaigi 2019 WelcomeTalk
Masahiro Hidaka
Google I/O 2018 KeynoteとDeveloper KeynoteのOverview
Google I/O 2018 KeynoteとDeveloper KeynoteのOverview
Masahiro Hidaka
DroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 Android Back to the Future
Masahiro Hidaka
DroidKaigi 2018 WelcomeTalk
DroidKaigi 2018 WelcomeTalk
Masahiro Hidaka
KotlinConf Recap
KotlinConf Recap
Masahiro Hidaka
Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017
Masahiro Hidaka
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
Masahiro Hidaka
Google I/O 2017 Extended: Android O And Android Studio
Google I/O 2017 Extended: Android O And Android Studio
Masahiro Hidaka
Google I/O 報告会 Overview
Google I/O 報告会 Overview
Masahiro Hidaka
DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02
Masahiro Hidaka
DroidKaigi 2017 welcometalk DAY01
DroidKaigi 2017 welcometalk DAY01
Masahiro Hidaka
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
Masahiro Hidaka
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Masahiro Hidaka
DroidKaigi - Welcome talk
DroidKaigi - Welcome talk
Masahiro Hidaka
Android Studio First Step Guide
Android Studio First Step Guide
Masahiro Hidaka
Anroid Design Guide 3つのポイント
Anroid Design Guide 3つのポイント
Masahiro Hidaka
Gecko入門 - Introduction to Gecko -
Gecko入門 - Introduction to Gecko -
Masahiro Hidaka
新版 OutOfMemoryErrorを知る
新版 OutOfMemoryErrorを知る
Masahiro Hidaka
Fxos lt1 shino_merry_mhidaka
Fxos lt1 shino_merry_mhidaka
Masahiro Hidaka
書籍制作でReVIEWを使う実践ワークフロー
書籍制作でReVIEWを使う実践ワークフロー
Masahiro Hidaka
More from Masahiro Hidaka
(20)
DroidKaigi 2019 WelcomeTalk
DroidKaigi 2019 WelcomeTalk
Google I/O 2018 KeynoteとDeveloper KeynoteのOverview
Google I/O 2018 KeynoteとDeveloper KeynoteのOverview
DroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 Android Back to the Future
DroidKaigi 2018 WelcomeTalk
DroidKaigi 2018 WelcomeTalk
KotlinConf Recap
KotlinConf Recap
Android Things Latest News / Aug 25, 2017
Android Things Latest News / Aug 25, 2017
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
コミュニティ活動と企業の相互作用 ~コミュニティへの貢献と組織活動への還元~
Google I/O 2017 Extended: Android O And Android Studio
Google I/O 2017 Extended: Android O And Android Studio
Google I/O 報告会 Overview
Google I/O 報告会 Overview
DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY02
DroidKaigi 2017 welcometalk DAY01
DroidKaigi 2017 welcometalk DAY01
Androidアプリのストレージ戦略
Androidアプリのストレージ戦略
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
Developers Summit 2017 17-A-7 執筆を支える技術と技術書のトレンド
DroidKaigi - Welcome talk
DroidKaigi - Welcome talk
Android Studio First Step Guide
Android Studio First Step Guide
Anroid Design Guide 3つのポイント
Anroid Design Guide 3つのポイント
Gecko入門 - Introduction to Gecko -
Gecko入門 - Introduction to Gecko -
新版 OutOfMemoryErrorを知る
新版 OutOfMemoryErrorを知る
Fxos lt1 shino_merry_mhidaka
Fxos lt1 shino_merry_mhidaka
書籍制作でReVIEWを使う実践ワークフロー
書籍制作でReVIEWを使う実践ワークフロー
Recently uploaded
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Recently uploaded
(9)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Android カスタムROMの作り方
1.
techbooster.org
日高正博 1
2.
組込エンジニアです? Androidとか 関西が生息圏です techbooster.org みてね Twitter Account @mhidaka 2
3.
Android ADK 組込み プログラミング完全ガイド 執筆しました! 発売中です 電子工作、クラウド連携 がAndroidで出来るよう になりました 3
4.
Androidをカスタマイズ? VPSでビルドしてみよう ほしいAndroidを作ろう
4
5.
カスタムROMの紹介
5
6.
AOSPが提供するソースコードがベース ◦ 通知バーへのWiFiトグル追加などオリジナル機能を提供 ◦ コミュニティが主体となって開発 6
7.
Android Open Source
Project(AOSP)が管理 • コントリビュータ、メーカーエンジニアが改善を提案したり、Forkして 自社製品開発したり。 Google Inner Android Open Source Project コントリビューター Fork メーカー, CustomROM Developer 7
8.
Androidの利点を生かしたまま機能を追加 ◦ システムレベルのメニュー追加、テーマチェンジ ◦ 自分の思うAndroidが作れます! 8
9.
SIMは差さないでください •電波法に触れる可能性が高いです アプリに注意 •Google Mobile Serviceのようなプロプライエタリなアプリケーションの利用
に注意してください。 •変なところからダウンロードしちゃだめです。カスタムROMを使う端末にもと もと入っているアプリを利用を推奨 キャリアやメーカー独自の機能は使えなくなるよ •そもそも保証が無くなるので自己責任のもと実施しましょう 9
10.
カスタマイズしやすい機種 • Galaxy Nexus
/ Nexus S / Nexus One など。 (Googleリファレンス機。おすすめは Galaxy Nexus) メリット • 場合によってはメーカー製Androidよりも安定。追加機能も。 • CyangenModはOSのアップデーターを標準化 • JCROMならシステムレベルのテーマ設定 デメリット • 著作権など法令には注意してね。 目的と異なってダーティなイメージがつくのは良くないです。 10
11.
VPS編
11
12.
ソースコードをビルドしてAndroidの実行イメージを作 成する手順を紹介します AOSP CyanogenMod JCROM Pure Android 12
13.
ビルド環境構築の敷居が異様に高い・・・ パフォーマンス ネットワーク Linux OS • Core i7 QuadCore • ソースコードのダウン • 普通の人は使わない CPU ロードには数時間が OS 必要 • Ubuntu 12.04 • 広大なメモリ空間 16GB,24GB • 最新のAndroidソー 64bit スコードが公開される • SSD • コマンドライン… ごと。 高速ストレージが 256GBは欲しい • たまに落ちてこない そこにシビれたり 、あこがれたりできない…(´・ω・`) 13
14.
元ネタは「ようかんマン」でぐぐってね
14
15.
クラウドの仮想PCを利用することで 初期費用を抑えてビルド環境が作れる 仮想PC 自宅で構築 メンテナンスフリー 手元にあるので安心 高速ネットワーク 通信は既存でOK 手軽に構築/破棄 用途は転用可能 基本的に趣味 そもそも作るのが楽しい 15
16.
カスタムROMハッカソンでGMOさんにVPSをもらったので使ってみました。 その分割り引いて見てね ちょっと使ってみるならAmazon EC2をおすすめ。 VPS使うのはガチ勢だけでは… • インスタンス型 • ~月額7980円 • ~月額15,880円 • 1時間0.6ドル程度 • 6CPU/8GB/800GB • 10CPU/16GB/1TB Amazon さくらインター GMO(お名 EC2 ネット 前.com) 16
17.
作業ディレクトリの準備 $ mkdir -p ~/jcrom_work $ export ANDROID_ROOT=~/jcrom_work ソースコードのダウンロード $ cd $ANDROID_ROOT $ repo init -u https://bitbucket.org/sola/jcrom_manifest -m jcrom_jb-master.xml $ repo sync –j8 通常、数時間かかるところがVPSだと30分で終わり! ちなみにプロキシ有りネットワークだと1日かかるorz https://sites.google.com/site/jcromproject/home 17
18.
ソースコードの無いバイナリファイルのダウンロード $ wget https://dl.google.com/dl/android/aosp/broadcom-maguro- jro03h-4cc54d09.tgz $ wget https://dl.google.com/dl/android/aosp/imgtec-maguro- jro03h-827bcb4c.tgz $ wget https://dl.google.com/dl/android/aosp/invensense-maguro- jro03h-682067a4.tgz $ wget https://dl.google.com/dl/android/aosp/samsung-maguro- jro03h-0655880b.tgz $ tar zxvf broadcom-maguro-jro03h-4cc54d09.tgz $ tar zxvf imgtec-maguro-jro03h-827bcb4c.tgz $ tar zxvf invensense-maguro-jro03h-682067a4.tgz $ tar zxvf samsung-maguro-jro03h-0655880b.tgz $ ./extract-broadcom-maguro.sh $ ./extract-imgtec-maguro.sh $ ./extract-invensense-maguro.sh $ ./extract-samsung-maguro.sh https://sites.google.com/site/jcromproject/home18
19.
端末から必要なファイルを吸い出す $ cd $ANDROID_ROOT/jcrom/samsung/maguro/proprietary/ $ ./extract-files.sh ccache の設定 設定しておくと、2回目以降のビルド時間を短縮出来る。 $ export USE_CCACHE=1 $ $ANDROID_ROOT/prebuilts/misc/linux-x86/ccache/ccache -M 50G ※Galaxy Nexusの場合、端末からデータを取り出す必要があります VPS上では出来ないので注意 https://sites.google.com/site/jcromproject/home19
20.
Androidのビルド $ cd $ANDROID_ROOT $ source build/envsetup.sh $ lunch full_maguro-userdebug $ make –j16 GMOのVPSではj16オプションを付けて、初回ビルド37分でした Xeon 8コア論理16 / 24GBマシンで25分、普通のPCなら数時間コース recovery mode で書き込む為のデータを作成する $ cd $ANDROID_ROOT $ make otapackage https://sites.google.com/site/jcromproject/home20
21.
カスタムROMハッカソン編
21
22.
Androidをカスタマイズするチャレンジングなハッカソン。 そもそもビルドに数時間…ということでVPSの出番 22
23.
23
24.
大きなお友達のハートをがっちりつかむケータイがほしい AKBフォンとか。プリキュアフォンとか。ROMの入れ替えで変身できるのであれば需要があるかも?
ちょっと、おちつけ。 でも機能をカスタマイズできるのは良いかもしれない。 ソフトウェアキーで機能を割り当てるとかどう? あ、いいかも。アプリごとに動きを変えるとか? 固定じゃ無くて色々変更したいし、動きを決めるのは面倒だからサジェストしたい 24
25.
Android フレームワークを変更して、ボタンを追加する 単純なボタンではなく動作を決めたい サジェストできるようにボタン押下イベントが欲しい • たとえばどんな風に動きを変えたい? •
Mapをみてるなら特定の場所からの一発ルート検索 • ウェブサイトを見てれば特定の言葉で検索 • YouTubeなら動画、ツイッターならハッシュタグをみるなど 25
26.
SystemUI.apk ◦ 画面全体を提供している特殊な アプリケーション イメージ図 Application キ ー イ SystemUI ベ ン ト の 通 フレームワーク 知 26
27.
ハードウェアキー ◦ Home、Backキーなどは キーコードが割り当てられ Application ている <Serviceを追加> ソフトウェアキー SystemUI ◦ 通知はハードウェアと違い、 独自のインテントを イベント化されている <ボタン追加> 発行する。 インテントを使うメリット アプリ側で動作を規 定できるメリット ◦ アプリ側で動作を決められ フレームワーク る。アップデートできる。入 れ替えもできる。 27
28.
SystemUI¥src¥com¥android¥systemui¥statusbar¥phone¥ PhoneStatusBar.java private View.OnClickListener mMomokuroClickListener = new View.OnClickListener() { public void onClick(View v) { Intent intent = new Intent(); intent.setAction("net.momoclo.action.SUGGEST"); v.getContext().sendBroadcast(intent); } }; カスタムキー用のonClickListnerを作成 独自の暗黙的インテントをブロードキャストする ※この場所でこの実装で正しいかはNoっぽい 28
29.
SystemUI¥src¥com¥android¥systemui¥statusbar¥phone¥ PhoneStatusBar.java private void prepareNavigationBarView() { mNavigationBarView.reorient(); mNavigationBarView.getRecentsButton() .setOnClickListener(mRecentsClickListener); mNavigationBarView.getRecentsButton() .setOnTouchListener(mRecentsPanel); mNavigationBarView.getExpandButton() .setOnClickListener(mExpandClickListener); mNavigationBarView.getMomokuroButton() .setOnClickListener(mMomokuroClickListener); mNavigationBarView.getHomeButton() .setOnTouchListener(mHomeSearchActionListener); updateSearchPanel(); } 29
30.
public class WhatsTop
extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { ComponentName name = Util.getTopActivity(arg0); Intent intent = new Intent(Intent.ACTION_SEARCH); PackageManager manager = arg0.getPackageManager(); List<ResolveInfo> list = manager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); try{ for(int i = 0; i < list.size(); i++){ ResolveInfo info = list.get(i); String packageName = info.activityInfo.packageName; if(packageName.equals(name.getPackageName())){ android.util.Log.e("debug", "たいおうしています!"); intent.setComponent(name); intent.putExtra("query", "ももくろ"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); arg0.startActivity(intent); suggested = true; break; } if(!suggested){ Toast.makeText(arg0, "ももくろ関連情報はみつかりません", Toast.LENGTH_SHORT).show(); } } 30
31.
ね、簡単でしょう? カスタマイズに興味を持った人はチャレンジしてください! カスタムROMハッカソンの成果は • @chun_ryo @furusin_oriver
@c1e @rey_k @hamatzさんたちと 一緒にやりました! 31
Download now