1. ホーム
  2. android

[解決済み] Google Play サービスライブラリの更新と記号の欠落 @integer/google_play_services_version

2022-04-15 22:22:52

質問

プロジェクトをGoogle Play Servicesの最新バージョンにアップグレードする際、( v4.0、2013年ハロウィーンにリリースされました。 ) に新しいタグを追加することになりました。 AndroidManifest.xml ファイルを作成します。

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />

残念ながら、このようにすると、このようなコンパイルエラーが発生します。

android-apt-compiler: /blahblah/AndroidManifest.xml:409: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

そして、次のファイルに移動することができます。 google-play-services_lib/res/values/version.xml で、そのシンボルの生の整数を表示します。

<integer name="google_play_services_version">4030500</integer>

そして、それを再び私の AndroidManifest.xml :

<meta-data
    android:name="com.google.android.gms.version"
    android:value="4030500" />

これを実行すると、全く問題なく、プロジェクトとアプリをコンパイルして実行することができます。しかし、明らかにアップグレードの問題があり、望ましくない修正であることは間違いありません。

何かアイデアはありますか?

解決方法は?

この修正はIntelliJユーザーにしか適用されない可能性があることに注意してください! (この記事の一番下に、すべての人に適用されるべき詳細情報があります。)

この問題を修正しました 私が使っている IntelliJ をインクルードする方法を間違えていたことが判明しました。 google-play-services_lib モジュールに依存することになります。

ファイルを編集することなく、完全にGUIで修正したので、ここにスクリーンショットを2枚掲載します。

というわけで、私のプロジェクト構造は、最初はこんな感じでした。

次に google-play-services ライブラリを選択し、一番下にあるマイナスボタンをクリックして、依存関係リストから除外しました。ダイアログの下部にあるエラーに注目してください。私のプロジェクトはこのライブラリを絶対に必要としています。でも心配しないでください、すぐに再追加しますよ!

次に google-play-services_lib をライブラリの依存関係ではなくモジュールの依存関係としました。そして、この依存関係をリストの一番上に移動させるために、一番下にある上矢印ボタンを何回か押しました。しかし、一番下にあるエラーに注目してください (まだ終わっていません!)。

次に、エラーメッセージ領域のダイアログの下部にある電球をクリックすると、この小さな小さなポップアップが表示され、2つの選択肢( 依存関係に追加... または ライブラリの削除 ). をクリックします。 依存関係に追加する... というオプションがあります。

新しい小さなダイアログウィンドウが表示されたはずです。2つの選択肢があり、1つはメインプロジェクト(名前がぼやけています)、もう1つは google-play-services_lib プロジェクトに参加しました。あなたのプロジェクトによっては、もっとたくさんあるかもしれません(たとえば actionbarsherlock といった具合に)。選択 google-play-services_lib をクリックし、OKをクリックします。

そして最後に、あなたは完了です これが誰かの役に立つといいのですが!

その他の情報

そもそもこの問題が起きていたのは、私が と思い をきちんと入れていたこと。 google-play-services_lib をプロジェクト全体に組み込んでいたのですが、実はそうではなく、その jar ファイル ( google-play-services_lib/libs/google-play-services.jar ). この jar ファイルはコードのみを含み、Android リソースの値は含まないので、そのため @integer/google_play_services_version の値は決して 本当に を私のプロジェクトで使用しました。しかし、そのコードは私のプロジェクトで使用することができたので、すべてがうまくいっているように見えました。

また、余談ですが、この問題を修正することで GooglePlayServicesUtil.getErrorDialog(...).show() のクラッシュが発生することがありました。しかし、これもアップデートによって修正された可能性があり、100%確実ではありません。