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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

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

Q&A

解決済

1回答

1262閲覧

AndroidStudioのProjectStructureについて

jin007

総合スコア34

Android Studio

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

0グッド

0クリップ

投稿2018/12/11 07:52

編集2018/12/12 02:05

実現したいこと

ブレイクポイントを貼って、変数の中身をデバッグしてログに出して確認する。

実施したこと

1:Gitに存在しているソースをインポート。
2:以下エラーが出る。

Gradle sync failed: Unsupported method: BaseConfig.getApplicationIdSuffix(). The version of Gradle you connect to does not support that method. To resolve the problem you can change/upgrade the target version of Gradle you connect to. Alternatively, you can ignore this exception and read other information from the model. Consult IDE log for more details (Help | Show Log) (28 s 738 ms)

このサイトを参考にして、
●変更前
初期設定

●変更後
変更後設定
→4.1は上記サイトの数字を拝借しました。
→3.2はダウンロードしてきたバージョンの数字を入れました。

3:以下のエラー発生

Gradle sync failed: Could not find com.android.tools.build:gradle:3.2. Searched in the following locations: https://jcenter.bintray.com/com/android/tools/build/gradle/3.2/gradle-3.2.pom https://jcenter.bintray.com/com/android/tools/build/gradle/3.2/gradle-3.2.jar Required by: project : Consult IDE log for more details (Help | Show Log) (3 s 29 ms)

設定を変更したことが原因なのはわかっているのですが、ここからの解決方法がわからないのでアドバイスのほどよろしくお願いいたします。

追加

「17:10追加」
*画像1
AndroidStudio

「17:35追加」
*画像2
イメージ説明

*追加1

// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() google() } dependencies { classpath 'com.android.tools.build:gradle:3.2' } } allprojects { repositories { jcenter() google() } }

を以下のように変更しました。

buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.2' } } allprojects { repositories { google() jcenter() } }

「18:20追加分」
*画像3イメージ説明
3.2.1

*画像4
ProjectStructure

「18:50追加分」
*画像5
SDKPlatforms

*画像6
SDKTools

*画像7
SDKUpdateSites

「19:15追加分」
warning出てた

「19:37追加分」
*追加2

dependencies { compile project(':bluetoothspp') }

を以下のように変更。

dependencies { implementation project(':bluetoothspp') }

*追加3

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) // testCompile 'junit:junit:4.12' // compile 'com.android.support:appcompat-v7:23.1.1' }

を以下のように変更。

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // testCompile 'junit:junit:4.12' // compile 'com.android.support:appcompat-v7:23.1.1' }

他に、Update Build Tools version and sync projectを実行

*画像8
コード変更


●12/12
「11:00追加分」
未インストール

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

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

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

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

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

guest

回答1

0

ベストアンサー

Gradle versionとして指定できるバージョンは、Android Plugin versionによって制約があります。Android Plugin versionが3.1以上の場合、Gradle versionには4.4以上を指定する必要があります。

Android Gradle plugin release notes

Android Plugin versionの最新版は、Android Studioのバージョンと常に連動します。メニューのHelp→AboutでAndroid Studioのバージョンを調べてみてください。今日現在の最新版ならば3.2.1のはずです。一致させなければビルドが通らないというものではないのですが、一致させることが望ましいです。また、このバージョンではGradleは4.6が推奨されていますので、これを指定してみたらどうでしょうか。


ビルドの経過を表示するBuildビューで、赤!が出ている箇所は存在するでしょうか?(この例はconstraint-layoutをわざと存在しないバージョンにしてみた)

投稿2018/12/11 08:00

編集2018/12/11 10:10
keicha_hrs

総合スコア6768

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

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

jin007

2018/12/11 08:14

