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

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

ただいまの
回答率

88.83%

AndroidStudio 64ビット対応のアプリの作り方について

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,883

lulu71

score 16

アプリ開発を行っている初心者です。

2019年の夏から64ビット対応しないとダメ!とgoogleに注意されたので、ぐぐってみると

targetSdkVersion 28
に変更・・・と記載があったので、build.gradle(app)の対象箇所を変更してみました。
すると
implementation 'com.android.support:appcompat-v7:26.1.0'
でエラーがでましたので、「28」にあわせれば良いのかと思い、
implementation 'com.android.support:appcompat-v7:28.0.0'
へ変更しました。

そうすると、
implementation 'com.android.support:appcompat-v7:28.0.0'
に赤線が入ります。

クリーンプロジェクトし、MakeProjectしてもエラーメッセージは表示されませんし、実機で稼働します。

そこで質問です。
1)赤線を消すにはどうすればよいでしょうか?
2)そもそも、64ビット対応は「targetSdkVersion 28」するだけで良いのでしょうか?
(開発言語はJavaです)

何卒、ご教示頂けますと非常に助かります。

イメージ説明

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'io.fabric'
apply plugin: 'com.android.application'
android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.XXX.xxxx"
        minSdkVersion 18
        targetSdkVersion 28
        multiDexEnabled true
        versionCode 1
        versionName "1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            debuggable true
        }
    }
    sourceSets {
        main { assets.srcDirs = ['src/main/assets', 'src/main/assets/gfx', 'src/main/assets/mfx'] }
    }
    dexOptions {
        javaMaxHeapSize "Xg"
    }
}

dependencies {
    implementation 'com.google.firebase:firebase-core:16.0.5'
    implementation 'com.android.support:multidex:1.0.3'
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    implementation 'com.google.android.gms:play-services-ads-identifier:+'
    implementation 'com.google.android.gms:play-services-ads:17.1.1'
    implementation 'com.maio:android-sdk:1.1.6'
    implementation 'com.google.firebase:firebase-crash:16.2.1'
    // Add dependency
    implementation 'com.crashlytics.sdk.android:crashlytics:2.9.6'
    implementation 'com.google.android.gms:play-services-analytics:16.0.4'
}

イメージ説明

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+1

2)そもそも、64ビット対応は「targetSdkVersion 28」するだけで良いのでしょうか?

順序が逆になりますが、こちらが質問の本質となるので。

64bit対応で影響するのは、アプリケーションにC/C++言語によって作られたライブラリーが含まれているかどうかです。C/C++言語で作られたプログラムをコンパイルするときは、オプションにCPUアーキテクチャーの指定が含めるため、出力されるバイナリーはそれに直結します。1つのAPKには複数のアーキテクチャー向けライブラリーを含めることができますが、64bitバイナリーのライブラリーが含まれていないと公開できなくなるよという話ですね。

Googleが提供するSupport Libraryなどのみで開発している範疇においては、影響はないんじゃないかと思います。その辺りを確認したければ、以下の記事が役に立つと思います。

Androidのapkが64bit対応しているか調べる方法 | Qiita

targetSdkVersion 28
に変更・・・と記載があったので

これは多分Google Play側の都合の話かな?Google Playでアプリを新規公開するには、すでにtargetSdkVersionが26以上であることが必要要件となっています。また、これを年々上昇させていくことも明言されています。今すぐ28にしなければならないわけではありませんが、いずれそういうときは来るということです。

1)赤線を消すにはどうすればよいでしょうか?

これは、Support Libraryの依存関係の中でバージョンの齟齬が発生しているのでしょう。自分自身で意識して記述したのはappcompat-v7のみであっても、実は他にもたくさんのSupport Libraryがあり、複雑な依存関係を構築しています。そうした中で、appcompat-v7は28.0.0を指定しているのに、依存によって読み込まれたライブラリーの中に28.0.0を用いていないものが存在することがあります。この赤線は、そのためによって発生しているものでしょう。

質問に貼っていただいた画像に表示されているホバーでは、customtabsというライブラリーが26.1.0を参照しようとしているため、これが齟齬を発生させているのでしょう。ですから、

    implementation 'com.android.support:customtabs:28.0.0'

と記述すれば、この問題についてはとりあえず解消できると思います。ただ、さらに別のライブラリーがappcompat-v7とは違うバージョンを参照しようとしている可能性もあるため、赤波線は消えずにホバーにこれまでとは異なる内容が表示される可能性はあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/05/21 22:27

    早速にありがとうございます。
    またものすごく丁寧に教えて頂き、大変助かりました。
    質問後、いろいろ調べて行くうちに、質問がトンチンカンかな?と思い始めていた所だったので、回答を頂けないかと諦めておりました。

    64bitに対応しているか?という所ですが、apkをzipにして、libの中をみてみるとsoファイルが存在しており、、、ライブラリを使っていたことを思い出しました。
    そのライブラリはサポートが終了しており、64bit版がありません・・・。
    32bit版のsoを64bitにできませんよね?


    gradleですが、結局以下の3つを追加し、赤線が消えました。
    implementation 'com.android.support:customtabs:28.0.0'
    implementation 'com.android.support:support-media-compat:28.0.0'
    implementation 'com.android.support:support-v4:28.0.0'

    バージョンや依存関係に悩まされずスパッとできる方法は無いものでしょうか?



    追伸
    実機で確認してみたところ、通信エラーになりアプリが正常に動きませんでした。
    compileSdkVersion 28
    targetSdkVersion 28
    implementation 'com.android.support:appcompat-v7:28.0.0'

    上記を「26」に戻すと問題ないので、「28」に変えたことでエラーが起きているようです。
    難解すぎてパニック状態です(汗

    キャンセル

  • 2019/05/23 22:38

    > 32bit版のsoを64bitにできませんよね?
    直接変換はできないですね。ソースファイルからリコンパイルする以外にありません。

    > 上記を「26」に戻すと問題ないので、「28」に変えたことでエラーが起きているようです。
    それはちょっとわかりかねます。非標準な外部ライブラリーも使われているようですし、それらの中にtargetSdkVersionが28では動作しない要因があるのだとしたら、ライブラリー開発者に問い合わせる以外にはどうにもならないでしょう。

    > 難解すぎてパニック状態です(汗
    「初心者」と仰っている割には、あまりにも一足飛びに複雑なものを作ろうとしすぎているんじゃないでしょうか・・・。

    キャンセル

  • 2019/05/24 12:06

    ご連絡が遅くなり申し訳ございません。色々とありがとうございます。

    >「初心者」と仰っている割には、あまりにも一足飛びに複雑なものを作ろうとしすぎているんじゃないでしょうか・・・。

    (笑)確かに仰る通りです。
    ネットに落ちているコードを参考に積み上げて行ったら、なんだか複雑になってきました。
    プログラムは思い通りに動きますが、こういう基礎的な部分をさっぱり理解していないのが問題だと自覚しております。
    AndroidなのかAndroidStadioなのか・・・、勉強したり、最新情報を入手したりする方法は何かありませんでしょうか?

    キャンセル

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

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

関連した質問

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