我试图Android应用转换为LIB模块,而不复制源。我做到了(修改后的build.gradle文件),并同步并建立,但是当我添加的依赖,从而导致AAR文件到另一个项目(在这里我想用这个LIB)构建失败和资源链接失败。
我不明白为什么:
例如,可能的错误之一是:
Android resource linking failed
error: resource style/TextAppearance.Design.Tab (aka bv.dev.aarlibtester:style/TextAppearance.Design.Tab) not found.
error: failed linking references.
所以说,资源没有找到,并指向我在LIB使用的依赖关系(在这个例子是design
)
我创建的测试项目来演示这个简单的例子。
aar-res-app
是使用design
依赖简单的应用程序项目aar-res-lib
是从这个项目中创建库(转换)aar-res-lib-tester
是使用该LIB简单的应用程序项目。目前,我改名为库包不与应用程序包匹配,并采用jar
代替aar
的。
我创建它使用Gradle -> root -> Tasks -> Other -> createFullJarRelease
。
结果是Build > Intermediates > Full_jar > Release > CreateFullJarRelease > full.jar
所以,真正的问题是aar
和jar
这种方式创建不包含上他们依赖库。如果添加库这种方式,你需要它的所有依赖添加到使用它的项目。
在我的例子是implementation 'com.android.support:design:28.0.0'
。
如果项目包含了很多这样的依赖关系,你应该添加他们。但你仍然可以在问题,如“清单合并失败”等问题上运行。
或者你可以尝试部署你的lib到Maven或jitpack,但你需要正确设置是为了确保将所有需要的依赖将生成的POM文件,以便能够方便地使用这个库。