引き続きご回答してくださりありがとうございます。 バージョンを確認したところ3.2と記載されていました。(*画像1参照) また、Gradleversionを4.6、AndroidPluginVersionを3.2.1で実施したところ -------------------------------------- Gradle sync failed: Could not find com.android.tools.build:gradle:3.2.1. Searched in the following locations: https://jcenter.bintray.com/com/android/tools/build/gradle/3.2.1/gradle-3.2.1.pom https://jcenter.bintray.com/com/android/tools/build/gradle/3.2.1/gradle-3.2.1.jar Required by: project : Consult IDE log for more details (Help | Show Log) (13 s 456 ms) -------------------------------------- と先ほどと同じようなエラーが出ました。 これはそのファイルは存在していないということでエラーが出ていないという認識で あっていますか?
keicha_hrs

2018/12/11 08:23 編集

ごめんなさい、Android Studioが3.2ならばAndroid Plugin versionも3.2にしておいた方がいいでしょう。 で、ログで嫌な予感。プロジェクトツリーからbuild.gradle(Project側)を開いて、2箇所あるrepositories{}というブロックがどうなっているでしょうか。Android Studio 2.xのときに作成したプロジェクトだと、 repositories { jcenter() maven { url 'https://maven.google.com' } } のようになっているのかもしれません。もしこうなっていたら、 repositories { google() jcenter() } のようにjcenter()よりも前の順序にgoogle()を持ってきてください(google()はAndroid Studio 3.0以降で使えるようになった記述)。そうしないとGoogleが提供するプラグインやライブラリーを正しく取得できないことがあります。 今までのトラブルはすべてこれに起因しているのかも。
jin007

2018/12/11 08:35

ありがとうございます。 コードも変更しました。(*追加1参照) これを保存し再度実行したのですが、 エラー内容は変わらずでした。(*画像2参照) 回答をいただく前に「add~」というメッセージをクリックしたところファイルがついかされた(と思います)のですが、そちらのファイルを参照してもやはりそんなファイルは見つからないよとエラーが出てしまします。。
keicha_hrs

2018/12/11 08:51

jin007

2018/12/11 09:19

確認していただいてありがとうございます。 3.2.1にアップグレードしました。(*画像3参照) その後以下のように変更。 Gradleversion:4.6 AndroidPluginVersion:3.2.1 再度実行すると、以下のメッセージのみになりエラーから調べるのが難しくなりました。。 -------------------------------------- Gradle sync failed (32 s 877 ms) -------------------------------------- もう一度ProjectStructureを見ると変わっている点が一つあったのですがこれは正しいという認識で合っていますでしょうか? ここが変わったのは、おそらく先ほど教えていただいたソースの書き換えだと思います。(*画像4)
jin007

2018/12/11 09:55

「18:50追加分」の *画像5~7の設定は上記でやったことに対してあっていますでしょうか。 確認していただけたら幸いです。 *画像5でAndroidのバージョンが違うんじゃないと思うのですが、 3.2.1や4.6といった先ほど指定した数字がなかったので気になりました。
keicha_hrs

2018/12/11 10:03 編集

Project Structureが変わったというのは、google()が追加されているということでしょうか?それは問題ないです。最初の画像にはなかったですね、見落としていました。画像5と6のインストール済みのパッケージのバージョンも問題なさそうです。依然エラーになるのは、今の情報だとちょっとわからないですね。
jin007

2018/12/11 10:13

追加の回答ありがとうございます。 この画面は見ていませんでした。(*画像8参照) warningが出ていました。
jin007

2018/12/11 10:44

*追加2、3とUpdate Build Tools version and sync projectを実行したところ*画像8までエラーが減りました。 途中経過ですが、お伝えいたします。
keicha_hrs

2018/12/11 10:50 編集

追加していただいた画像から、やはり古いプロジェクトであることでいろいろ出ているようですね(Android Studioが変わりすぎなんだが・・・)。 appモジュール側のbuld.gradleを開いてください。 buildToolsVersion '23.0.2' と記されている行があると思いますが、この行は除去してください。buildToolsVersionの指定が省略されていると、デフォルトのBuild Toolsが用いられるようになります。画像6から最新のBuild Toolsはインストール済みのようなので、省略しても問題ないはずです。 それから、Gradleのバージョンが上がったために同じ機能でも記述が変わったものがあります。 compile → implementation testCompile → testImplementation androidTestCompile → androidTestImplementation に差し替えてください。(compileはすでに差し替えられたようですね) それから、プロジェクトツリー上のmanifestsというところをダブルクリックすると、AndroidManifest.xmlが開きます。この中に、 <uses-sdk android:minSdkVersion="xx" android:targetSdkVersion="xx" android:maxSdkVersion="xx" /> みたいな記述があるかもしれません。この<uses-sdk>タグは現在は無効(build.gradleで指定)なので、このタグは除去してください。
jin007

