目前的官方Google Cardboard应用程序和适用于Android 4.1的旧版Google Cardboard驱动程序均适用于Android 4.1及更高版本。
但目前版本的Google Cardboard for Unity库已设置为Android 4.4及更高版本。我尝试将设置从4.4更改为4.1,搜索所有字符串,例如:<uses-sdk android:minSdkVersion="19"
,将其更改为<uses-sdk android:minSdkVersion="16"
。
播放器设置也已更改为16。
不幸的是,编译时出现以下错误:
Error: [Temp/StagingArea/AndroidManifest-main.xml:14, /Users/ch/workspaces/unity_workspace/educainventions/Temp/StagingArea/android-libraries/unitygvractivity/AndroidManifest.xml:2]
Main manifest has <uses-sdk android:minSdkVersion='16'> but library uses minSdkVersion='19'
那是对的:/Temp/StagingArea/android-libraries/unitygvractivity/AndroidManifest.xml is set to minSdkVersion='19'
我也将该文件更改为16,但编译时更改为19,并发生相同的错误。
什么创建该文件将其从19更改为16?我认为解决方案可能是生成Android代码,然后使用Android Studio进行编译。然而,每次这样做都会非常缓慢,所以不断浪费时间......
答案 0 :(得分:1)
在19
处创建16
代替Temp/StagingArea/android-libraries/unitygvractivity/AndroidManifest.xml
的生成文件。我意识到我们可以在unitygvractivity.aar
内找到与该文件夹名称相同的文件Assets/Plugins/Android/
。在Google上搜索我发现我们可以解压缩该文件。我在OSX中使用Unarchiver解压缩它。根据{{3}},我们也可以执行:
unzip unitygvractivity.aar -d unitygvractivity
一旦解压缩,我们就可以在解压缩的文件夹AndroidManifest.xml
中找到unitygvractivity
。我们在该文件中将19
更改为16
,然后将其压缩回aar格式。根据{{3}},我们可以执行:
jar cvf unitygvractivity.aar -C unitygvractivity/ .
最后,我们通过刚刚创建的新文件更改原始unitygvractivity.aar
文件。它会编译。
所以下一个问题是:如果它在Android 4.1中有效,为什么Google将其设置为4.4及以上?也许我没有使用的库的一部分需要4.4?
更新:Google的回答(this answer):
我们在sdk中使用了一些19级API,因此无法保证其正常工作 与19前的目标。您应该将19设置为最小目标 纸板
答案 1 :(得分:0)
每次构建Android游戏时,它都会生成新的清单。尝试将其复制到Assets / Plugins / Android。 复制后,unity使用此清单而不是生成新的... 在我的案例中工作。 BTW。如果您使用min sdk为19的库,将团结设置为16将无法帮助。