書籍

【書籍】いきなりプログラミング Android アプリ開発 – サポートページ

Sara

本書を始める前に

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章 日記アプリ
Q
DatabaseHelper.kt の変更が反映されない(p.195)

DatabaseHelper.kt ではテーブルを作成しています。

テーブルを更新するコードを書かないかぎり、テーブルは最初に一度しか作成されません。

ですので、テーブル作成後にカラム名に変更を加えたり、サンプルデータに修正を加えても変更は反映されません。

この場合はエミュレータや実機からアプリを削除して再インストールしてください。

Q
アプリが強制終了してしまう(p.200)

データベースに日記を追加・表示するコードを書いてアプリを実行したときに、アプリがシャットダウン(強制終了)してしまう場合の対処法です。

DatabaseHelper.kt のコードに間違いがある可能性が高いので、コードを確認してください。

確認ポイント
  • カラム名(diary_date, diary_text)にスペルミスがないか
  • ダブルクォーテーション ” とシングルクォーテーション ‘ が正しいか
  • () を正しい位置で閉じているか

参考リンク

第0章 さあ、開発をはじめよう!

第1章 スマホで植物を育てよう!「フラワーシミュレータ―」

第2章 感動的な画像が作れる!?「エモーショナル写真集」

第3章 高速「寿限無」言えるかな?「早口言葉の達人」

第4章 「膃肭臍」は何と読む?「いつでもどこでも難読漢字」

参考リンクはありません。

第5章 「好き」よ、世界に届け!「マイ推し図鑑」

第6章 ボタンを押すだけ5秒で書ける!「ぜったい挫折しない日記帳」

ご質問について

本書に関するご質問・コードの不具合については、以下のコメント欄をご利用ください。

エラーに関するご質問の場合は、以下の4点をできるだけ具体的にお書きください。

  1. お使いのパソコン(Windows 11, macOS Ventura など)
  2. Android Studio のバージョン(Giraffe, Hedgehog など)
  3. 書籍の該当ページ
  4. 問題点、お試しになったこと
Subscribe
Notify of
guest
51 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
プログラミング初心者
プログラミング初心者
10 months ago

エラーが発生しました。
①開発環境(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」となっておりました。
どうしたらよいのかわかりません。解決策を教えていただけますでしょうか。

プログラミング初心者
プログラミング初心者
10 months ago
Reply to  Sara

返信いただきありがとうございます。
再起動したら先のメッセージは消えました。
ただ新しい問題が発生しました。
P87のMainActivity.ktに自動的に追加されると書いてあるコードが追加されておらず次のような書かれておりました。

import android.os.Bundle

自分で書き直したほうがよろしいでしょうか?
プログラミング初心者
プログラミング初心者
10 months ago
Reply to  Sara

返信ありがとうございます。
実はチャプター2の最後らへんのとこでエラーが解決できず、すべてのファイル等を削除しました。
そのためチャプター1で設定した内容も消えてしまったのかもしれません。
まずはチャプター1の内容をやり直します。
躓いた問題が解決できない場合はまた質問させていただきます。
ありがとうございました!

プログラミング初心者
プログラミング初心者
9 months ago
Reply to  Sara

いろいろバグが出てあれからあまり進んでいません。
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.

よろしくお願いします。

プログラミング初心者
プログラミング初心者
9 months ago
Reply to  Sara

試したらエラーが解消されました。
ありがとうございました!
またお願いいたします。

プログラミング初心者
プログラミング初心者
10 months ago

次にほかの質問です。
・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」に変えたのですがこれから本書を進めるにあたり問題ありますでしょうか。
二つ目はわからなかったので何も変更は加えていませんが、ネットで調べたら別に変えなくても大丈夫と出ていましたがどうでしょうか。

AKIRA
AKIRA
8 months ago

お世話になります。
書籍:いきなりプログラミング
第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()
}
}

よろしくお願いいたします。

AKIRA
AKIRA
8 months ago
Reply to  Sara

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

初心者
初心者
7 months ago

サポートページに載っていないようですがP158の「ダウンロードファイルの「ch04」→「work」フォルダの中にある・・・・」ですが「ch05」の誤りかと思われます。

H.R
H.R
7 months ago

お世話になります。以下についてご質問させてください。
書籍:いきなりプログラミング
第3章:早口言葉アプリについて
①Mac/ Android Studio Iguana | 2023.2.1
②エラーはなし
③本に書いている通りにプログラミングし無事P126までいってアプリ実行に成功したのですがボタンが表示されないです。またP125のボタンを表示にするコードを消すとボタンは表示されましたが音声は再生されず。お手本用の『complete』でも再生されず解決策などあればご教示いただきたく、、
お忙しいところ恐縮ですがご確認よろしくお願いいたします。

H.R
H.R
7 months ago
Reply to  Sara

ご返信ありがとうございました。
エミュレーターを本に書いてあったAPI34 Nexus4に変更することで解決いたしました(昔設定したエミュレータのままで失礼いたしました..)。