2018/12/12 01:25

お返事遅くなって申し訳ありません。 app/build.gradle buildToolsVersionを確認したところ、28.0.3という記載になっております。 (おそらく何か自分でインストールしてたみたいです。) compile→implementationに書き換えはできwarningも消えました。 manifests > AndroidManifest.xmlの中は初めから<uses-sdk>という表記はありませんでした。 ------------------------------------------------------------------------------------ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.ibs.postas.bluetoothspp" > <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH" /> </manifest> ------------------------------------------------------------------------------------ 現在出ているwarningのエラー内容は以下で、 ---------------------------- The targetSdk version should not be declared in the android manifest file. You can move the version from the manifest to the defaultConfig in the build.gradle file. ---------------------------- 調べてみたところ、少しエラー内容が違うがこのサイトがヒントになるのかなと思い調査しております。 https://oc-technote.com/android/gradle-plugin%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E3%80%81%E3%80%8C3-0-1%E3%80%8D%E2%87%92%E3%80%8C3-2-0%E3%80%8D%E3%81%AB%E3%81%97%E3%81%9F%E6%99%82%E3%81%AE%E3%82%A8/
jin007

2018/12/12 01:51

defaultConfig { applicationId "jp.alf.cyclops.sample" minSdkVersion 10 targetSdkVersion 10 //←ここがエラー出ていた。 } -------------------------------------------------------- As of the second half of 2018, Google Play requires that new apps and app updates target API level 26 or higher. Configuring your app to target a recent API level ensures that users benefit from significant security and performance improvements, while still allowing your app to run on older Android versions (down to the minSdkVersion). To update your targetSdkVersion, follow the steps from "Meeting Google Play requirements for target API level", https://developer.android.com/distribute/best-practices/develop/target-sdk.html lssue id: ExpiredTargetSdkversion -------------------------------------------------------- APIのバージョンでエラーが出ているみたいです。引き続き調べてみます。 途中経過をご報告させていただきました。
keicha_hrs

2018/12/12 04:11 編集

compileSdkVersionで指定しているAPIレベルのSDK Platformは必ずインストールされている必要がありますが、targetSdkVersionで指定したものは必須ではありません。ただ、そのAPIレベルのエミュレーターや実機でデバッグするためにはやはり必要になりますので、迷うなら入れておいてもいいかと思います。一つ上のコメントのサイトに記されているのは、targetSdkVersionが26以上でビルドされたものでなければGoogle Playで公開することができなくなるというものです。Google的には26以上にすることを強く推奨しているのでエラーのような表示になりますが、そのままでも実行することはできます(Android Studioの警告ラッシュに耐えなければならないが)。Playに公開しないものならば26未満でもいいのですが、それにしても10というのはいろいろ制約が出てくるのかもしれません。ちょっとその影響まではわかりませんね・・・。
jin007

2018/12/12 04:37

お返事ありがとうございます。 新規で1個プロジェクトを立ち上げて同じファイルを見て同じにしてみました。 -------------------------------------------------------- minSdkVersion 10→minSdkVersion 15 targetSdkVersion 10→targetSdkVersion 28 -------------------------------------------------------- ですが、エラーメッセージは変わらず特に何も変化なしでした。 その後、Android8.0(Oreo)のインストールをしてみたところ同じく変化なしでした。。 自分の今の課題は「APIレベルが異なるから現在のレベルから上げる」という認識で合っていますでしょうか?
jin007

2018/12/12 07:16

調べたことでいろいろといじったりしたので、再度質問を立ち上げて見やすくしました。 解決した際には前回の質問、今回の質問でベストアンサーにさせていただきます。 URL: https://teratail.com/questions/163573?modal=q-comp
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問