質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1276閲覧

Unity SocialConnectorによるシェア機能が立ち上がらない(Android実機テスト中)

vibrato

総合スコア52

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2023/07/22 10:44

編集2023/07/23 08:27

実現したいこと

  • Unityで製作中のモバイルゲームの実機テストAndroid12端末でのシェア機能を動作するようにしたいです。

前提

Unity2020.3.48f1で、Unity Asset Storeで購入したコンプリートゲームを編集してゲームを作っています。

https://github.com/anchan828/social-connector
SocialConnectorパッケージを使って「ボタン押下でシェア」の機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

UnityオブジェクトでButtonを配置し押下するとスクリーンショットは所定のパスに保存されていましたがが下記のエラーが発生し共有画面が立ち上がらない。

"java.lang.ClassNotFoundException: androidx.core.content.FileProvider"

このエラーはUnity Editorではなく
"C:\Program Files\Unity\Hub\Editor\2020.3.48f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\monitor.bat"
を起動したAndroid Device Monitorで確認したものです。Unity Editor ではエラーは出ていません。

追記
Android Device Monitorは現在使われなくなったとの情報を得たので、Android StudioのLogCatでログを確認したら全く同じエラーログが出ていました。

該当のソースコード

C#

1using UnityEngine; 2using System.IO; 3using System.Collections; 45public class ShareController : MonoBehaviour 6{ 7 public void Share() 8 { 9 StartCoroutine(ShareCoroutine()); 10 } 1112 public IEnumerator ShareCoroutine() 13 { 14 const string fileName = "image.png"; 15 string imgPath = Path.Combine(Application.persistentDataPath, fileName); 1617 // 前回のデータを削除 18 if (File.Exists(imgPath)) File.Delete(imgPath); 1920 //スクリーンショットを撮影 21 ScreenCapture.CaptureScreenshot(fileName); 2223 // 撮影画像の保存が完了するまで待機 24 while (true) 25 { 26 if (File.Exists(imgPath)) break; 27 yield return null; 28 } 2930 // 投稿する 31 string tweetText = ""; 32 string tweetURL = ""; 3334 try 35 { 36 SocialConnector.SocialConnector.Share(tweetText, tweetURL, imgPath); 37 } 38 catch (System.Exception e) 39 { 40 Debug.LogError(e.Message); 41 } 42 } 43}

試したこと

https://github.com/anchan828/social-connector#fileprovider%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8B
こちらに記載の階層修正

AndroidManifest.xml内のandroid:name="android.support.v4.content.FileProvider"を
android:name="androidx.core.content.FileProvider"に変更

AndroidManifest.xml内の"com.kyusyukeigo.socialconnector.fileproviderを
"${applicationId}.fileprovider"に変更

Asset/SocialConnector/SocialConnector.cs内の中の51行目
var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");を
var fileProvider = new AndroidJavaClass("androidx.core.content.FileProvider");に変更

Assets/Plugins/Androidフォルダ内の「gradleTemplate.properties」というファイルに
android.useAndroidX=true
android.enableJetifier=true
を追加

Unityメニュー Edit → Project Settings → Player → Other Settings → Scripting Define Symbolsのテキストボックスに
「UNITY_ANDROIDX_CORE_LIBRARY」
を追加

ここまで行っても同じエラーが出ていたため
support-core-utils-25.3.1.aar を削除(おそらくこの操作は不要)

以降も同様のエラーが出ている

試したこと追記①

Ripple_pyさんの助言から
Unityのエディターで "Edit" > "Project Settings" > "Player" > "Publishing Settings"
"Custom Main Gradle Template" を有効。これにより、"Assets/Plugin/Android" ディレクトリに "mainTemplate.gradle" ファイルが作成されました。
"mainTemplate.gradle" ファイルを開き、dependencies セクションに

implementation 'support-core-utils-25.3.1.aar'

を追加した結果、下記のビルドエラー

Supplied String module notation 'support-core-utils-25.3.1.aar' is invalid. Example notations: 'org.gradle:gradle-core:2.2', 'org.mockito:mockito-core:1.9.5:javadoc'.

implementation 'support-core-utils-25.3.1.aar'を下記に変更し、ビルドは成功

implementation(name: 'support-core-utils-25.3.1', ext: 'aar')

実機でシェアボタンを押下したら下記のエラー

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference

補足情報(FW/ツールのバージョンなど)

Unity2020.3.48f1

https://github.com/anchan828/social-connector
ここからSocial Connector v0.5.0

Androidバージョン12 APIレベル31
デバイス名 G1 Max

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ripple_py

2023/07/23 01:30 編集

Unityのエディターで "Edit" > "Project Settings" > "Player" > "Publishing Settings" に移動します。 "Custom Gradle Template" を有効にします。これにより、"Assets" ディレクトリに "mainTemplate.gradle" ファイルが作成されます。 "mainTemplate.gradle" ファイルを開き、dependencies セクションに以下の行を追加します: implementation 'support-core-utils-25.3.1.aar' ここで "25.3.1" は、使用したいAndroidX coreライブラリのバージョンを指定します。 保存し、プロジェクトをビルドします。 これにより、ビルドプロセス中にUnityが必要なAndroidXライブラリをダウンロードし、適切に配置するはずです。
vibrato

2023/07/23 05:20

>>fiveHundred様 コメントありがとうございます。そちらの手順は済ませてあります。 >>Ripple_py様 コメントありがとうございます。助言の手順を実行した結果「Supplied String module notation 'support-core-utils-25.3.1.aar' is invalid.」というエラーが出ました。 サポートされていない様でした;; 試したことに追記させていただきました。
guest

回答1

0

自己解決

Ripple_py様のコメントでの助言により
implementation(name: 'support-core-utils-25.3.1', ext: 'aar')を追加することにより

java.lang.ClassNotFoundException: androidx.core.content.FileProvider

エラーが解決しました。ありがとうございました(試したこと追記①に記載の方法)

その後の

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference

エラーはなにかの弾みでPluginディレクトリがAssetディレクトリの外に出ていたために発生していたようです。
Project/Plugin/Androidになっていました。正しくはProject/Asset/Plugin/Androiとなっているべきでした。
fiveHundred様のコメントでのご指摘で気づくことが出来ました。ありがとうございました。

SocialConnectorによるAndroidのシェア機能実装できました。
コメントにて助言頂きました
Ripple_py
fiveHundred
誠にありがとうございました。

投稿2023/07/23 08:41

編集2023/07/23 08:42
vibrato

総合スコア52

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問