facebook twitter hatena line email

Unity/GoogleMobileSDK/ライブラリ自動読み込み

提供: 初心者エンジニアの簡易メモ
2019年11月28日 (木) 18:50時点におけるAdmin (トーク | 投稿記録)による版 (androidの場合)

移動: 案内検索

準備

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>

コメント付きは以下参照 https://github.com/googlesamples/unity-jar-resolver/blob/master/sample/Assets/PlayServicesResolver/Editor/SampleDependencies.xml

カスタムで自動読込したい場合

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された。(後で調べる用)

gradlewの実行

./Temp/PlayServicesResolverGradle/gradlew

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

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