【问题标题】:Updated android studio and got fail with Gstreamer build更新了 android studio 并在 Gstreamer 构建中失败了
【发布时间】:2017-11-01 09:12:55
【问题描述】:

使用新的 android gradle 插件更新到 Android Studio 3.0.0。 构建项目收到消息时:

What went wrong:
Execution failed for task `':app:externalNativeBuildDebug'`.

Expected output file at `gst-build-arm64-v8a/libgstreamer_android.so` for target `gstreamer_android` but there was none

但是libgstreamer_android.so 库文件已经存在。对于本机代码,我使用 ndk-build。有人有这个问题吗?

【问题讨论】:

  • 我遇到了完全相同的问题,我正在努力解决...我已经尝试使用 gradle 4.3 而不是 4.1,清理,重建,重新链接项目.. .我想我会尝试降级android插件3.0,而我没有找到更好的解决方案
  • @EduardoFernando,请看我的回答。

标签: android-studio android-gradle-plugin gstreamer gradle-plugin


【解决方案1】:

添加到我们的 android 模块字段目标的 build.gradle 文件中。

android { 
  defaultConfig { 
    externalNativeBuild { 
      ndkBuild { 
        targets "name_of_native_module_in_android_mk_file" 
      } 
  ... 
}

不要添加gstreamer_android

【讨论】:

  • 我有一些问题... 首先:它在 (build.grade Module:app) 上吗?第二:我的 externalNativeBuild{ } 不在 defaultConfig { }... 它在 android { }... 我应该从 android{ } 中删除它并将其放在 android{ defaultConfig{ } } 上吗?第三:在 externalNativeBuild{ndkBuild{ } } 里面有“path 'src/main/jni/Android.mk'” 我应该把它保留在那里还是删除只添加带有“targets”的命令?第四:“name_of_native_module_in_android_mk_file”是什么以及在哪里?它在“LOCAL_MODULE”变量中吗?
  • @EduardoFernando,1. 在使用 gstreamer 的模型中。 2. 应用程序中的 externalNativeBuild 保存到 Android.mk 文件的路径,默认配置中的 externalNativeBuild 我描述了目标(本机模块)和 abi 过滤器。我希望它会有所帮助。你
【解决方案2】:

更新: Valery 的回答有效!

过时的答案:
这不是完美修复,它只是暂时的,直到我有时间深入研究这个问题。
降级你的 gradle 插件:

  1. 文件 -> 项目结构
  2. 点击“项目”
  3. 在“Gradle 版本”字段中输入:
    • 3.3
  4. 在“Android 插件版本”字段中输入:
    • 2.3.3
  5. 点击“确定”

接受消息,同步项目等...Android Studio 可能会提示一个窗口,要求再次更新 gradle 插件,只是现在不要接受它...
我猜 gradle 上的更新改变了构建的方式,也许 Android.mk 上的某些东西必须改变或者 build.grade 上的一些其他参数......

编辑: 我在以下位置找到了一些线索:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

API 更改
Android 插件 3.0.0 引入了 删除的 API 更改 某些功能,可能会破坏您现有的构建。之后 插件的版本可能会引入新的公共 API 来取代 损坏的功能。

在构建时修改变体输出可能不起作用使用变体 新插件破坏了用于操作变体输出的 API。它 仍然适用于简单的任务,例如更改 APK 名称 构建时间,如下图:...

所以,我想我们应该继续使用临时修复(不是更新版本的 gradle)...

【讨论】:

  • 我找到了 *.so 文件,位于 app/build/intermediates/ndkBuild/debug/obj/local/arm64-v8a/objs-debug/*.so,但在构建项目时不知道如何使用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
  • 2015-12-11
相关资源
最近更新 更多