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

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

ただいまの
回答率

90.47%

  • Android Studio

    4361questions

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

AndroidStudioのProjectStructureについて

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 494

jin007

score 13

実現したいこと

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

実施したこと

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追加分」
未インストール

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

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 17: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)
    --------------------------------------
    と先ほどと同じようなエラーが出ました。

    これはそのファイルは存在していないということでエラーが出ていないという認識で
    あっていますか?

    キャンセル

  • 2018/12/11 17:20 編集

    ごめんなさい、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が提供するプラグインやライブラリーを正しく取得できないことがあります。

    今までのトラブルはすべてこれに起因しているのかも。

    キャンセル

  • 2018/12/11 17:35

    ありがとうございます。
    コードも変更しました。(*追加1参照)
    これを保存し再度実行したのですが、
    エラー内容は変わらずでした。(*画像2参照)

    回答をいただく前に「add~」というメッセージをクリックしたところファイルがついかされた(と思います)のですが、そちらのファイルを参照してもやはりそんなファイルは見つからないよとエラーが出てしまします。。

    キャンセル

  • 2018/12/11 17:51

    キャンセル

  • 2018/12/11 18:19

    確認していただいてありがとうございます。

    3.2.1にアップグレードしました。(*画像3参照)
    その後以下のように変更。
    Gradleversion:4.6
    AndroidPluginVersion:3.2.1

    再度実行すると、以下のメッセージのみになりエラーから調べるのが難しくなりました。。
    --------------------------------------
    Gradle sync failed (32 s 877 ms)
    --------------------------------------

    もう一度ProjectStructureを見ると変わっている点が一つあったのですがこれは正しいという認識で合っていますでしょうか?
    ここが変わったのは、おそらく先ほど教えていただいたソースの書き換えだと思います。(*画像4)

    キャンセル

  • 2018/12/11 18:55

    「18:50追加分」の
    *画像5~7の設定は上記でやったことに対してあっていますでしょうか。
    確認していただけたら幸いです。

    *画像5でAndroidのバージョンが違うんじゃないと思うのですが、
    3.2.1や4.6といった先ほど指定した数字がなかったので気になりました。

    キャンセル

  • 2018/12/11 19:01 編集

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

    キャンセル

  • 2018/12/11 19:13

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

    キャンセル

  • 2018/12/11 19:44

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

    キャンセル

  • 2018/12/11 19:49 編集

    追加していただいた画像から、やはり古いプロジェクトであることでいろいろ出ているようですね(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で指定)なので、このタグは除去してください。

    キャンセル

  • 2018/12/12 10: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&quot;
    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/

    キャンセル

  • 2018/12/12 10: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のバージョンでエラーが出ているみたいです。引き続き調べてみます。
    途中経過をご報告させていただきました。

    キャンセル

  • 2018/12/12 11:03

    https://developers-jp.googleblog.com/2018/06/target-sdk-api-level-26-or-above.html
    上記のサイトから
    *画像9をインストールしたほうがいいのではないかと思いましたが、以前*画像5を見ていただいたとき問題ないとのことでしたので迷っております。アドバイスを頂けたらなと思います。

    キャンセル

  • 2018/12/12 13:05 編集

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

    キャンセル

  • 2018/12/12 13:37

    お返事ありがとうございます。

    新規で1個プロジェクトを立ち上げて同じファイルを見て同じにしてみました。
    --------------------------------------------------------
    minSdkVersion 10→minSdkVersion 15
    targetSdkVersion 10→targetSdkVersion 28
    --------------------------------------------------------
    ですが、エラーメッセージは変わらず特に何も変化なしでした。

    その後、Android8.0(Oreo)のインストールをしてみたところ同じく変化なしでした。。

    自分の今の課題は「APIレベルが異なるから現在のレベルから上げる」という認識で合っていますでしょうか?

    キャンセル

  • 2018/12/12 16:16

    調べたことでいろいろといじったりしたので、再度質問を立ち上げて見やすくしました。
    解決した際には前回の質問、今回の質問でベストアンサーにさせていただきます。

    URL:
    https://teratail.com/questions/163573?modal=q-comp

    キャンセル

  • 2018/12/12 17:36

    【解決しました!!】
    URL:
    https://teratail.com/questions/163573?modal=q-comp

    キャンセル

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

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Android Studio

    4361questions

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