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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Unity

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

Q&A

解決済

2回答

3278閲覧

Android向けのUnityプロジェクトのエラー:BuildConfig is defined multiple times が解決できません

cvilight

総合スコア1

C#

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

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

Unity

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

0グッド

0クリップ

投稿2023/06/26 11:20

実現したいこと

Android用のUnityプロジェクトで、DeviceOwnerを利用して端末をKiosk化(専用端末化)したい

前提

javaに関しては素人の独学なので、初歩的なことが理解できていないかもしれません。ご容赦ください

Development Buildでは動作するのですが、通常ビルドの時だけエラーが発生しています
「Development Buildだと通る理由」と「通常ビルドを通すための解決策」をご教授いただきたいです

CompanyName = "test"
ProductName = "Kiosk"
packageName = "com.test.Kiosk"

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

* What went wrong: Execution failed for task ':launcher:mergeDexRelease'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes. Type com.test.Kiosk.BuildConfig is defined multiple times: D:\Unity\Kiosk\Library\Bee\Android\Prj\Mono2x\Gradle\launcher\build\intermediates\project_dex_archive\release\out\com\test\Kiosk\BuildConfig.dex, D:\Unity\Kiosk\Library\Bee\Android\Prj\Mono2x\Gradle\unityLibrary\res.androidlib\build\.transforms\ccde4124495d5408c6b48c8b1aa28a98\classes\classes.dex

該当のソースコード

Androidmanifest.xml

1<?xml version="1.0" encoding="utf-8"?> 2<manifest 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 package="com.test.Kiosk" 5 xmlns:tools="http://schemas.android.com/tools"> 6 <application 7 android:allowBackup="true" 8 android:label="@string/app_name" 9 android:supportsRtl="true" 10 android:directBootAware="true"> 11 <activity 12 android:name="com.test.Kiosk.KioskActivity" 13 android:theme="@style/UnityThemeSelector" 14 android:label="KioskMode" 15 android:exported="true"> 16 <intent-filter> 17 <action android:name="android.intent.action.MAIN" /> 18 <category android:name="android.intent.category.LAUNCHER" /> 19 </intent-filter> 20 <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 21 </activity> 22 <receiver 23 android:name=".AdminTest" 24 android:exported="true" 25 android:label="device admin" 26 android:permission="android.permission.BIND_DEVICE_ADMIN"> 27 <meta-data 28 android:name="android.app.device_admin" 29 android:resource="@xml/device_admin"/> 30 <intent-filter> 31 <action 32 android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 33 </intent-filter> 34 </receiver> 35 </application> 36</manifest>

試したこと-1

4行目を
package="com.unity3d.player.UnityPlayer"
と変更したら通常ビルドも通るのですが、実機の方で起動できずにエラー落ちします

ログを確認したところ

Log

1E/AndroidRuntime(14958) 2: java.lang.RuntimeException 3: Unable to instantiate activity ComponentInfo{com.test.Kiosk/com.unity3d.player.UnityPlayer.KioskActivity} 4: java.lang.ClassNotFoundException 5: Didn't find class "com.unity3d.player.UnityPlayer.KioskActivity" on path: ~

と出力されていました

試したこと-2

パッケージ名を変更すればいいのか思い、-1に加えて.javaファイルのpackageを全てcom.unity3d.player.UnityPlayerに変更したところビルドエラーが発生しました

エラー: パッケージcom.unity3d.player.UnityPlayerは同名のクラスと競合しています

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

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

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

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

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

guest

回答2

0

この回答はGPT-4による自動生成回答です

この問題は、BuildConfig クラスが複数の場所で定義されているために発生しています。これは、通常、異なるモジュールやライブラリが同じパッケージ名を使用している場合に発生します。

解決策として、以下の手順を試してみてください。

  1. まず、AndroidManifest.xmlpackage 属性を元の値に戻します。つまり、package="com.test.Kiosk" に戻します。

  2. 次に、KioskActivity クラスのパッケージ名を変更します。例えば、com.test.Kiosk.activities のように、新しいサブパッケージを作成します。この変更を行った後、KioskActivity.java ファイルの先頭にある package ステートメントも更新してください。

    package com.test.Kiosk.activities;
  3. AndroidManifest.xmlactivity タグの android:name 属性も、新しいパッケージ名に更新します。

    <activity android:name="com.test.Kiosk.activities.KioskActivity" ... </activity>
  4. 他のクラスやリソースで KioskActivity を参照している場合は、すべての参照を新しいパッケージ名に更新してください。

これらの変更を行った後、ビルドを実行して問題が解決されるか確認してください。

投稿2023/06/26 11:20

teratail-ai

Powered by GPT-4

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

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

0

自己解決

AndroidManifest.xmlの修正で解決しました

4行目のパッケージ名をpackage="com.unity3d.player.UnityPlayer"に設定

.javaファイルのパッケージ名は上記以外の物を設定(今回は"com.test.Kiosk"のまま)

23行目、レシーバーの名前を.AdminTestからandroid:name="com.test.Kiosk.AdminTest"に変更したら動きました

投稿2023/06/26 11:46

cvilight

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問