接入sdk覆盖AndroidManifest后提示ClassNotFoundException问题

项目接入了一个sdk,由于sdk需要添加新的权限,所以需要在AndroidManifest里添加相应的语句,由于是第一个需要修改AndroidManifest的sdk,项目里并没有对应的AndroidManifest文件,鉴于项目当前的配置,所以我先导出了一份eclipse工程,然后复制这份AndroidManifest到Plugin/Android目录下,添加好对应的权限后,重新打包运行,游戏直接闪退。

使用adb截取日志,发现是ClassNotFoundException错误,对比了路径,感觉每错,把修改后的AndroidManifest放到刚导出的eclipse工程下,打包apk,运行正常,奇怪了。

删除掉unity下的AndroidManifest文件,打包是ok的。将AndroidManifest文件放在eclipse下打包也是对的。可以确定的是AndroidManifest放置的路径没问题。

简单搜索了一下,并没有发现有好的解决方案。

官方sdk demo示例也有同样的问题。。。

虽然官方demo有问题,但是感觉这个问题还是可以解决的,关键是AndroidManifest这个文件,根据报错进行了一些修改,可以肯定的是问题就出在一个字符串上 android:name=”com.demo.sample.UnityPlayerActivity”,demo和sample对应的是companyName和ProductName,在导出的eclipse工程里面这个包名和文件名是正确的,然后我试着改成android:name=”UnityPlayerActivity”,重新打包后发现报错是一样的,意味着会自动进行字符串的填充,将包名加上去。

搜了下Unity AndroidManifest,看到了官方文档,认真读了下, https://docs.unity3d.com/Manual/android-manifest.html,看下没有AndroidManifest时会是什么一个字符串呢?删掉AndroidManifest文件,重新打包,找到AndroidManifest打包后的AndroidManifest文件,发现字符串为android:name=”com.unity3d.player.UnityPlayerActivity”,试着进行修改,打包运行,成功解决问题。

如果有遇到这个问题的朋友,可以试着按这个方法操作一下,当然如果你自己做了将android代码修改并做成unity插件的话,这个值应该是前面提到的字符串,因为这时候有对应的jar包了,关于如何将android插件做成unity插件,可以参考我以前的文章。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值