【書籍】いきなりプログラミング Android アプリ開発 – サポートページ
本書を始める前に
13・30・62ページ
プロジェクト作成時に選択する Minimum SDK は API 21 を選択してください。
15ページ
プロジェクト作成後に表示される開発画面が変わりました。
書籍と同じ画面で開発をしたい方は以下の設定をしてください。コードに影響はありません。
設定方法:Android Studio Ladybug で Classic UI に戻す方法
Giraffe(書籍)
Hedgehog以降(最新版)
更新情報
2024年10月 Android Studio Ladybug での変更点
開発画面について
プロジェクト作成後に表示される開発画面が変わりました。
書籍と同じ画面で開発をしたい方は以下の設定をしてください。コードに影響はありません。
設定方法:Android Studio Ladybug で Classic UI に戻す方法
エミュレータについて
最初に用意されるエミュレータが Medium Phone になりました。
書籍に近い形で学習を進めたい方はエミュレータを作成(オススメは Pixel 3a)してください。
2024年9月 第2刷発売
おかげさまで増刷となりました!
お読みいただきありがとうございます!
2024年8月 サンプルコードの更新
付属データ(サンプルコード)が最新版 Android Studio Koala に対応しました。
>> ダウンロードはこちら(翔泳社サイト)
2024年6月 Android Studio Koala での変更点
minSDK について
書籍ではプロジェクト作成時に選択する minSDK を 19 としていますが、21 に変更してください。
これに伴い、本書124ページの53~57行目の判定式が必要なくなり、54行目のコードだけで再生できるようになります(詳しくは付属データのサンプルコード参照)。
エミュレータについて
最初に用意されるエミュレータが画面を折りたためる Pixel Fold になりました。
書籍に近い形で学習を進めたい方はエミュレータを作成(オススメは Pixel 3a)してください。
そのまま Pixel Fold を使う場合は、エミュレータ起動後にメニューから Closed を選択すると使いやすくなります。
2024年5月 Android Studio Jellyfish での変更点
アプリ実行時のエラー
アプリを実行したときに Manifest merger failed : uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library というエラーが出てしまう場合は、以下の設定をしてください。
設定はこちら→【エラー解決方法】Manifest merger failed : uses-sdk:minSdkVersion 19 cannot be smaller than version 21 declared in library
2024年4月 サンプルコードの更新
付属データ(サンプルコード)が最新版 Android Studio Iguana に対応しました。
>> ダウンロードはこちら(翔泳社サイト)
ダウンロードファイル ch05/complete/Favorites/app/src/main/res/layout/list_item.xml に
7行目 android:padding=”6dp”
が抜けていたので次回更新時に反映予定です。書籍内のコードに影響はありません。
2024年3月 Android Studio Iguana での変更点
onCreate メソッド内のコードについて
MainActivity.kt の onCreate メソッド内にコードが追加されています。
これはアプリを全画面表示(フルスクリーン)にするための設定です。
書籍と同じ画面にしたい方はコードを削除しても良いですし、そのまま残しておいても他のコードに影響はありません。
書籍
全画面表示
2023年11月 Android Studio Hedgehog 以降の変更点
インストール方法(9ページ)
・最新版のインストール方法はこちらのページをお読みください。
・テーマカラーの選択がなくなりました。テーマカラーの変更方法はこちら
開発画面について(15ページ)
インストール後の開発画面が大きく変わりました。書籍と同じ画面で開発を進めるには以下の設定をしてください。
設定方法:Android Studio Ladybug で Classic UI に戻す方法
Device Manager の開き方(17ページ)
新しい開発画面では、右側メニューの上から3つ目のアイコンをクリックして開きます。
Code / Split / Design タブの表記(25ページ)
新しい開発画面では、アイコン画像になりました。左から Code / Split / Design です。
新しいプロジェクトの作成方法(30ページ)
新しい開発画面では、画面上部のプロジェクト名をクリックして New Project を選択します。
更新・訂正
93ページ
以下のコードどちらでも可能です。
tools:src=”@tools:sample/avatars”
tools:srcCompat=”@tools:sample/avatars”
121ページ
View. を省略できるようになりました。
class MainActivity : AppCompatActivity(), View.OnClickListener {
↓
class MainActivity : AppCompatActivity(), OnClickListener {
158ページ 2行目(第2刷で修正済)
ダウンロードファイルの「ch04」→「ch05」
209ページ 最終行
誤:どちらかの値を追加し忘れたときにデータが追加されないように〜
正:どちらかの値を追加し忘れたときにデータが追加されないように〜
補足説明:
diary_date と diary_text カラムの両方が追加されていない場合、空っぽのデータを保存することになってしまいます。この場合は保存処理が無視されるように null を指定します。
困った時のチェックポイント
エミュレータでアプリが実行できない場合
アプリを実行したときに、以下のような画面が表示された場合はAn issue was found when checking AAR metadata~でアプリが実行できない場合の対処法をお読みください。
第6章 日記アプリ
- DatabaseHelper.kt の変更が反映されない(p.195)
-
DatabaseHelper.kt ではテーブルを作成しています。
テーブルを更新するコードを書かないかぎり、テーブルは最初に一度しか作成されません。
ですので、テーブル作成後にカラム名に変更を加えたり、サンプルデータに修正を加えても変更は反映されません。
この場合はエミュレータや実機からアプリを削除して再インストールしてください。
- アプリが強制終了してしまう(p.200)
-
データベースに日記を追加・表示するコードを書いてアプリを実行したときに、アプリがシャットダウン(強制終了)してしまう場合の対処法です。
DatabaseHelper.kt のコードに間違いがある可能性が高いので、コードを確認してください。
確認ポイント- カラム名(diary_date, diary_text)にスペルミスがないか
- ダブルクォーテーション ” とシングルクォーテーション ‘ が正しいか
- () を正しい位置で閉じているか
参考リンク
第0章 さあ、開発をはじめよう!
- Mac での Android Studio のインストール方法
- Android Studio 最新バージョンのインストール方法
- Android Studio のアップデート方法
- エミュレータの作成方法
- エミュレータを起動できないとき
- エミュレータの日本語化
第1章 スマホで植物を育てよう!「フラワーシミュレータ―」
第2章 感動的な画像が作れる!?「エモーショナル写真集」
- 【Android Studio】Color クラス と Resources を使った色の指定方法まとめ
- おすすめカラー選択ツール
- ColorMatrixの公式ドキュメント
- この章で使用している画像(Pixabay)
第3章 高速「寿限無」言えるかな?「早口言葉の達人」
第4章 「膃肭臍」は何と読む?「いつでもどこでも難読漢字」
参考リンクはありません。
第5章 「好き」よ、世界に届け!「マイ推し図鑑」
- Android Sharesheet の公式ドキュメント
- 使用画像(Unsplash, Pixabay, Pexels)
第6章 ボタンを押すだけ5秒で書ける!「ぜったい挫折しない日記帳」
ご質問について
本書に関するご質問・コードの不具合については、以下のコメント欄をご利用ください。
エラーに関するご質問の場合は、以下の4点をできるだけ具体的にお書きください。
- お使いのパソコン(Windows 11, macOS Ventura など)
- Android Studio のバージョン(Giraffe, Hedgehog など)
- 書籍の該当ページ
- 問題点、お試しになったこと
エラーが発生しました。
①開発環境(Windows11/edge/Android Studio Giraffe | 2022.3.1 Patch 3)
②org/gradle/tooling/BuildException(java.lang.NoClassDefFoundError:org/garadle/tooling/BuildException)
③本書のP87の上側にあるSync Now をクリックしたところ②のエラーメッセージが現れました。またタイムラインを確認したところ「Gradle sync cancelled」となっておりました。
どうしたらよいのかわかりません。解決策を教えていただけますでしょうか。
書籍をお読み頂きありがとうございます!
Android Studio の再起動はお試しになりましたか?
またインターネットに接続できていないと Gradle sync cancelled となることがあるので、こちらもご確認ください。
これでも解決しない場合はまたお知らせ頂ければと思います。
返信いただきありがとうございます。
再起動したら先のメッセージは消えました。
ただ新しい問題が発生しました。
P87のMainActivity.ktに自動的に追加されると書いてあるコードが追加されておらず次のような書かれておりました。
解決したとのこと良かったです!
新しい問題については、自動的に追加されるはずのコードですので、まず46・47ページの「自動 import の設定」を再度ご確認いただければと思います。
正しく設定しても追加されない場合は
import android.os.Bundle
は必要なコードなので残しておいて
import com.example.slider.databinding.ActivityMainBinding
だけご自身で追加してみてください。
返信ありがとうございます。
実はチャプター2の最後らへんのとこでエラーが解決できず、すべてのファイル等を削除しました。
そのためチャプター1で設定した内容も消えてしまったのかもしれません。
まずはチャプター1の内容をやり直します。
躓いた問題が解決できない場合はまた質問させていただきます。
ありがとうございました!
承知しました。
またご不明点あればお気軽にお知らせください!
いろいろバグが出てあれからあまり進んでいません。
compiledeskを最新にすることでエラーがなくなりほかのエラーが出現しました。
ちなみにテキストP90の画像が出てこず、止まっております。
エラー内容:Android resource linking failed
com.example.slider.app-mergeDebugResources-
30:/layout/activity_main.xml:23: error: ‘@tools:sample/avatars’ is incompatible with attribute src (attr) reference|color.
error: failed linking file resources.
よろしくお願いします。
P.93 一番下のチェックポイントはお試しになりましたか?
試したらエラーが解消されました。
ありがとうございました!
またお願いいたします。
次にほかの質問です。
・A newer version of androidx.core:core-ktx than 1.9.0 is available: 1.12.0
・Not targeting the latest versions of Android; compatibility modes apply. Consider testing and updating this version. Consult the android.os.Build.VERSION_CODES javadoc for details.
と右上の黄色いビックリマーク三角を押したら出てきました。
一つ目は「1.9.0」→「1.12.0」に変えたのですがこれから本書を進めるにあたり問題ありますでしょうか。
二つ目はわからなかったので何も変更は加えていませんが、ネットで調べたら別に変えなくても大丈夫と出ていましたがどうでしょうか。
【一つ目】
「1.12.0」に変えても問題ありません。
【二つ目】
こちらもこのままで問題ありません。
現在 build.gradle.kts ファイルの8・13行目の数字が33になっていると思うのですが、これを34に変更して頂くと消えるはずです。
手順:数字を 34 に変更 → 右上に表示される Sync Now を押す → 赤い波線が消えない場合は Android Studio 再起動
お世話になります。
書籍:いきなりプログラミング
第3章:早口言葉アプリについて
テキストの通りに入力したつもりですが、エラーになってしまいました。
どこが間違っているか教えていただけないでしょうか
package com.example.hayakuchi
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.speech.tts.TextToSpeech
import android.speech.tts.TextToSpeech.QUEUE_FLUSH
import android.util.Log
import android.view.View
import com.example.hayakuchi.databinding.ActivityMainBinding
import org.w3c.dom.Text
import java.sql.ClientInfoStatus
import java.util.Locale
class MainActivity : AppCompatActivity() , View.OnClickListener,TextToSpeech.OnInitListener{
private lateinit var binding: ActivityMainBinding
private lateinit var tts: TextToSpeech
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
tts = TextToSpeech(/* context = */ this@MainActivity,/* listener = */ this@MainActivity)
binding.btnFast.setOnClickListener(this)
binding.btnNormal.setOnClickListener(this)
binding.btnSlow.setOnClickListener(this)
binding.btnFast.visibility = View.INVISIBLE
binding.btnNormal.visibility = View.INVISIBLE
binding.btnSlow.visibility = View.INVISIBLE
}
override fun onInit(status: Int) {
if (status==TextToSpeech.SUCCESS){
if (tts.isLanguageAvailable(Locale.JAPAN) >=TextToSpeech.LANG_AVAILABLE){
tts.language = Locale.JAPAN
binding.btnFast.visibility = View.VISIBLE
binding.btnNormal.visibility = View.VISIBLE
binding.btnSlow.visibility = View.VISIBLE
} else{
Log.v(“MY_LOG”,“TextToSpeechの初期化成功。日本語が無効。”)
}
}else{
Log.v(“MY_LOG”,“TextToSpeechの初期化失敗。”)
}
}
override fun onClick(p0: View?) {
tts.stop()
val speakText = binding.editText.text.toString()
val rate = when(v.id){
R.id.btnFast -> 2.0F
R.id.btnSlow -> 0.5F
else -> 1.0F
}
tts.setSpeechRate(rate)
if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.LOLLIPOP){
tts.speak(speakText,TextToSpeech.QUEUE_FLUSH,null,“utteranceId”)
}else{
tts.speak(speakText,TextToSpeech.QUEUE_FLUSH,null)
}
}
override fun onDestroy(){
super.onDestroy()
tts.shutdown()
}
}
よろしくお願いいたします。
書籍をご購入いただきありがとうございます!
おそらくですが、52行目あたり
override fun onClick(p0: View?) {
を
override fun onClick(v: View) {
にしていただければ動くと思います。
これでも動かない場合は「何がどのように動かないのか」「どのようなエラーが表示されているのか」など詳細にお知らせいただければと思います。
Sara 様
ご連絡ありがとうございます。
教えていただいたように修正してみましたが、また別のエラーがでてしまいました。
エミュレータを動かした時のエラーは、以下の通りです。
Found data binding error(s):
[databinding] {“msg”:”\u003candroidx.constraintlayout.widget.ConstraintLayout id\u003d\u0027@+id/editText\u0027\u003e conflicts with another tag that has the same ID”,”file”:”app\\src\\main\\res\\layout\\activity_main.xml”,”pos”:[{“line0″:1,”col0″:0,”line1″:64,”col1”:51}]}
[databinding] {“msg”:”\u003cEditText id\u003d\u0027@+id/editText\u0027\u003e conflicts with another tag that has the same ID”,”file”:”app\\src\\main\\res\\layout\\activity_main.xml”,”pos”:[{“line0″:10,”col0″:4,”line1″:26,”col1”:48}]}
また、以下のように
58 行目の when(v.id) の v が赤文字になっている(画面上)のですが、そこが問題のような気がしますが、どうしたら赤文字でなくなるのかが分かりませんでした。
58 val rate = when(v.id){
R.id.btnFast -> 2.0F
R.id.btnSlow -> 0.5F
else -> 1.0F
}
何か対処法があればご教示ねがいます。
よろしくお願いいたします。
Akira
エラーメッセージには activity_main.xml にあるビューの id が重複していると書いてあります。
id 属性を正しく入力しているかをご確認ください。(該当ページ p.111, 118, 119 )
また v が赤文字になっている問題ですが、こちらは Android Studio の再起動をお試しください。
サポートページに載っていないようですがP158の「ダウンロードファイルの「ch04」→「work」フォルダの中にある・・・・」ですが「ch05」の誤りかと思われます。
書籍をお読み頂きありがとうございます。
また誤りについて知らせて頂きありがとうございます。確認後追記させて頂きます。
お世話になります。以下についてご質問させてください。
書籍:いきなりプログラミング
第3章:早口言葉アプリについて
①Mac/ Android Studio Iguana | 2023.2.1
②エラーはなし
③本に書いている通りにプログラミングし無事P126までいってアプリ実行に成功したのですがボタンが表示されないです。またP125のボタンを表示にするコードを消すとボタンは表示されましたが音声は再生されず。お手本用の『complete』でも再生されず解決策などあればご教示いただきたく、、
お忙しいところ恐縮ですがご確認よろしくお願いいたします。
書籍をお読みいただきありがとうございます!
私の Mac / Android Studio Iguana で動作テストしたところ音声は再生されましたので、以下ご確認いただければと思います。
P123 のコード 33・36 行目でログを表示するコードを書いています。
このログを見ると
・TextToSpeechの初期化はできているが、日本語が無効。
・TextToSpeechの初期化ができていない。
のどちらかが分かります。
ログの確認方法は画像を添付します。
またエミュレータを変えたり、Android Studio を再起動すれば解決する可能性もあるので、こちらもお試しください。
ご返信ありがとうございました。
エミュレーターを本に書いてあったAPI34 Nexus4に変更することで解決いたしました(昔設定したエミュレータのままで失礼いたしました..)。
追加でもう一点ご教示いただきたいのですがP123に書いてあった『Log』について解説したwebサイトのhttps://codeforfun.jp/book/のどの部分でしょうか?
色々探したのですが見つからず、後学のためぜひとも見てみたく、
すみませんが再度ご回答の方、何卒よろしくお願いいたします。
解決したとのこと良かったです!
Log についての記事ですが、古くなったこともあり現在非公開となっております。今月中には公開できればと思っておりますので、今しばらくお待ちください!
ご返信ありがとうございました!
承知いたしました。
1 OS:Windows10
2 Android Studio Giraffe | 2022.3.1
3 P43のエミュレーターでアプリを実行したところ、次のエラーが出て、画面が表示されません。
Cannot resolve class Linearlayout:2
Unknown attribute android:layout_main_Top:37
Element Linearlayout is not allowed here:38
1行目の頭には〇に!のマーク、2行目と3行目の頭には△に!のマーク
書籍をお読みいただきありがとうございます!
activity_main.xml に記述したコードが間違っていることが原因かと思います。
・Linearlayout は l を大文字にして LinearLayout
・layout_main_Top ではなく layout_marginTop
に修正してみてください。
ご指摘ありがとうございました。解決しましたので、報告します。
ご報告ありがとうございます。
無事解決できたとのこと良かったです!
先ほど送信したエラーメッセージの2行目の”layout_main_Top”は”layout_margin_Top”の誤りですので、訂正してください。
Windows10 Pro
Android Stufio Jellyfish 2023.3.1
48Page
val flowerImage: ImageView = findViewById(R.id.flowerImage)のお尻のflowerImageが赤字です。
エラーメッセージ?には
Unresolve reference:flowerImage
Variable ‘flowerImage’ is never used
val flowerImage: ImageView = findViewById(R.id.flowerImage)
Create id value resource ‘flowerImage’ Alt+Shift+Enter …
となっています。
importを展開すると、Button,ImageView,TestViewの3行は存在します。
どのようにすれば良いでしょうか?
書籍をお読みいただきありがとうございます!
Android Studio の再起動はお試しになりましたか?
おそらく Android Studio 側の自動処理の不具合かと思いますので、再起動で解消できるはずです。
それでも動かない場合はまたご連絡ください。
すみません。単純なミスでした。
activity_main.xmlファイルのandroid:id=”@+id/flowerImage”部分が”@+id/FlowerImage”になっていました。解決しました。
ご報告ありがとうございます。
解決したとのこと良かったです!
Android Studioのインストールを失敗した時にWindowsの標準的なAndroid Studioのアンインストールだけでうまくいきませんでした。
Android Studioを完全にアンインストールする方法を教えてください。
以下の記事をお読みください。
https://codeforfun.jp/how-to-completely-uninstall-android-studio/
このWebページの「2024年3月 Android Studio Iguana での変更点」
の内容について質問します。
enableEdgeToEdge()および
ViewCompat.setOnApplyWindowsInsetsListener(…}
部分を残して全面表示にしたい場合、
findViewById(R.id.main))のmainが赤字になります。
そのまま残しておいても大丈夫となっていますが、大丈夫なのでしょうか?
私は既に問題のコード部分を消してしまったので再現できません。
エラーのため動かなかったような記憶があります。
おそらく activity_main.xml 書いてあった id 属性を削除したことが原因かと思います。
activity_main.xml の5行目あたりに android:id="@+id/main" と追加してみてください。
分かりました。
ただ、「いきなりプログラミング」の本の36ページにも
android:id=”@+id/main”
はありません。私が間違って消してしまったのでは無いようです。
android:id="@+id/main"
も全画面表示に使うコードで書籍の執筆時点では存在しなかったため36ページには未記載となっております。
一部コードが異なっていることご理解ご了承いただければと思います。
なるほど。
でも、このWebページの「2024年3月 Android Studio Iguana での変更点」の問題のコードのmainも赤字のように見えます。
Android Studioをリセットすれば自動で修正してくれると思っていたのですが、そうではないみたいですね。
ウェブページの該当箇所は[紫]です。
画像の影響かもしれませんが、Android Studio 上では色の違いが分かるかと思います。
もちろんコードが間違っている場合は自動的に修正されませんが、コードを正しく書いているのに赤字(エラー)になることもあります。その場合は Android Studio の再起動をお試しください。
このあたりは開発に慣れてくると自然に身についてくるので、あまり気にせずに進めていただければと思います!
Android Studioを完全アンインストールして再度確認しました。
結論から言いますと、
activity_main.xmlにandroid:id=”@+id/main”は存在しました。
私のミスでした。
多分、android:id=”@+id/main”の意味が分からないまま、
テキストの36ページと同じ内容にするために削除したと思われます。
この時にコメントアウトすれば良かったのですが、Kotlinは全くの初心者なのでひたすらテキスト通りにすることに集中していたのだと思います。すみませんでした。
確認できたとのこと良かったです。
最近 Android Studio の更新頻度が高いので、書籍と変わってしまっている箇所もあるかと思います。
分かりにくい箇所などあれば、お気軽にお知らせください!
お世話になっています。
P.45のコードを入力すると、13と14行目の:と=の下に赤い波線が表示されます。
そのままP.50まで進めてエミュレーターを実行すると下記のエラーが表示されます。
e: file:///C:/Users/moonl/AndroidStudioProjects/Flower/app/src/main/java/com/example/flower/MainActivity.kt:25:21 Expecting an element
どうしたら良いでしょうか?
MainActivityのコードは下記の通りです。
書籍をお読みいただきありがとうございます!
以下のコードの val が Val と大文字になっていることが原因かと思いますので、こちら修正してみてください。
Val waterBtn: Button = findViewById(R.id.waterBtn)
Val resetBtn: Button = findViewById(R.id.resetBtn)
また
MessageView.text = "$count"
も messageView と先頭が小文字になるのでご注意ください。
早いご回答ありがとうございます。
できました!
解決したとのこと良かったです!
windows11を使用。Andoroid Studioとエミュレータはインストール済みです。
P217に「実機でアプリを動かそう!」とありますが、P226の手順3「接続完了」によると、「正しく接続されると実機を指定してアプリを実行できるようになります。実機でアプリを実行する場合は、エミュレータを使う場合と同じくAndroid Studio上で「➡」ボタンをクリックします。」とありますが、
普通のスマホアプリのように、実機にアプリをインストールして、スマホ単独でアプリを実行出来るようには、出来ないのでしょうか。もし出来るのであれば、その方法を教えてください。
書籍をお読みいただきありがとうございます!
実機でアプリを実行していただければ、その後はスマホ単独でアプリを利用できるようになります。
常にAndroid Studioを接続しておく必要はないので、普通のスマホアプリのようにご利用いただけます。
書籍購入させて頂きました。31ページまで順調でしたが、
32ページの画像ファイルがdrawableのフォルダの中にありませんでした。
なぜ発見できないのか教えてください。
また、他の検索方法や別のダウンロード先など画像を取得する方法を教えてください。
どうぞよろしくお願いいたします。
書籍をご購入いただきありがとうございます!
画像を drawable フォルダに置いたのに見つけることができないということでしょうか?
その場合は Android Studio の再起動をお試しください。
画像を drawble フォルダに置いていない場合は、本書のダウンロードファイルに含まれているので、以下のページよりダウンロードをお願いいたします。
https://www.shoeisha.co.jp/book/download/9784798178998
drawable フォルダへの画像の追加手順は31・32ページをご確認ください。
何かご不明点ありましたら、お気軽にお知らせください。
迅速なご回答、心より御礼申し上げます!
解決致しました。
今後もどうぞよろしくお願いいたします。
解決したとのこと良かったです!
引き続きアプリ開発を楽しんでいただければ幸いです。