其他分享
首页 > 其他分享> > 带有资源的Android Studio Android库

带有资源的Android Studio Android库

作者:互联网

我想用没有源文件的jar文件和资源创​​建Android库.

依赖结构:

> Android库示例:

>取决于支持v4,v7和一些jar

> SampleApp

>取决于Android Library Sample和v4,v7支持

我可以通过编译Android Sample Library来生成jar文件,但是当我使用生成的jar使用Android Library Sample创建新的工作区时,出现如下错误:

错误:任务’: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的提示后,我已经能够编译我的项目.我的错误更改为非零退出值1,这是由我认为重复的程序包名称引起的.我在清单中更改了包名,但是现在我得到了

java.lang.ClassNotFoundException:在路径:DexPathList [[zip file …

似乎是由于我更改了清单中的包而导致的,并且在编译期间R类与jar文件中包含的类不一致

从Gradle控制台:

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

解决方法:

是的,您复制了依赖项.如果在项目目录中执行gradle依赖关系,则会看到支持库加倍.为了防止这种情况发生,您需要确定您是否确实需要Android库中的支持库.如果需要它们,则必须明确告知最终开发人员,支持库也应从其应用程序中排除.

让我们关注以下片段:

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依赖关系,您可以看到它们,也可以将它们排除在外.您唯一需要识别的是要排除的依赖项是模块还是附加到包含的父库的单独库.

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

 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-library,android-support-library,android
来源: https://codeday.me/bug/20191120/2043141.html