質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

503閲覧

android.database.sqliteはAPI 28では使用可能ですか?

nnnnn

総合スコア26

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1グッド

2クリップ

投稿2018/08/10 21:37

編集2018/08/12 14:11

前提・実現したいこと

Android Studioを使用し、アプリ開発中です。

android.database.sqliteは
数日前にリリースされた「Android 9 Pie」(API 28)では
使用可能でしょうか?

今まで使用していて、
特にエラーなど発生していない方がいらっしゃったら
教えていただけるとありがたいです。

以下にAPI27までについては記載があるのですが
それ以降について見つけることができないため、
質問させていただきました。
https://developer.android.com/reference/android/database/sqlite/package-summary

発生している問題・エラーメッセージ

今まで動いたアプリについて、
「Android 9 Pie」(API 28)のエミュレータでテストしたところ
sqlite関係でエラーが出てアプリが落ちてしまうようになりました。

関わる部分が多く、まだエラー対象となる箇所の目処がつかないため
ここに該当箇所のソースを載せることができない状況なのですが、

android.database.sqlite自体、
「Android 9 Pie」(API 28)では使えないという事なのではと思い
調査しているものの、結果が出せずにいる状況です。

試したこと

同じような症状が出ている場合があるか
検索してみたところ、
以下が近い状況でした。
http://smartinfocare.com/blog/sqlite-error-no-such-table-if-executing-in-api-28-android-p/

API28でテストしてみたところ、下記のようなエラーメッセージが出ます。
android.database.sqlite.SQLiteException: no such table: FIELDS (code 1 SQLITE_ERROR)……

追記(20180812)

android.database.sqlite自体がAPI28で使用できない訳ではなく、
その他に問題がある可能性が高い事がわかったため、
こちらで現状のソースなどを元に、再度質問させていただいております。
https://teratail.com/questions/140951?modal=q-comp
詳細な解決方法が分かり次第、こちらの質問も含め
ベストアンサーを決めさせていただきたいと思います。

補足情報(FW/ツールのバージョンなど)

MacOS High Sierraにて制作
Android Studio 3.1.4
java

milkteas👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnnnn

2018/08/11 01:46

質問についてコメントいただき、ありがとうございます! Android 9を入れた端末でアプリを使えるようにするためには、API28でのテストが必須と思い込んでいました。そうではなく、例えばtargetSdkVersionが27や26のままでも、Android 9に対応できるものでしょうか?
guest

回答2

0

Android 9を入れた端末でアプリを使えるようにするためには、API28でのテストが必須と思い込んでいました。

いい質問ですね~
今年の8月から新しいアプリは
targetSdkVersionは26以上にしないといけなくなりました
そのターゲットは順次(Google次第で)上がっていくようです
現状は26

Android 9が出た時に、多分今年の秋?であれば
まだ
targetSdkVersionは26以上で大丈夫です

当然ですが
Android 9 の新しい機能を使いたい場合は
あるいは機能が変わるAPIを使うケースでは
それに対応する必要があります

残念ながら、今の開発段階のリリースに合わせても
最終リリースで変わる可能性がありますから
2度手間になりかねません

常に最新に対応しないといけない開発者の方々は
大変でしょうけれども

投稿2018/08/11 01:58

編集2018/08/11 02:32
aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnnnn

2018/08/11 02:42

素早い回答、ありがとうございます! そうすると、 現状、targetSdkVersionが26の状態で問題なく動けば Android 9端末でも問題なく使えるという認識で あっていますでしょうか? 私の制作しているアプリでは、今までは targetSdkVersionは23にしており、 それ以降の新しい機能は今の所使う予定はありません。 先程のURLにAPI28が載っていなかったため、 SQLite自体、 Android 9を入れた端末ではしばらく 使えないものかと思いこみ、 数日前にリリースされたAndroid 9に対応するために SQLite自体を使わない方法に ここ数日でアプリを書き換えなければならないかと 思い、焦っていたので、 今回、回答をいただく事ができて、大変ありがたいです。
aja

