teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

11

情報を追加

2017/11/27 23:45

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -1,21 +1,17 @@
1
- 試していないので上手く行くかは分かりませんが・・
2
-
3
1
  原因:
4
2
  エラーで、already added となっているものが重複しているため。
5
3
  [com/google/android/gms/*](https://developers.google.com/android/reference/packages) なので、Google Play Services関連のクラス。
6
4
 
5
+ 対処法:
6
+ NCMBのインポート時に `play-services-*.aar`、`support-*.aar`などのチェックを外す。
7
+ ※PlayServicesResolverでは競合を解消しきれませんでした。
7
8
 
8
- 対処法
9
+
9
10
  重複しているファイルを削る など。
10
-
11
11
  実際は、追記で揚げている、[Qiita - NCMB Unity SDKがAdMob等のAndroidプラグインと競合する場合の解決](https://qiita.com/Takaaki_Ichijo/items/d9a7639f2dc4d1060616) の、「参考にしたウェブサイト」のリンク先[AdMob と Nifty Cloud のプッシュ通知を共存させる [Unity]](http://b.i-tach.com/?p=1015) または、似たような内容の「パターン2:Android用のライブラリがダブる」辺りに書いてある内容を試すことになると思います。
12
12
 
13
-
14
- 参考:
15
- 「NIFTYCloud-mbaas admob 競合 com.google.android.gms」の検索結果(試した時点で、5件)
16
-
17
13
  ---
18
- 以降、再現実験。
14
+ 以降、再現実験。長いので時間がある時に。
19
15
 
20
16
  追記1: build.gradleを見ると、双方が同じものに依存していますが、バージョンが異なります。
21
17
  ※ソースとunitypackageに入っているものでバージョンが異なるようなので、参考程度に

10

情報を追加

2017/11/27 23:45

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -163,10 +163,22 @@
163
163
  ・・・
164
164
  ```
165
165
 
166
+ ```
167
+ stdout[
168
+ processing archive H:\Projects\Unity\TestProject2\Temp\StagingArea\android-libraries\GoogleMobileAdsPlugin\libs.\unity-plugin-library.jar...
169
+ processing com/google/unity/BuildConfig.class...
170
+ ・・・
171
+ processing archive H:\Projects\Unity\TestProject2\Temp\StagingArea\android-libraries\NcmbGcmPlugin\libs.\classes.jar...
172
+ ・・・
173
+ processing archive H:\Projects\Unity\TestProject2\Temp\StagingArea\android-libraries\play-services-ads-11.6.0\libs.\classes.jar...
174
+ ・・・
175
+ ```
176
+
166
177
  ---
167
178
  追記9:
168
179
  一旦仕切り直しで、テスト用にプロジェクトを再作成、インポートからやりなおしてみます。
169
180
  今回は、インポート時に、Goolge Play Services関連のファイルなどをインポートしないでビルドが通るか実験してみます。
181
+ ※エラーログ(processing archive ...)に出力されていたので、念のためunity-plugin-library.jarもインポート対象から外してあります。
170
182
 
171
183
  AdMob
172
184
  ![admob](352a534d49a4eedcc6b8f8b75fe1dab9.png)
@@ -186,4 +198,65 @@
186
198
 
187
199
  やはり、インポート時にバージョンが競合するファイルをインポートしているのが原因のようです。
188
200
 
189
- ![ビルド後のログ](ae88331e0948bcb54be670fe6d69c591.png)
201
+ ![ビルド後のログ](ae88331e0948bcb54be670fe6d69c591.png)
202
+
203
+ ---
204
+ 追記10:
205
+ Google Mobile Ads Unity Plugin の、unity-plugin-library.jarをインポートしてみます。
206
+
207
+ ![unity-plugin-library](3fdc8b1ba78c4cfe5183f5bc1bbb0152.png)
208
+
209
+ エラーは発生しませんでした。
210
+ ![イメージ説明](22af400b13d6b441fe6b308246e28e46.png)
211
+
212
+ ---
213
+ 追記11:
214
+ 確認のために、競合しそうなファイルもインポートしてみると、予想通りエラーが発生しました。
215
+
216
+ インポート前の状態:
217
+ ![インポート前](d89d4e1b4a330a297998b5c879029865.png)
218
+
219
+ NCMB の、support-*.aar、res\values\version.xmlを追加
220
+ ![NCMB](9be27f4d8203cb8f6d42b0108a1b46a1.png)
221
+
222
+ Build後のログ:
223
+ ![イメージ説明](9ed3d84ea31ce22f8825e9817e355577.png)
224
+
225
+ ```
226
+ CommandInvokationFailure: Unable to convert classes into dex format.
227
+ ・・・
228
+ stderr[
229
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/compat/BuildConfig;
230
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
231
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompat;
232
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompat$1;
233
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompat$OnRequestPermissionsResultCallback;
234
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompat$SharedElementCallback21Impl;
235
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompat$SharedElementCallback23Impl;
236
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityCompat$SharedElementCallback23Impl$1;
237
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Landroid/support/v4/app/ActivityManagerCompat;
238
+
239
+ UNEXPECTED TOP-LEVEL EXCEPTION:
240
+ java.lang.RuntimeException: Translation has been interrupted
241
+ ・・・
242
+ ```
243
+
244
+ ---
245
+ 追記12:
246
+ NCMBに入っているAssets\Plugins\Android\res\values\version.xml は、古いファイルがメンテナンスされずに残っているようです。
247
+ (ライブラリでの Assets/Plugins/Android/res を使ったリソース提供は廃止されています)
248
+
249
+ ```
250
+ <integer name="google_play_services_version">8298000</integer>
251
+ ```
252
+
253
+ ※これは、play-services-basement-8.3.0に入っている値と同じです。
254
+ パス:
255
+ (AndroidSDK)\extras\google\m2repository\com\google\android\gms\play-services-basement\8.3.0\play-services-basement-8.3.0.aar
256
+
257
+ ![resのインポートはOBSOLETE](00590f62abf67b25ee29074f2333c878.png)
258
+
259
+ ```
260
+ OBSOLETE - Providing Android resources in Assets/Plugins/Android/res is deprecated, please move your resources to an AAR or an Android Library. See "AAR plug-ins and Android Libraries" section of the Manual for more details.
261
+ UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
262
+ ```

9

情報を追加

2017/11/27 22:57

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -161,4 +161,29 @@
161
161
  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/common/internal/zzaa;
162
162
  Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/common/internal/zzbf;
163
163
  ・・・
164
- ```
164
+ ```
165
+
166
+ ---
167
+ 追記9:
168
+ 一旦仕切り直しで、テスト用にプロジェクトを再作成、インポートからやりなおしてみます。
169
+ 今回は、インポート時に、Goolge Play Services関連のファイルなどをインポートしないでビルドが通るか実験してみます。
170
+
171
+ AdMob
172
+ ![admob](352a534d49a4eedcc6b8f8b75fe1dab9.png)
173
+
174
+ この時点でAndroid用にBuildすると、YOUR_PACKAGE_NAMEを書き換えていない時のダイアログが表示されます。(変更対象のAssets\Plugins\Android\AndroidManifest.xmlは、NCMBに含まれているので、この時点では存在しません。)
175
+
176
+ ![YOUR_PACKAGE_NAME 書き換え忘れ](1848c163276d08b6748993fcfb67250c.png)
177
+
178
+ NCMB
179
+ ![NCMB-1](857371eaf238033276f301090b461eed.png)
180
+ ![NCMB-2](a766e8e0bdcb0c4d72161c34b3456d57.png)
181
+
182
+ このままBuildすると、またYOUR_PACKAGE_NAMEのダイアログが表示されるので、Assets\Plugins\Android\AndroidManifest.xmlのYOUR_PACKAGE_NAMEを、適切なパッケージ名に変更しておきます。
183
+
184
+ この状態で、Android用のBuildをすると、ビルドが成功し、apkファイルが生成されました。
185
+ (minSdkVersionが低いというワーニングが出ていますが、ビルドは通ります)
186
+
187
+ やはり、インポート時にバージョンが競合するファイルをインポートしているのが原因のようです。
188
+
189
+ ![ビルド後のログ](ae88331e0948bcb54be670fe6d69c591.png)

8

情報を追加

2017/11/27 21:40

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -15,6 +15,8 @@
15
15
  「NIFTYCloud-mbaas admob 競合 com.google.android.gms」の検索結果(試した時点で、5件)
16
16
 
17
17
  ---
18
+ 以降、再現実験。
19
+
18
20
  追記1: build.gradleを見ると、双方が同じものに依存していますが、バージョンが異なります。
19
21
  ※ソースとunitypackageに入っているものでバージョンが異なるようなので、参考程度に
20
22
 
@@ -110,4 +112,53 @@
110
112
  追記5:
111
113
  ※Resolve Conflictダイアログで、一旦 No を選択してしまうと、以降のBuildで、ダイアログが表示されなくなります。その場合は、Assets > Play Services Resolver > Android Resolver > Force Resolveを選択すると、再度ダイアログが表示されるようになります。
112
114
 
113
- ![イメージ説明](ac9c2bdaa51185b383716ff0b79d8d7c.png)
115
+ ![再度ダアログを表示する方法](ac9c2bdaa51185b383716ff0b79d8d7c.png)
116
+
117
+ ---
118
+ 追記6:
119
+ JDKが古い(1.7など)場合は、次のようなエラーが表示されます。
120
+ ※`Unsupported major.minor version 52.0`も、JDKのバージョンが原因
121
+ 参考: [Qiita - Unsupported major.minor version 51.0 = Java7 以上使え](https://qiita.com/seratch@github/items/731b69d3edabe9c8bc0d)
122
+
123
+ 対処法は、エラーメッセージに表示されているとおり、Edit > Preferences... > ExternalTools > Android の、JDK 欄で、JDK1.8以降のフォルダを選択で。
124
+
125
+ ![Unable to merge android manifests](0be52746534b6bf97b6f09f8bfb6783f.png)
126
+
127
+ ```
128
+ CommandInvokationFailure: Unable to merge android manifests. See the Console for more details.
129
+ ・・・
130
+ Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/manifmerger/Merger : Unsupported major.minor version 52.0
131
+ ```
132
+
133
+ ![error log-jdk1.7](b4455c74ec383b0bb7b303b4fcbd67a4.png)
134
+ ```
135
+ The configured JDK 1.7 is too old to build Android applications with recent libraries.
136
+ Please install JDK version 1.8 or newer and configure Unity to use the new JDK installation in the 'Unity Preferences > External Tools' menu.
137
+ ```
138
+
139
+ ---
140
+ 追記7:
141
+ Assets\Plugins\Android\AndroidManifest.xml の、YOUR_PACKAGE_NAMEを適切なパッケージ名に変更していない場合に発生。
142
+
143
+ ![YOUR_PACKAGE_NAMEの変更忘れ](6347ea0e78f685fef314a19066e40926.png)
144
+
145
+ ```
146
+ UnityException: Bundle Identifier has not been set up correctly
147
+ Please set the Bundle Identifier in the Player Settings. The value must follow the convention 'com.YourCompanyName.YourProductName' and can contain alphanumeric characters and underscore.
148
+ Each segment must not start with a numeric character or underscore.
149
+ ```
150
+
151
+ ---
152
+ 追記8:
153
+ ここで、質問のエラーが再現します。
154
+
155
+ ![この時点で質問のエラーが再現](50f1791c85edf74fce029a0eb7b97124.png)
156
+
157
+ ```
158
+ CommandInvokationFailure: Unable to convert classes into dex format.
159
+ ・・・
160
+ stderr[
161
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/common/internal/zzaa;
162
+ Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/common/internal/zzbf;
163
+ ・・・
164
+ ```

7

情報を追記

2017/11/27 19:53

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -15,8 +15,8 @@
15
15
  「NIFTYCloud-mbaas admob 競合 com.google.android.gms」の検索結果(試した時点で、5件)
16
16
 
17
17
  ---
18
- 追記1: 双方が同じものに依存しているのでスからビルドしなおした方早いかもしれせん
18
+ 追記1: build.gradleを見ると、双方が同じものに依存していますがジョン異なり
19
- (AppCompat、Play Services競合発生す可能性があります)
19
+ ※ソースとunitypackageに入っているものバージョン異なようなので、参考程度に
20
20
 
21
21
  Google Mobile Ads Unity Plugin v3.9.0 のソースにある、
22
22
  source\android-library\app\build.gradle (抜粋)
@@ -42,7 +42,7 @@
42
42
 
43
43
  ---
44
44
  追記2: 
45
- NCMB.3.1.0 のzipファイルから読み取れる、Android関連のファイル名など
45
+ NCMB.3.1.0 のzipファイル(に入っているNCMB.unitypackage)から読み取れる、Android関連のファイル名など
46
46
 
47
47
  Assets/Plugins/Android
48
48
  Assets/Plugins/Android/res
@@ -68,4 +68,46 @@
68
68
 
69
69
  NCMB.3.1.0
70
70
  ![ncmb-1](9c1bf47ba4c469114d71808b8ecf6094.png)
71
- ![ncmb-2](efff12da91821a233d1446e749250e4f.png)
71
+ ![ncmb-2](efff12da91821a233d1446e749250e4f.png)
72
+
73
+ ---
74
+ 追記4:
75
+ Android用にBuildした時の画面
76
+ ※今回はエラー再現用に、Resolve Conflictダイアログで「No」を選択しています。
77
+ ここで「Yes」を選択すれば、今回の問題は解決しそうですが・・
78
+ ※Resolve ConflictダイアログでYesを選択した場合は、(メッセージ通りに動作するなら)競合しているファイルは取り除かれるかと思います。
79
+ ※このダイアログは、Google Mobile Ads Unity Pluginに入っている、PlayServicesResolverによる表示かと思います。(パスは、Assets\PlayServicesResolver\Editor*.dll)
80
+ 関連する設定は、Assets > Play Services Resolverにあります。
81
+
82
+ ※実験時は、iOS関連のファイルをインポートしていませんが、`using UnityEditor.iOS.Xcode;`で今回の現象と関係のないエラーが発生するため、 Assets\Editor\UpdateXcodeProject.cs を全行コメントアウトしています。
83
+
84
+ play-services-basement-11.6.0.aar と
85
+ play-services-basement-11.0.0.aar が競合している、などのメッセージが表示されます。
86
+ ※まっさらな状態のUnityで実験したので、JDKのバージョン(1.7になっている)などのエラーも出ていますが、今回の現象とは関係ありません。
87
+
88
+ この競合は、Google Mobile Ads Unity Plugin v3.9.0 のソースにあるbuild.gradleで指定している
89
+ > `api 'com.google.android.gms:play-services-ads:11.6.0'`
90
+
91
+ と、NCMB.unitypackageに入っている
92
+ > Assets/Plugins/Android/play-services-basement-11.0.0.aar
93
+
94
+ などと一致します。
95
+
96
+ 従って、競合については、NCMBのインポート時に、バージョンが競合するaarファイルをインポートしたのが原因です。
97
+ ※バージョンは、NCMBの方が古いものと新しいものが混在しているので、インポート時にチェックを外すよりも、Resolve ConflictダイアログでYesを選択する方がよいかと思います。
98
+ エラーメッセージに表示される、競合しているファイル:
99
+ play-services-basement (11.6.0.aar, 11.0.0.aar)
100
+ support-compat (25.2.0.aar, 26.0.2.aar)
101
+ support-core-utils (25.2.0.aar, 26.0.2.aar)
102
+ support-v4 (25.2.0.aar, 26.0.2.aar)
103
+
104
+
105
+ ![build-1](88188c0ed7e8b0cb23a4a625c9cfc3fa.png)
106
+ ![build-2](f056e7b523093c08e5a77cf29219187d.png)
107
+ ![build-3](c8efffb69baff02303e2469dce782872.png)
108
+
109
+ ---
110
+ 追記5:
111
+ ※Resolve Conflictダイアログで、一旦 No を選択してしまうと、以降のBuildで、ダイアログが表示されなくなります。その場合は、Assets > Play Services Resolver > Android Resolver > Force Resolveを選択すると、再度ダイアログが表示されるようになります。
112
+
113
+ ![イメージ説明](ac9c2bdaa51185b383716ff0b79d8d7c.png)

6

情報を追加

2017/11/27 19:04

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -57,4 +57,15 @@
57
57
  Assets/Plugins/Android/play-services-iid-11.0.0.aar
58
58
  Assets/Plugins/Android/support-core-utils-26.0.2.aar
59
59
  Assets/Plugins/Android/NcmbGcmPlugin.aar
60
- Assets/Plugins/Android/AndroidManifest.xml
60
+ Assets/Plugins/Android/AndroidManifest.xml
61
+
62
+ ---
63
+ 追記3:
64
+ Unityへのインポート時の画面
65
+
66
+ Google Mobile Ads Unity Plugin v3.9.0
67
+ ![admob](e4b594e6644baf359cf3e5965f5bd24e.png)
68
+
69
+ NCMB.3.1.0
70
+ ![ncmb-1](9c1bf47ba4c469114d71808b8ecf6094.png)
71
+ ![ncmb-2](efff12da91821a233d1446e749250e4f.png)

5

typo修正

2017/11/27 17:25

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  ---
44
44
  追記2: 
45
- NCMB.3.1.0 のzipファイルから読み取れる、Android関連のファイルなど
45
+ NCMB.3.1.0 のzipファイルから読み取れる、Android関連のファイルなど
46
46
 
47
47
  Assets/Plugins/Android
48
48
  Assets/Plugins/Android/res

4

不要な行を削除

2017/11/27 16:25

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -43,7 +43,6 @@
43
43
  ---
44
44
  追記2: 
45
45
  NCMB.3.1.0 のzipファイルから読み取れる、Android関連のファイルなど
46
- (ソートしていないので見にくいかもしれませんが・・)
47
46
 
48
47
  Assets/Plugins/Android
49
48
  Assets/Plugins/Android/res

3

情報を追記

2017/11/27 16:23

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -38,4 +38,24 @@
38
38
  compile 'com.android.support:appcompat-v7:26.0.2'
39
39
  compile 'com.google.android.gms:play-services:8.3.0'
40
40
  }
41
- ```
41
+ ```
42
+
43
+ ---
44
+ 追記2: 
45
+ NCMB.3.1.0 のzipファイルから読み取れる、Android関連のファイルなど
46
+ (ソートしていないので見にくいかもしれませんが・・)
47
+
48
+ Assets/Plugins/Android
49
+ Assets/Plugins/Android/res
50
+ Assets/Plugins/Android/res/values
51
+ Assets/Plugins/Android/res/values/version.xml
52
+ Assets/Plugins/Android/support-compat-26.0.2.aar
53
+ Assets/Plugins/Android/support-v4-26.0.2.aar
54
+ Assets/Plugins/Android/play-services-basement-11.0.0.aar
55
+ Assets/Plugins/Android/play-services-tasks-11.0.0.aar
56
+ Assets/Plugins/Android/play-services-gcm-11.0.0.aar
57
+ Assets/Plugins/Android/play-services-base-11.0.0.aar
58
+ Assets/Plugins/Android/play-services-iid-11.0.0.aar
59
+ Assets/Plugins/Android/support-core-utils-26.0.2.aar
60
+ Assets/Plugins/Android/NcmbGcmPlugin.aar
61
+ Assets/Plugins/Android/AndroidManifest.xml

2

情報を追加

2017/11/27 16:22

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -12,4 +12,30 @@
12
12
 
13
13
 
14
14
  参考:
15
- 「NIFTYCloud-mbaas admob 競合 com.google.android.gms」の検索結果(試した時点で、5件)
15
+ 「NIFTYCloud-mbaas admob 競合 com.google.android.gms」の検索結果(試した時点で、5件)
16
+
17
+ ---
18
+ 追記1: 双方が同じものに依存しているので、ソースからビルドしなおした方が早いかもしれません。
19
+ (AppCompat、Play Servicesで競合が発生する可能性があります)
20
+
21
+ Google Mobile Ads Unity Plugin v3.9.0 のソースにある、
22
+ source\android-library\app\build.gradle (抜粋)
23
+
24
+ ```
25
+ dependencies {
26
+ api fileTree(dir: 'libs', include: ['*.jar'])
27
+ api 'com.android.support:appcompat-v7:26.1.0'
28
+ api 'com.google.android.gms:play-services-ads:11.6.0'
29
+ }
30
+ ```
31
+
32
+ NCMB.3.1.0 のソースにある、
33
+ NcmbGcmPlugin\ncmbgcmplugin\build.gradle (抜粋)
34
+
35
+ ```
36
+ dependencies {
37
+ compile fileTree(dir: 'libs', include: ['*.jar'])
38
+ compile 'com.android.support:appcompat-v7:26.0.2'
39
+ compile 'com.google.android.gms:play-services:8.3.0'
40
+ }
41
+ ```

1

フォーマット修正

2017/11/27 16:13

投稿

toris-birds
toris-birds

スコア122

answer CHANGED
@@ -8,9 +8,7 @@
8
8
  対処法:
9
9
  重複しているファイルを削る など。
10
10
 
11
- 実際は、追記で揚げている、[Qiita - NCMB Unity SDKがAdMob等のAndroidプラグインと競合する場合の解決](https://qiita.com/Takaaki_Ichijo/items/d9a7639f2dc4d1060616) の、
12
- 「参考にしたウェブサイト」のリンク先[AdMob と Nifty Cloud のプッシュ通知を共存させる [Unity]](http://b.i-tach.com/?p=1015) または、
13
- 似たような内容の「パターン2:Android用のライブラリがダブる」辺りに書いてある内容を試すことになると思います。
11
+ 実際は、追記で揚げている、[Qiita - NCMB Unity SDKがAdMob等のAndroidプラグインと競合する場合の解決](https://qiita.com/Takaaki_Ichijo/items/d9a7639f2dc4d1060616) の、「参考にしたウェブサイト」のリンク先[AdMob と Nifty Cloud のプッシュ通知を共存させる [Unity]](http://b.i-tach.com/?p=1015) または、似たような内容の「パターン2:Android用のライブラリがダブる」辺りに書いてある内容を試すことになると思います。
14
12
 
15
13
 
16
14
  参考: