gpt4 book ai didi

带有资源的 Android Studio Android 库

转载 作者:可可西里 更新时间:2023-10-31 22:04:05 25 4
gpt4 key购买 nike

我想用 jar 文件和没有源代码的资源创建 Android 库。

依赖结构:

  • Android 库示例:
    • 取决于对 v4、v7 的支持和一些包含的 jar
  • 示例应用程序
    • 取决于 Android Library Sample 和 v4、v7 支持

我可以通过编译 Android 示例库来生成 jar 文件,但是当我使用带有生成的 jar 的 Android 库示例创建新的工作区时,我得到这样的错误:

错误:任务 ':sampleAppProject:dexDebug' 执行失败。

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2

这似乎是由我生成的 jar 中包含的重复支持 v4、v7 引起的。当我从 gradle 依赖项中删除支持 v7 和 v4 库时,我得到:

错误:(1) 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.Light”匹配的资源。错误:(1) 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.Light”匹配的资源。错误:(1) 检索项目的父项时出错:找不到与给定名称“Theme.AppCompat.Light.DarkActionBar”匹配的资源。

因此缺少支持资源。我该如何解决这个问题?

更新:

根据@dawidgdanski 的提示,我已经能够编译我的项目。我的错误更改为 finished with non-zero exit value 1 我认为这是由重复的包名称引起的。我更改了 list 中的包名称,但现在我得到了

java.lang.ClassNotFoundException:在路径上找不到类“**.android.R$layout”:DexPathList[[zip 文件 ...

这似乎是因为我在 list 中更改了包,并且在编译过程中 R 类与 jar 文件中包含的类不一致

从 Gradle 控制台:

AGPBI: {"kind":"SIMPLE","text":"java.lang.IllegalArgumentException: already added: L.../library/android/R$anim;","position":{}, "original":"java.lang.IllegalArgumentException: 已添加:L.../library/android/R$anim;"

最佳答案

是的,您复制了依赖项。如果您在项目目录中执行 gradle dependencies,您将看到支持库增加了一倍。为了防止这种情况的发生,您需要决定您是否真的需要 Android 库中的支持库。如果您需要它们,您必须明确告诉最终开发人员,支持库也应该从他们的应用程序中排除。

让我们关注以下 fragment :

dependencies {
// App dependencies
compile 'com.android.support:appcompat-v7:21.0.3'

//Library dependency
compile (project(':library')) {
exclude group: 'com.android.support' module: 'appcompat-v7'
}
}

假设您的库使用兼容性库,这是您排除不必要的“appcompat-v7”依赖项的方式。

另一方面,您可以只包含您的库依赖项,因为它包含满足您需求的版本的 appcompat-v7。

您可以看到我刚才创建的示例项目。它由几个相互协作的模块组成。

https://github.com/dawidgdanski/BLE-matters

有时您会包含包含已预编译依赖项的库。通过执行 gradle dependencies 你可以看到它们并排除它们。您唯一需要识别的是要排除的依赖项是模块还是附加到您包含的父库的单独库。

预编译模块的排除如下所示:

 compile ('com.google.android.gms:play-services-wearable:6.1.71') {
exclude module: 'support-v4'
}

然而,为了排除预编译依赖,您可以这样指定它:

compile (project(':library')) {
exclude group: 'com.android.support' module: 'appcompat-v7'
}

顺便说一句。你遇到过和你类似的问题吗?

Java finished with non-zero exit value 2 - Android Gradle

您的应用程序可能已达到 65k 方法阈值。

干杯

关于带有资源的 Android Studio Android 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30198911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com