【问题标题】:How to compile a APK containing the Google Cardboard driver for Android 4.1 (SDK 16)如何编译包含适用于 Android 4.1 (SDK 16) 的 Google Cardboard 驱动程序的 APK
【发布时间】:2017-05-22 12:57:51
【问题描述】:

当前的官方 Google Cardboard 应用和旧版 Unity 的 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 编译它。但是每次都这样做会很慢,所以一直在浪费时间......

【问题讨论】:

    标签: android unity3d android-manifest google-cardboard google-vr


    【解决方案1】:

    使用19 而不是16 的生成文件创建于:Temp/StagingArea/android-libraries/unitygvractivity/AndroidM‌​anifest.xml。我意识到我们可以在Assets/Plugins/Android/ 中找到与该文件夹同名的文件unitygvractivity.aar。在谷歌上搜索我发现我们可以解压那个文件。我用 OSX 中的 Unarchiver 解压它。根据this answer,我们也可以执行:

    unzip unitygvractivity.aar -d unitygvractivity
    

    解压后,我们可以在解压后的文件夹unitygvractivity 中找到AndroidM‌​anifest.xml。我们在该文件中将19 更改为16,然后将其压缩回aar 格式。根据same answer我们可以执行:

    jar cvf unitygvractivity.aar -C unitygvractivity/ .
    

    最后,我们将原来的unitygvractivity.aar 文件更改为我们刚刚创建的新文件。它会编译。

    那么下一个问题是:如果它在 Android 4.1 中可以工作,为什么 Google 将它设置为 4.4 及更高版本?也许我没有使用的库的一部分需要 4.4?


    更新:谷歌的回答 (https://github.com/googlevr/gvr-unity-sdk/issues/439):

    我们在 sdk 中使用了一些 19 级 API,因此不能保证它可以正常工作 19 岁以前的目标。您应该将 19 设置为最低目标 纸板

    【讨论】:

      【解决方案2】:

      每次构建 Android 游戏时,它都会生成新的清单。尝试将其复制到 Assets/Plugins/Android。 复制后,统一使用此清单而不是生成新的... 在我的情况下工作。 顺便说一句。如果你使用 min sdk 为 19 的库,将 unity 设置为 16 将无济于事。

      【讨论】:

      • 我猜它行不通,但我还是想尝试一下......不幸的是,Assets/Plugins/Android/ 包含:AndroidManifest.xml 和 AndroidManifest-Cardboard.xml 已经
      • 我已经意识到我们可以在 Assets/Plugins/Android/ 中找到文件 unitygvractivity.aar ...并且生成的文件为 19 而不是 16,创建于:Temp/StagingArea/android-libraries/ unitygvractivity/AndroidManifest.xml
      • 它已经在 Android 4.1 中工作了......(如果你好奇,请看我的回答)
      • 正如我所说...它是在支持 19 而不是 16 的情况下编译的,这就是为什么你不能将统一设置为 16。也许它会在 4.1 上导致一些问题,为什么他们为 4.4+ 构建它.?
      • 我在这里问过:plus.google.com/115463690952639951338/posts/jFiVGzDarkk也许有人知道...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2016-02-23
      • 2015-07-12
      相关资源
      最近更新 更多