facebook twitter hatena line email

「Unity/画像共有/SocialConnector」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(androidx対応)
(SocialConnectorの削除)
 
(同じ利用者による、間の19版が非表示)
行1: 行1:
 
==SocialConnectorとは==
 
==SocialConnectorとは==
 
unityから共有できるライブラリ
 
unityから共有できるライブラリ
 +
 +
ただし、 以下のほうがおすすめ
 +
 +
[[unity/画像共有/NatShare]] [ショートカット]
  
 
==公式==
 
==公式==
行71: 行75:
 
  - var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
 
  - var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
 
  + var fileProvider = new AndroidJavaClass("androidx.core.content.FileProvider");
 
  + var fileProvider = new AndroidJavaClass("androidx.core.content.FileProvider");
 +
 +
===以下エラーが出る場合===
 +
content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "androidx.core.content.FileProvider"
 +
上の項目にあるcore.aarが足りないのでcore.aarを入れる。詳しくは上の項目を確認
  
 
==ios対応==
 
==ios対応==
 +
SocialConnector/Plugins/SocialConnector.mmこれは、そのままの場所で良い。
 +
 +
===autoreleaseは使用できませんと出るとき===
 
以下エラーが出る場合
 
以下エラーが出る場合
 
  'autorelease' is unavailable: not available in automatic reference counting mode
 
  'autorelease' is unavailable: not available in automatic reference counting mode
  
xcode側/Build Phases/Compile SourcesのSocialConnector.mmをダブルクリックして -fno-objc-arc を追加
+
xcode側/target(UnityiPhone)/Build Phases/Compile SourcesのSocialConnector.mmをダブルクリックして 以下文字列 を追加
 +
-fno-objc-arc
 +
 
 +
xcode側/target(UnityFramework)/Build Phases/Compile SourcesのSocialConnector.mについても以下を追加
 +
-fno-objc-arc
 +
 
 +
まだ直らない場合は
 +
BuildSettingのObjecctive-C Automatic Refarence CountingをYesからNoへ
 +
 
 +
iosのFile/BuildSettingsのCompressionMethodをDefaultからLZ4にした時に設定が必要になった。
 +
 
 +
===SocialConnector.mmがコピーされてると出るとき===
 +
以下エラーが出る場合
 +
<pre>
 +
Plugin 'SocialConnector.mm' is used from several locations:
 +
Assets/Plugins/iOS/SocialConnector/SocialConnector.mm would be copied to
 +
</pre>
 +
Assets/Plugins/iOS/SocialConnector/SocialConnector.mm とAssets/SocialConnector/SocialConnector.mm が両方存在するとき
 +
どちらか一方消すとうまくいくと思う。自分は、Assets/Plugins/iOS/SocialConnector/SocialConnector.mm側を消すとうまくいった。
 +
==SocialConnectorの削除==
 +
<pre>
 +
rm -fr Assets/Plugins/Android/res/xml
 +
rm -fr Assets/Plugins/Android/res/xml.meta
 +
rm -fr Assets/SocialConnector
 +
rm -fr Assets/SocialConnector.meta
 +
rm -fr Assets/Plugins/Android/res.meta # resの下にxmlしかない場合
 +
</pre>
 +
Assets/Plugins/Android/AndroidManifest.xml の以下を削除
 +
<pre>
 +
<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:enabled="true" android:exported="false" android:grantUriPermissions="true">
 +
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" />
 +
</provider>
 +
</pre>
  
 
==参考==
 
==参考==

2022年6月14日 (火) 18:30時点における最新版

SocialConnectorとは

unityから共有できるライブラリ

ただし、 以下のほうがおすすめ

unity/画像共有/NatShare [ショートカット]

公式

https://github.com/anchan828/social-connector

追加される権限

BuildSetting/PlayerSettings/Android/OtherSetttings/Write Permissionがinternalの場合は権限追加なし、External(SDCard)の時は以下が追加される。SDCardの場合は、立ち上げ時に許可ダイアログが出る。

androidの場合(External選択の場合)

android.permission.WRITE_EXTERNAL_STORAGE

iosの場合

プライバシーアクセス(NSPhotoLibraryUsageDescription)

