【问题标题】:Android Studio cwac-camera CameraFragment java.lang.LinkageErrorAndroid Studio cwac-camera CameraFragment java.lang.LinkageError
【发布时间】:2016-01-11 12:43:48
【问题描述】:

我遇到了一个令人头疼的问题...我再次开始 android 开发,经过 2 年的暂停并转移到 Android Studio。

我正在制作一个简单的相机应用程序来拍摄单张照片。在遇到预览大小、方向和旋转方面的巨大问题后,我决定使用 cwac-camera。

我已经包含了这样的库:

compile 'com.commonsware.cwac:camera:0.6.+'

使用此存储库:

maven { url "https://s3.amazonaws.com/repo.commonsware.com" }

我的应用 sdk 参数是:

compileSdkVersion 23
buildToolsVersion "23.0.1"

minSdkVersion 15
targetSdkVersion 23

我已经挽救了演示项目,现在我面临以下异常:

java.lang.LinkageError: com.test.testapp.TestCameraFragment

当我的活动调用时会发生这种情况:

current = TestCameraFragment.newInstance(false);

在创建时...

我不知道是什么导致了错误。我尝试过清理、重新包含库、重命名方法等。

有什么新鲜想法吗?

【问题讨论】:

  • 你能发布你的堆栈跟踪快照吗

标签: java android commonsware-cwac cwac-camera


【解决方案1】:

Fragment 在 API 级别 23 中添加了一个getHost() 方法(虽然我认为它可能已经存在于 API 级别 21-22 中,只是标有@hide)。这与CameraFragment 中的getHost() 方法冲突。

解决方法是将您的 compileSdkVersion 设置为 19 或更低,这(出于某种原因)不会触发问题。

由于这是对已停产库的公共 API 的重大更改,因此我需要仔细考虑我将如何处理它...

【讨论】:

  • 解决了所有问题。我已将 compileSdkVersion、targetSdkVersion 和 appcompat 库替换为 com.android.support:appcompat-v7:19.1.0 的修订版。顺便说一句,工作很棒。
  • @iganev:顺便说一句,CWAC-Camera 的 0.7.0 版本通过将 getHost() 重命名为 getCameraHost() 并将 setHost() 重命名为 setCameraHost() 来解决此问题。这将需要在使用这个库的项目中进行一些重构,但它比依赖 v19 的东西风险更小。见github.com/commonsguy/cwac-camera/blob/master/…
  • 非常感谢您提供的信息。我会记住这一点。我已经重构了我的测试应用程序以适应 v19,因此这在任何未来的项目中都会很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多