2018/08/11 04:02

>Android 9端末でも問題なく使える それは分かりませんが、多分大丈夫でしょう targetSdkVersionを27にして 28のエミュレータで試すとか Pixelを持っている人にアップデートしてもらって確認するとか こちらで簡単なテストをしてみましたが問題はありませんでした 但し 「query」は試していません 質問で挙げられているこれと同じ状態かもしれませんね http://smartinfocare.com/blog/sqlite-error-no-such-table-if-executing-in-api-28-android-p/ Issue Tracker にレポートしてはどうでしょうか https://issuetracker.google.com/issues/new?component=190923&template=841312
nnnnn

2018/08/11 05:48

targetSdkVersionを27にして 28のエミュレータで Pixelを選択してテストしてみたのですが、 どうやら落ちてしまうようです。 そうなってくると、 もしかするとSQLite自体とは別の問題なのかもしれません、 Issue Tracker、英語が苦手なのですが、もしなんとか質問できそうでしたらしてみたいと思います。 テストなどもしていただき、ありがとうございます!
aja

2018/08/11 05:57 編集

ターゲットを26か27でもし問題がなければ 様子を見るということでもいいかもしれません 市場にAndroid 9 Pieがたくさん出てくるのはまだ先でしょうから
nnnnn

2018/08/11 06:02

まだ手元にAndroid 9.0が確認できる端末がないため、アップデートが来るのが怖いですが、 少し落ち着いてみたいと思います…! 27のエミュレータでは問題なかったので、その点大丈夫かもしれません!
guest

0

ベストアンサー

androidに限らす、何の通知もなく機能を削除するライブラリは、モラル的にありえません。
(まぁ所詮モラルですから、絶対にないとは言いませんが)

androidに話を戻すと、将来無くなりそうな機能は「deprecated」(廃止予定)と宣言されます。

先日別の質問であったFragmentを例に挙げましょうか。

This class was deprecated in API level 28.

Use the Support Library Fragment for consistent behavior across all devices and access to Lifecycle.

「android.app.Fragment」はAPI28で廃止予定となった。サポートライブラリ(android.support.v4.app.Fragment)を使え。との事です。

このようにdeprecatedとされても、「予定」ですからAPI28で使えないわけではなく、普通に使えます。
ただ、いつ削除されるかはわからないから、早く移行しろよ、という事になります。

sqliteパッケージのリファレンスには「deprecated」の文字はありませんから、使えなくなったということはないでしょう。
(もし使えなくなったら、もっと大騒ぎになっていると思いますが)
とはいえ、クラスやメソッド単位でdeprecatedになっている事もありますので、使用しているクラス・メソッドのリファレンスもしっかり見ておいたほうがいいと思います。

投稿2018/08/11 05:09

katsuko

総合スコア3469

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnnnn

2018/08/11 05:55

回答ありがとうございます! ご説明いただき、 SQLite自体は引き続き使えそうな可能性が高いという事が理解できました。 アプリが落ちてしまう箇所を見直し、 再度原因となるところの特定を進めてみたいと思います! ある程度原因が見えて来ましたら、また追記させていただきます。
nnnnn

2018/08/22 12:13

今回質問させていただいた、 API28においてsqlite関係のエラーでアプリが落ちてしまう現象について、 解決いたしました! https://stackoverflow.com/questions/50476782/android-p-sqlite-no-such-table-error-after-copying-database-from-assets 上記urlを参考に、API28で発生することが多いエラーに対処することで、治りました。 アセットからデータベースのファイルをコピーして使っていたのですが、 コピー前にデータベースを開いたままにしていた事が原因でした。 (getReadableDatabase後にcloseすることで解決しました) API27以前では動いていたため今まで気づきませんでした…。 同時に、API28でもsqliteは使用可能であるという事が確認できました! 問題解決方法を探る中でも、deprecatedの件など大変参考になりました。 ご回答いただき、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問