追加でもう一点ご教示いただきたいのですがP123に書いてあった『Log』について解説したwebサイトのhttps://codeforfun.jp/book/のどの部分でしょうか?
色々探したのですが見つからず、後学のためぜひとも見てみたく、
すみませんが再度ご回答の方、何卒よろしくお願いいたします。

H.R
H.R
6 months ago
Reply to  Sara

ご返信ありがとうございました!
承知いたしました。

kazumasa.w
kazumasa.w
6 months ago

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行目の頭には△に!のマーク

kazumasa.w
kazumasa.w
6 months ago
Reply to  Sara

ご指摘ありがとうございました。解決しましたので、報告します。

kazumasa.w
kazumasa.w
6 months ago

先ほど送信したエラーメッセージの2行目の”layout_main_Top”は”layout_margin_Top”の誤りですので、訂正してください。

NORI
NORI
4 months ago

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行は存在します。

どのようにすれば良いでしょうか?

NORI
NORI
4 months ago
Reply to  Sara

すみません。単純なミスでした。
activity_main.xmlファイルのandroid:id=”@+id/flowerImage”部分が”@+id/FlowerImage”になっていました。解決しました。

NORI
NORI
4 months ago

Android Studioのインストールを失敗した時にWindowsの標準的なAndroid Studioのアンインストールだけでうまくいきませんでした。
Android Studioを完全にアンインストールする方法を教えてください。

NORI
NORI
4 months ago

このWebページの「2024年3月 Android Studio Iguana での変更点」
の内容について質問します。

enableEdgeToEdge()および
ViewCompat.setOnApplyWindowsInsetsListener(…}
部分を残して全面表示にしたい場合、
findViewById(R.id.main))のmainが赤字になります。

そのまま残しておいても大丈夫となっていますが、大丈夫なのでしょうか?
私は既に問題のコード部分を消してしまったので再現できません。
エラーのため動かなかったような記憶があります。

NORI
NORI
4 months ago
Reply to  Sara

分かりました。
ただ、「いきなりプログラミング」の本の36ページにも
android:id=”@+id/main”
はありません。私が間違って消してしまったのでは無いようです。

NORI
NORI
4 months ago
Reply to  Sara

なるほど。
でも、このWebページの「2024年3月 Android Studio Iguana での変更点」の問題のコードのmainも赤字のように見えます。
Android Studioをリセットすれば自動で修正してくれると思っていたのですが、そうではないみたいですね。

NORI
NORI
4 months ago
Reply to  Sara

Android Studioを完全アンインストールして再度確認しました。
結論から言いますと、
activity_main.xmlにandroid:id=”@+id/main”は存在しました。
私のミスでした。
多分、android:id=”@+id/main”の意味が分からないまま、
テキストの36ページと同じ内容にするために削除したと思われます。
この時にコメントアウトすれば良かったのですが、Kotlinは全くの初心者なのでひたすらテキスト通りにすることに集中していたのだと思います。すみませんでした。

とおる
とおる
4 months ago

お世話になっています。
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のコードは下記の通りです。

package com.example.flower

import android.os.Bundle
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.activity_main)
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
            val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
            insets
        }


        val messageView: TextView = findViewById(R.id.messageView)
        val flowerImage: ImageView = findViewById(R.id.flowerImage)
        Val waterBtn: Button = findViewById(R.id.waterBtn)
        Val resetBtn: Button = findViewById(R.id.resetBtn)

        var count = 0
        water Btn.setOnClickListener {
            count++
            MessageView.text = "$count"
        }

    }
}
とおる
とおる
4 months ago
Reply to  Sara

早いご回答ありがとうございます。
できました!

谷尻和彦
谷尻和彦
2 months ago

windows11を使用。Andoroid Studioとエミュレータはインストール済みです。
P217に「実機でアプリを動かそう!」とありますが、P226の手順3「接続完了」によると、「正しく接続されると実機を指定してアプリを実行できるようになります。実機でアプリを実行する場合は、エミュレータを使う場合と同じくAndroid Studio上で「➡」ボタンをクリックします。」とありますが、
普通のスマホアプリのように、実機にアプリをインストールして、スマホ単独でアプリを実行出来るようには、出来ないのでしょうか。もし出来るのであれば、その方法を教えてください。

初めてのAndroid開発
初めてのAndroid開発
1 month ago

書籍購入させて頂きました。31ページまで順調でしたが、
32ページの画像ファイルがdrawableのフォルダの中にありませんでした。
なぜ発見できないのか教えてください。
また、他の検索方法や別のダウンロード先など画像を取得する方法を教えてください。
どうぞよろしくお願いいたします。

初めてのAndroid開発
初めてのAndroid開発
1 month ago
Reply to  Sara

迅速なご回答、心より御礼申し上げます!
解決致しました。
今後もどうぞよろしくお願いいたします。

ABOUT ME
Sara
Sara
運営者
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

POINT 01

動くコード

プログラミングの文法を学んでも、そこからどのようにアプリ開発ができるのかイメージが湧きにくいものです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなどアプリとして機能するものを作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

受講期限もないので、いつでも前のレッスンに戻ることができるので安心です。

お申し込みしたその日からすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

51
0
この記事にコメントするx
記事URLをコピーしました