「Unity/GoogleMobileSDK/ライブラリ自動読み込み」の版間の差分
(同じ利用者による、間の21版が非表示) | |||
行86: | 行86: | ||
ls ~/.gradle/caches/modules-2/files-2.1/ | ls ~/.gradle/caches/modules-2/files-2.1/ | ||
ls ~/.gradle/caches/transforms-1/files-1.1/ | ls ~/.gradle/caches/transforms-1/files-1.1/ | ||
+ | ls ~/.gradle/caches/modules-2/metadata-2.69/descriptors/ | ||
− | ==build.gradleへの出力== | + | ===build.gradleへの出力=== |
Assets/PlayService/Android Resolve/Force Resolveすると | Assets/PlayService/Android Resolve/Force Resolveすると | ||
build-systemがgradleの場合 Assets/Plugins/Android/mainTemplate.gradleへ出力される | build-systemがgradleの場合 Assets/Plugins/Android/mainTemplate.gradleへ出力される | ||
行95: | 行96: | ||
mainTemplate.gradleへ出力されずにPlugins/Androidの下にDLされるパターンもあった・・・。 | mainTemplate.gradleへ出力されずにPlugins/Androidの下にDLされるパターンもあった・・・。 | ||
− | 証拠として、Google.JarResolver_v1.2.111.0はPlugin内にsdkがDLされない。v1.2.64と最新のv1.2.130はDKされた。( | + | 証拠として、Google.JarResolver_v1.2.111.0はPlugin内にsdkがDLされない。v1.2.64と最新のv1.2.130はDKされた。(後で調べた結果↓) |
+ | |||
+ | ===Resolving Android Dependenciesのloadingが走らない場合=== | ||
+ | Android/BuildSettingのBuild/CustomGradleTemplateをoffにしてAssets/Plugins/Android/mainTemplate.gradleを一旦削除するとよいかも。 | ||
+ | |||
+ | ===gradlewの実行=== | ||
+ | ./Temp/PlayServicesResolverGradle/gradlew | ||
+ | |||
+ | ===Could not determine java version from '13.0.1'.エラーが出る場合=== | ||
+ | 以下でもエラーが出てることを確認 | ||
+ | $ ./Temp/PlayServicesResolverGradle/gradlew setupDecompWorkspace --stacktrace | ||
+ | java.lang.IllegalArgumentException: Could not determine java version from '13.0.1'. | ||
+ | |||
+ | ===sdkmanager周りのエラーが出る=== | ||
+ | Unable to determine which Android packages are installed. | ||
+ | Library/Android/sdk/tools/bin/sdkmanager --list --verbose | ||
+ | |||
+ | java9以上ではだめで、java8でないとならないようす。 | ||
+ | |||
+ | 参考:https://qiita.com/nemui-fujiu/items/47b6cae9e2763a96325c | ||
+ | |||
+ | =="Stopped polling job due to exception: System.NullReferenceException: Object reference not set to an instance of an object"なエラーのとき== | ||
+ | dependensyのresolveで実行時の続きエラー | ||
+ | at GooglePlayServices.UnityCompat.VersionFromAndroidSDKVersionsEnum (System.String enumName, System.String fallbackPrefKey, | ||
+ | AndroidのtargetがAPI29だった、28にして再度resolveを。 | ||
+ | |||
+ | ==="java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener"などgoogle系ライブラリが読み込めない場合=== | ||
+ | 以下play-services系がCustom/Dependensies.xmlなどで入れようとしていたら、一旦削除し正常に動く状態にし、再度削除したものを追加してみる。 | ||
+ | <androidPackage spec="com.google.android.gms:play-services-gcm:17.0.0"> | ||
+ | <androidPackage spec="com.google.android.gms:play-services-location:17.0.0"> | ||
+ | |||
+ | Assets/Plugins/Android/googlemobileads-unity.aar が含まれてなければ追加 | ||
+ | |||
+ | ===multidex系を入れたい場合は=== | ||
+ | <androidPackage spec="androidx.multidex:multidex:2.0.1"> | ||
+ | <androidSdkPackageIds> | ||
+ | <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> | ||
+ | </androidSdkPackageIds> | ||
+ | <repositories> | ||
+ | <repository>https://maven.google.com</repository> | ||
+ | </repositories> | ||
+ | </androidPackage> | ||
+ | |||
+ | ==Gradle failed to fetch dependencies.エラーが出る場合== | ||
+ | ProjectSettings/AndroidResolverDependencies.xml | ||
+ | を見てみて、以下のようにcom.android.supportとandroidxで同じライブラリが被ってる箇所があると起こる。 | ||
+ | |||
+ | com.android.support:appcompat-v7:27.1.1 | ||
+ | androidx.appcompat:appcompat:1.1.0 | ||
+ | |||
+ | PlayServicesResolverが1.2.64.0などと古いとcom.android.support系のライブラリが入っていてunityアプリでandroidxを使うとこのエラーが起こる。PlayServicesResolverを1.2.132.0などに上げるとcom.android.support系は除外されるようなので、上げればよい。 | ||
+ | |||
+ | 処理が止まる場合はTempディレクトリなどを一旦消して再起動など。 | ||
==iosの場合== | ==iosの場合== | ||
行116: | 行169: | ||
処理csは以下の通り、 | 処理csは以下の通り、 | ||
https://github.com/googlesamples/unity-jar-resolver/blob/master/source/IOSResolver/src/IOSResolver.cs | https://github.com/googlesamples/unity-jar-resolver/blob/master/source/IOSResolver/src/IOSResolver.cs | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |
2020年1月27日 (月) 11:19時点における最新版
目次
準備
https://github.com/googlesamples/unity-jar-resolver
play-services-resolver-1.2.89.0.unitypackageをDL
play-services-resolver-1.2.89.0.unitypackageをAssets/ImortPackage/CustomPackageからインストールする
インストールに失敗する場合
unity/GoogleMobileAds/基本 [ショートカット]
play-services-resolverがこのライブラリに付属してるので、それをインストールする
自動読み込み
androidでのmavenやiosでのcocoapodsなどでライブラリを呼びたい場合などに使用。
公式:https://github.com/googlesamples/unity-jar-resolver#version-handler-usage
MyPlugin/Editor/MyPluginDependencies.xml に以下のようにandroidであればpackageurlを変更し、iosであればbundleやライブラリ名を変更すれば適用できる。
注意:ファイル名にDependencies.xmlが含まれていないと使えないっぽい。
PlayServicesResolver/Editorの下にxmlを作っても使えるが、公式はMyPluginなど別dirで記載されてるので、分けたほうが良いっぽい。
<dependencies> <androidPackages> <androidPackage spec="com.google.android.gms:play-services-games:9.8.0"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> <repositories> <repository>https://maven.google.com</repository> </repositories> </androidPackage> </androidPackages> <iosPods> <iosPod name="Google-Mobile-Ads-SDK" version="~> 7.0" bitcodeEnabled="true" minTargetSdk="6.0"> <sources> <source>https://github.com/CocoaPods/Specs</source> </sources> </iosPod> </iosPods> </dependencies>
カスタムで自動読込したい場合
okhttp3を入れる例 (できなかったので、未完成)
<dependencies> <!-- Android --> <androidPackages> <androidPackage spec="com.squareup.okhttp3:3.7.0"> <androidSdkPackageIds> <androidSdkPackageId>okhttp</androidSdkPackageId> </androidSdkPackageIds> <repositories> <repository>https://mvnrepository.com/artifact</repository> </repositories> </androidPackage> </androidPackages> <!-- iOS --> <iosPods> <iosPod name="Google-Mobile-Ads-SDK" version="~> 7.0" bitcodeEnabled="true" minTargetSdk="6.0"> <sources> <source>https://github.com/CocoaPods/Specs</source> </sources> </iosPod> </iosPods> </dependencies>
以下にあるjarがAssets/Plugins/Androidの下にされる https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp/3.7.0 https://mvnrepository.com/artifact/com.squareup.okio/okio/1.12.0
androidの場合
androidのgradleのライブラリ読み込み
unityバージョン2019からbuild-systemがgradleだけになった。 gradleの場合はAssets/Plugins/AndroidにDLされることはなく、以下ファイルあたりにDLされてるはず。
ls ~/.gradle/caches/modules-2/files-2.1/ ls ~/.gradle/caches/transforms-1/files-1.1/ ls ~/.gradle/caches/modules-2/metadata-2.69/descriptors/
build.gradleへの出力
Assets/PlayService/Android Resolve/Force Resolveすると build-systemがgradleの場合 Assets/Plugins/Android/mainTemplate.gradleへ出力される
↑
mainTemplate.gradleへ出力されずにPlugins/Androidの下にDLされるパターンもあった・・・。
証拠として、Google.JarResolver_v1.2.111.0はPlugin内にsdkがDLされない。v1.2.64と最新のv1.2.130はDKされた。(後で調べた結果↓)
Resolving Android Dependenciesのloadingが走らない場合
Android/BuildSettingのBuild/CustomGradleTemplateをoffにしてAssets/Plugins/Android/mainTemplate.gradleを一旦削除するとよいかも。
gradlewの実行
./Temp/PlayServicesResolverGradle/gradlew
Could not determine java version from '13.0.1'.エラーが出る場合
以下でもエラーが出てることを確認
$ ./Temp/PlayServicesResolverGradle/gradlew setupDecompWorkspace --stacktrace java.lang.IllegalArgumentException: Could not determine java version from '13.0.1'.
sdkmanager周りのエラーが出る
Unable to determine which Android packages are installed. Library/Android/sdk/tools/bin/sdkmanager --list --verbose
java9以上ではだめで、java8でないとならないようす。
参考:https://qiita.com/nemui-fujiu/items/47b6cae9e2763a96325c
"Stopped polling job due to exception: System.NullReferenceException: Object reference not set to an instance of an object"なエラーのとき
dependensyのresolveで実行時の続きエラー
at GooglePlayServices.UnityCompat.VersionFromAndroidSDKVersionsEnum (System.String enumName, System.String fallbackPrefKey,
AndroidのtargetがAPI29だった、28にして再度resolveを。
"java.lang.ClassNotFoundException: com.google.unity.ads.UnityAdListener"などgoogle系ライブラリが読み込めない場合
以下play-services系がCustom/Dependensies.xmlなどで入れようとしていたら、一旦削除し正常に動く状態にし、再度削除したものを追加してみる。
<androidPackage spec="com.google.android.gms:play-services-gcm:17.0.0"> <androidPackage spec="com.google.android.gms:play-services-location:17.0.0">
Assets/Plugins/Android/googlemobileads-unity.aar が含まれてなければ追加
multidex系を入れたい場合は
<androidPackage spec="androidx.multidex:multidex:2.0.1"> <androidSdkPackageIds> <androidSdkPackageId>extra-google-m2repository</androidSdkPackageId> </androidSdkPackageIds> <repositories> <repository>https://maven.google.com</repository> </repositories> </androidPackage>
Gradle failed to fetch dependencies.エラーが出る場合
ProjectSettings/AndroidResolverDependencies.xml を見てみて、以下のようにcom.android.supportとandroidxで同じライブラリが被ってる箇所があると起こる。
com.android.support:appcompat-v7:27.1.1 androidx.appcompat:appcompat:1.1.0
PlayServicesResolverが1.2.64.0などと古いとcom.android.support系のライブラリが入っていてunityアプリでandroidxを使うとこのエラーが起こる。PlayServicesResolverを1.2.132.0などに上げるとcom.android.support系は除外されるようなので、上げればよい。
処理が止まる場合はTempディレクトリなどを一旦消して再起動など。
iosの場合
iosPodの属性
<iosPod name="Google-Mobile-Ads-SDK" version="~> 7.0" bitcodeEnabled="true" minTargetSdk="6.0"> <sources> <source>https://github.com/CocoaPods/Specs</source> </sources> <iosPod>
iosプロジェクトのPodfileのファイルにフォーマットを変えて出力される
source 'https://github.com/CocoaPods/Specs.git' source 'https://github.com/CocoaPods/Specs' platform :ios, '9.0' target 'Unity-iPhone' do pod 'Google-Mobile-Ads-SDK', '~> 7.0' end
処理csは以下の通り、 https://github.com/googlesamples/unity-jar-resolver/blob/master/source/IOSResolver/src/IOSResolver.cs