AnswerBun.com

Unity app crashes when using unmodified custom Android manifest (didn't find class "UnityPlayerActivity")

Game Development Asked on January 7, 2022

Note: I find/replaced my actual company name with ‘companyname’ below for anonymity, it’s not the actual package name I am using.

I have Unity 2018.4.11f1 LTS and the platform I’m having issues with is a Google Glass Enterprise Edition 2 running Android 8.1.0.

I’m new to both Unity and Android programming. My goal is to add some extra category specifiers to AppManifest.xml. As I understand it, to modify the manifest, I need to take Unity’s generated manifest, copy it to my project to use as a starting point, then modify it.

However, when I perform the following steps:

  1. Export the project from Unity.
  2. Take the generated manifest (src/main/AppManifest.xml) and copy it into my project (Assets/Plugins/Android/AppManifest.xml).
  3. Build and run the project without modifying the manifest file just as a test.

… the app crashes immediately, with the following showing up in logcat:

10-28 18:09:31.612: D/AndroidRuntime(2560): --------- beginning of crash
10-28 18:09:31.613: E/AndroidRuntime(2560): FATAL EXCEPTION: main
10-28 18:09:31.613: E/AndroidRuntime(2560): Process: com.companyname.glass.screen, PID: 2560
10-28 18:09:31.613: E/AndroidRuntime(2560): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.companyname.glass.screen/com.companyname.glass.screen.UnityPlayerActivity}: java.lang.ClassNotFoundException: Didn't find class "com.companyname.glass.screen.UnityPlayerActivity" on path: DexPathList[[zip file "/data/app/com.companyname.glass.screen-hmosf9MV2zscOjvPt7Az6A==/base.apk"],nativeLibraryDirectories=[/data/app/com.companyname.glass.screen-hmosf9MV2zscOjvPt7Az6A==/lib/arm, /data/app/com.companyname.glass.screen-hmosf9MV2zscOjvPt7Az6A==/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2682)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2859)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.ActivityThread.-wrap11(Unknown Source:0)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1592)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.os.Handler.dispatchMessage(Handler.java:106)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.os.Looper.loop(Looper.java:164)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.ActivityThread.main(ActivityThread.java:6518)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at java.lang.reflect.Method.invoke(Native Method)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
10-28 18:09:31.613: E/AndroidRuntime(2560): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.companyname.glass.screen.UnityPlayerActivity" on path: DexPathList[[zip file "/data/app/com.companyname.glass.screen-hmosf9MV2zscOjvPt7Az6A==/base.apk"],nativeLibraryDirectories=[/data/app/com.companyname.glass.screen-hmosf9MV2zscOjvPt7Az6A==/lib/arm, /data/app/com.companyname.glass.screen-hmosf9MV2zscOjvPt7Az6A==/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
10-28 18:09:31.613: E/AndroidRuntime(2560):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.Instrumentation.newActivity(Instrumentation.java:1175)
10-28 18:09:31.613: E/AndroidRuntime(2560):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2672)
10-28 18:09:31.613: E/AndroidRuntime(2560):     ... 9 more
10-28 18:09:31.619: W/ActivityManager(1203):   Force finishing activity com.companyname.glass.screen/.UnityPlayerActivity

Where the primary error is:

java.lang.ClassNotFoundException: Didn’t find class “com.companyname.glass.screen.UnityPlayerActivity”

Normally the app runs fine. I don’t understand what is happening, because this is the exact unmodified manifest that Unity generates, no changes. But when I put it in my project, the app crashes.

Here’s the manifest that Unity generates, which is the one I’m using:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.companyname.glass.screen" xmlns:tools="http://schemas.android.com/tools" android:installLocation="preferExternal">
  <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
  <application android:theme="@style/UnityThemeSelector" android:icon="@mipmap/app_icon" android:label="@string/app_name">
    <activity android:label="@string/app_name" android:screenOrientation="landscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:hardwareAccelerated="false" android:name="com.companyname.glass.screen.UnityPlayerActivity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
    <meta-data android:name="unity.build-id" android:value="5bffbf6f-0a59-4843-8b47-d3b5ac51b8dd" />
    <meta-data android:name="unity.splash-mode" android:value="0" />
    <meta-data android:name="unity.splash-enable" android:value="True" />
  </application>
  <uses-feature android:glEsVersion="0x00020000" />
  <uses-permission android:name="android.permission.INTERNET" />
  <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
  <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

My question is: Why is this happening and how do I make it not happen so that I can add the <category/> element I need to add?


Update: So I just took a look inside the generated APK file, and I see that it does include a class named com.unity3d.player.UnityPlayerActivity. I am not sure why it’s looking for UnityPlayerActivity in my app’s package instead of com.unity3d.player.


Ok, I got it working, I manually changed android:name in the application element from com.companyname.glass.screen.UnityPlayerActivity to com.unity3d.player.UnityPlayerActivity. But I’m not going to attempt to post a self-answer because I have no idea why I had to do that or if that was the “proper” solution. Will accept any reasonable explanation of this. (I arrived at this conclusion by comparing the manifests from the APKs both with and without my custom manifest; I do not understand why Unity filled in an incorrect application class name with “Export” vs “Build and Run”).

One Answer

I do not think you can have a id of 'com.companyname.glass.screen'

try replacing that to 'com.companyname.glassscreen' and see if that compiles.

make sure you changed that part in the manifest

package="com.companyname.glassscreen" and matched to the same name in File>BuildSettings>PlayerSettings>

then in inspector it will be package name there by Identification

the main thing is that they all match one way or another.

Answered by Justin Markwell on January 7, 2022

Add your own answers!

Related Questions

Resizing a tiledmap when using phaser

1  Asked on December 16, 2020 by sora

   

Prefab spawning issue

2  Asked on December 15, 2020 by usmaan-mahmood

   

Pause updating but keep rendering

1  Asked on December 5, 2020 by yosoku-denkai

     

How to make it so my cursor is not behind the UI?

0  Asked on December 3, 2020 by jacksonba90

   

Can’t submit facebook app for review

2  Asked on November 20, 2020 by moria

   

OpenGL Strange mesh when animating Assimp

1  Asked on October 26, 2020 by david-neves

     

2D Sidescroller Gravity

1  Asked on October 22, 2020 by pete-mavrelis

     

Can I “unmerge” merged meshes UE4?

0  Asked on September 22, 2020 by formatc2013

   

unity : How to delete unused assets?

0  Asked on September 6, 2020 by andio

 

Ask a Question

Get help from others!

© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP