【发布时间】:2017-08-11 09:44:07
【问题描述】:
我正在尝试构建一个应用程序来合并两个 Unity 插件 ARToolKit 和 CameraShot。问题是其中一个插件的清单文件覆盖了另一个清单文件(换句话说,它们都必须位于同一位置)。幸运的是,CameraShot 指定了哪些活动是必要的,我能够制作自定义 Android 清单文件。
该应用在 Android 5 上运行良好,但在我尝试在 Android 6 上保存使用 CameraShot 拍摄的图像后崩溃。我认为这是由于权限授予的更改而发生的,但我已经检查了两台设备上已安装应用的权限它们是相同的。
在 Android 5 上,应用在安装时请求权限,而在 Android 6 上,它在我第一次运行应用时请求权限。
是否有可能获得更多关于为什么该应用在一个操作系统版本而不是另一个操作系统版本上运行的想法?
这是清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.app" android:installLocation="preferExternal">
<application android:icon="@drawable/app_icon" android:label="@string/app_name">
<activity android:name="org.artoolkit.ar.unity.UnityARPlayerActivity" android:label="@string/app_name" android:screenOrientation="landscape" android:launchMode="singleTask" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.lib_name" android:value="unity" />
<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />
</activity>
<activity android:name="org.artoolkit.ar.base.camera.CameraPreferencesActivity" />
<activity android:name="com.astricstore.camerashots.CameraShotActivity" android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name="eu.janmuller.android.simplecropimage.CropImage" android:configChanges="orientation|keyboardHidden|screenSize" />
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera.any" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
我需要补充一点:这不是一个 Android 项目,而是一个 Unity 项目。因此,如果您要参考 Android 功能,请说明并指定如何使用它们,因为我没有使用 Android Studio 的经验。
感谢您的理解!
错误日志:
java.lang.RuntimeException: Unable to resume activity {com.eContent.PandaART/org.artoolkit.ar.unity.UnityARPlayerActivity}: java.lang.ClassCastException: android.view.View cannot be cast to android.view.ViewGroup
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1388)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassCastException: android.view.View cannot be cast to android.view.ViewGroup
at org.artoolkit.ar.unity.UnityARPlayerActivity.onResume(UnityARPlayerActivity.java:137)
at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258)
at android.app.Activity.performResume(Activity.java:6327)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1388)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
【问题讨论】:
-
请粘贴您的错误日志。
-
在 Android 6.0 中,您向用户询问权限。
-
@lidkxx 如何从 Unity 编辑器获取错误日志?我以为你只能用 Android Studio 来做
-
@BrunoFerreira 我假设我已经通过向清单文件添加权限来做到这一点。正如我所提到的,该应用程序在我第一次运行它时请求权限,如果我批准它们,当我查看应用程序详细信息时它们会正确显示。什么意思?
-
我的意思是。批准权限。
标签: android unity3d unity5 android-5.0-lollipop android-6.0-marshmallow