組み込み方法

  1. SocialConnector.unitypackage をAssets/Import/CustomImportを選択して、以下ファイルを入れる。
Plugins
  Android
    res
      xml
        filepaths.xml
SocialConnector
  Editor
    SocialConnectorPostProcess.cs
  Plugins
    Android
      AndroidManifest.xml
      support-core-utils-25.3.1.aar
    SocialConnector.mm
  Sample
    Sample.cs
    Sample.unity
  SocialConnector.cs
  1. SocialConnector/Plugins/Android/AndroidManifest.xmlをPlugins/Android/AndroidManifest.xmlへ移動
  2. SocialConnector/Plugins/Android/resをPlugins/Android/resへ移動
  3. 以下のように呼び出し。
string imagePath = Application.persistentDataPath + "/image.png";
ScreenCapture.CaptureScreenshot("image.png");
SocialConnector.SocialConnector.Share(message, "https://github.com/anchan828/social-connector", imagePath);

android,iosともにテキストのshereができた。画像キャプチャのshareもできた。

androidx対応

  1. support-core-utils-25.3.1.aarを削除
  2. core.aarがアプリに設定されてなければ、https://mvnrepository.com/artifact/androidx.core/core/1.2.0 からaarをダウンロードして同じ場所に設置。(dependencyエラーが起こった場合はaarは不要なので削除しよう)
  3. 以下ファイルのandroid.support.v4.content.fileproviderからandroidx.core.content.FileProviderへ置換

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name">
    <activity android:label="@string/app_name" android:name="com.unity3d.player.UnityPlayerActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
    <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:enabled="true" android:exported="false" android:grantUriPermissions="true">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" />
    </provider>
  </application>
</manifest>

SocialConnector/SocialConnector.cs

- var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
+ var fileProvider = new AndroidJavaClass("androidx.core.content.FileProvider");

以下エラーが出る場合

content.FileProvider: java.lang.ClassNotFoundException: Didn't find class "androidx.core.content.FileProvider"

上の項目にあるcore.aarが足りないのでcore.aarを入れる。詳しくは上の項目を確認

ios対応

SocialConnector/Plugins/SocialConnector.mmこれは、そのままの場所で良い。

autoreleaseは使用できませんと出るとき

以下エラーが出る場合

'autorelease' is unavailable: not available in automatic reference counting mode

xcode側/target(UnityiPhone)/Build Phases/Compile SourcesのSocialConnector.mmをダブルクリックして 以下文字列 を追加

-fno-objc-arc

xcode側/target(UnityFramework)/Build Phases/Compile SourcesのSocialConnector.mについても以下を追加

-fno-objc-arc

まだ直らない場合は BuildSettingのObjecctive-C Automatic Refarence CountingをYesからNoへ

iosのFile/BuildSettingsのCompressionMethodをDefaultからLZ4にした時に設定が必要になった。

SocialConnector.mmがコピーされてると出るとき

以下エラーが出る場合

Plugin 'SocialConnector.mm' is used from several locations:
 Assets/Plugins/iOS/SocialConnector/SocialConnector.mm would be copied to

Assets/Plugins/iOS/SocialConnector/SocialConnector.mm とAssets/SocialConnector/SocialConnector.mm が両方存在するとき どちらか一方消すとうまくいくと思う。自分は、Assets/Plugins/iOS/SocialConnector/SocialConnector.mm側を消すとうまくいった。

SocialConnectorの削除

rm -fr Assets/Plugins/Android/res/xml
rm -fr Assets/Plugins/Android/res/xml.meta
rm -fr Assets/SocialConnector
rm -fr Assets/SocialConnector.meta
rm -fr Assets/Plugins/Android/res.meta # resの下にxmlしかない場合

Assets/Plugins/Android/AndroidManifest.xml の以下を削除

<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:enabled="true" android:exported="false" android:grantUriPermissions="true">
      <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" />
</provider>

参考

http://nn-hokuson.hatenablog.com/entry/2018/05/16/195527

https://qiita.com/k_5/items/8df9bbbf4f59a9fd5fad

http://ktk-kumamoto.hatenablog.com/entry/2015/03/28/212225