在Unity 3D中创建oculus go清单后构建失败

时间:2019-09-02 18:28:38

标签: unity3d android-manifest oculusgo

我正在尝试使用Unity 3D发布Oculus GO应用程序构建。我遵循有关发布此类应用程序的OVR说明,可以在以下位置找到它们:https://developer.oculus.com/documentation/mobilesdk/latest/concepts/mobile-native-manifest/

说明中提到您必须使用Oculus->工具->创建商店兼容的AndroidManifest.xml,然后在其中填充应用程序的详细信息。

Oculus工具生成的AndroidManifest.xml文件如下:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="auto">
    <application
        android:allowBackup="false">
        <activity
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
            android:configChanges="locale|fontScale|keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|touchscreen|uiMode"
            android:launchMode="singleTask"
            android:name="com.unity3d.player.UnityPlayerActivity"
            android:excludeFromRecents="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.INFO"/>
            </intent-filter>
        </activity>
        <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
    </application>
</manifest>

我的清单文件根据上述Oculus网站上的说明进行编辑后(例如,添加软件包名称等)如下所示:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="xx.xx.xx"
          android:versionCode="1" 
          android:versionName="1.0" 
    android:installLocation="auto">
    <application>
      <meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only"/>
        <activity
            android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
            android:configChanges="density|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|uiMode"
            android:launchMode="singleTask"
            android:name="com.unity3d.player.UnityPlayerActivity"
            android:excludeFromRecents="true"
            android:resizeableActivity="false"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.INFO"/>
            </intent-filter>
        </activity>
        <meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="false" />
    </application>
  <uses-sdk android:minSdkVersion="21"/>
  <uses-feature android:glEsVersion="0x00030001" />
</manifest>

当我尝试构建应用程序时,它显示以下错误:

NullReferenceException: Object reference not set to an instance of an object
UnityEditor.XR.Oculus.OculusManifest.UpdateOrCreateNameValueElementsInTag (System.Xml.XmlDocument doc, System.String parentPath, System.String tag, System.String firstName, System.String firstValue, System.String secondName, System.String secondValue, System.String thirdName, System.String thirdValue) (at Library/PackageCache/com.unity.xr.oculus.android@1.38.2/Editor/OculusBuildProcessor.cs:60)
UnityEditor.XR.Oculus.OculusManifest.OnPostGenerateGradleAndroidProject (System.String path) (at Library/PackageCache/com.unity.xr.oculus.android@1.38.2/Editor/OculusBuildProcessor.cs:102)
UnityEditor.Android.AndroidBuildPipelineInterfaces.OnGeneratePlatformProjectPostprocess (System.String path, System.Boolean strict) (at C:/buildslave/unity/build/Editor/Mono/BuildPipeline/Android/AndroidPostGenerateGradleProject.cs:39)
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

我不得不提到,如果我在不使用通过Oculus Tool创建的AndroidManifest.xml文件的情况下构建应用程序,则构建起来就很好。

3 个答案:

答案 0 :(得分:0)

这是Oculus Android软件包中的错误。 您可以查看软件包中的OculusBuildProcessor.cs脚本的提示。缓存在Library/PackageCache/com.unity.xr.oculus.android@X.XX.X\Editor中 检查您在错误的调用堆栈中得到的行。您的情况是OculusBuildProcessor.cs:102 它无法处理必需的属性,例如:

<meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only"/>
android:launchMode="singleTask"
android:resizeableActivity="false"

您可以安全地删除这些属性,因为这些属性将自动添加。给我造成麻烦(不知道为什么)的是vr_only meta-data.

答案 1 :(得分:0)

我已经解决了这个问题

1-从我的项目中删除AndroidManifest

2-在AndroidManifest.OVRSubmission中进行编辑

<category android:name="android.intent.category.INFO"/>
 change this line with 
<category android:name="android.intent.category.LAUNCHER"/>

答案 2 :(得分:0)

我有一个类似的错误。我通过转到程序包管理器并更新我的程序包来解决它

相关问题