Comments (23)
我确认问题了,底下某些依赖的aar内的R.txt包含了一些id,但是又没有在pom里带上对应的依赖。而fataar插件是通过把R.txt变成R.java来合并id的。能否考虑下还是使用R.txt的形式而不是搞成一个r-classes.jar?谢谢。
from fat-aar-android.
最终成功了!不知道为什么之前那个 主 lib 怎么都不成功,我又写个一毛一样(gradle 配置全一样)的 lib ,在新的 lib 里做合并,完美成功!可是最终都不知道 那个失败的 lib 出了什么问题!
感谢作者!!!
感谢作者!!!
感谢作者!!!
小小 star 不成敬意😂
from fat-aar-android.
麻烦发一下使用的fat-aar版本号、gradle plugin版本号以及gradle版本号。
from fat-aar-android.
com.kezong:fat-aar:1.1.7
com.android.tools.build:gradle:3.3.2
gradle-4.10.1-all
想咨询下,我每个 module 里包名都不一样,且 module 之间有依赖关系,能用这个生成一个 aar 吗
from fat-aar-android.
现在可以使用maven插件上传,也是遇到了R文件问题,R文件确实存在,但是项目中引用的时候提示错误
from fat-aar-android.
现在可以使用maven插件上传,也是遇到了R文件问题,R文件确实存在,但是项目中引用的时候提示错误
看你的描述应该不是编译aar时的问题吧? 提供一下具体的错误信息吧,然后各个插件版本也提供一下。
from fat-aar-android.
com.kezong:fat-aar:1.1.7
com.android.tools.build:gradle:3.3.2
gradle-4.10.1-all
想咨询下,我每个 module 里包名都不一样,且 module 之间有依赖关系,能用这个生成一个 aar 吗
可以的,example就是。
我这几天出差,没带电脑,你试一下example里的demo,把gradle和gradle plugin改成你的是否可行,或者你将你自己的工程改成demo中同样的gradle版本试试
from fat-aar-android.
com.kezong:fat-aar:1.1.7
com.android.tools.build:gradle:3.4.1
gradle-5.1.1-all
一样有问题
from fat-aar-android.
一样有问题,1.1.7版本。我这个com.alibaba.offline.solution.apos.wrapper.R下面本来就没有attr
from fat-aar-android.
同问题
from fat-aar-android.
如果出现该问题,很有可能是子module需要整体打包,但是没有在主module中加入embed依赖。
具体可以看看 #14
from fat-aar-android.
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个
from fat-aar-android.
提示找不到那个 layout, 路径应该是在下面那个 R 文件里面才对
from fat-aar-android.
我确认问题了,底下某些依赖的aar内的R.txt包含了一些id,但是又没有在pom里带上对应的依赖。而fataar插件是通过把R.txt变成R.java来合并id的。能否考虑下还是使用R.txt的形式而不是搞成一个r-classes.jar?谢谢。
赞同
from fat-aar-android.
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个
我这边试验过example里加Activity和layout是没有问题的,我有时间会更新example。
aar打包过程中,会将所有资源都合并到主lib下,所以会在主lib中真正生成R.class,R文件路径不是错的,这个步骤是将子module中对应的R import转接到主lib中的R,你有时间可以看一下源码。
查看一下activity_ebl_wxentry所在的子module是否有被主library embed。
from fat-aar-android.
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个我这边试验过example里加Activity和layout是没有问题的,我有时间会更新example。
aar打包过程中,会将所有资源都合并到主lib下,所以会在主lib中真正生成R.class,R文件路径不是错的,这个步骤是将子module中对应的R import转接到主lib中的R,你有时间可以看一下源码。查看一下activity_ebl_wxentry所在的子module是否有被主library embed。
你说的正常情况,是不会出错的。
我们遇到的都是底下aar不规范的情况(R.txt带了一堆id,但是没有把对应的pom打进来),而且无法把这些缺失的依赖打进来(比如我这边定位到是support包,肯定不能embed进来)。
问题还是出在合并子aar的R.txt到r-classes.jar这个做法,会使这种不规范的aar在这种情况下引起错误。
而google本身工具链反正合并的是R.txt,并不是个类,所以这些不规范的aar在一般情况下不会引起错误。
临时的解法, @keke521 可以试试把这个aar的R.txt给清空,重新打一下这个aar,是可以成功的。
from fat-aar-android.
@zhoujian365
我了解你的意思了,现在确实没有办法解决这种问题,因为一个aar中只能包含一个R.txt,如果仅仅只是将R.txt合并是不够的,因为这样会在打包apk的时候,将所有R.txt中的资源全都生成在该aar的packageName的包名下,这样就导致原来子module中import的其实是子module包名下的R,而在最后apk中,R却变到了主aar的包名下,导致子module中R类找不到。
现在插件的做法是做了两步:
- 将所有R.txt合并,这样最后生成apk时,会统一生成主module包名下的R.class文件
- 根据所有子module的R.txt生成r-classes.jar,目的是做一层映射,将所有的子module包名下的R全部映射到主module的R。
所以直接使用R.txt是无法实现资源合并的;
至于你的这种情况,我现在能想到的是能不能做一个资源检查,查看R.txt中的资源是否真正存在,如果不存在的话将该行过滤掉。
目前的话,建议你们手动过滤下R.txt文件。
from fat-aar-android.
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个我这边试验过example里加Activity和layout是没有问题的,我有时间会更新example。
aar打包过程中,会将所有资源都合并到主lib下,所以会在主lib中真正生成R.class,R文件路径不是错的,这个步骤是将子module中对应的R import转接到主lib中的R,你有时间可以看一下源码。查看一下activity_ebl_wxentry所在的子module是否有被主library embed。
tac_module_wechat依赖 tacsdk module
所以我在主 module 里 embed他俩 没问题吧。
这个找不到的 layout id 就在这个 module 里! 实在不知道是为啥呢!求个 解决问题的方向
from fat-aar-android.
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个我这边试验过example里加Activity和layout是没有问题的,我有时间会更新example。
aar打包过程中,会将所有资源都合并到主lib下,所以会在主lib中真正生成R.class,R文件路径不是错的,这个步骤是将子module中对应的R import转接到主lib中的R,你有时间可以看一下源码。
查看一下activity_ebl_wxentry所在的子module是否有被主library embed。tac_module_wechat依赖 tacsdk module
所以我在主 module 里 embed他俩 没问题吧。
这个找不到的 layout id 就在这个 module 里! 实在不知道是为啥呢!求个 解决问题的方向
刚刚发现 我新建个项目 把这两个模块导进去,然后居然合并成功了!!
可是在我原始的项目里为什么就不成功呢?什么原因呢?
from fat-aar-android.
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个我这边试验过example里加Activity和layout是没有问题的,我有时间会更新example。
aar打包过程中,会将所有资源都合并到主lib下,所以会在主lib中真正生成R.class,R文件路径不是错的,这个步骤是将子module中对应的R import转接到主lib中的R,你有时间可以看一下源码。
查看一下activity_ebl_wxentry所在的子module是否有被主library embed。你说的正常情况,是不会出错的。
我们遇到的都是底下aar不规范的情况(R.txt带了一堆id,但是没有把对应的pom打进来),而且无法把这些缺失的依赖打进来(比如我这边定位到是support包,肯定不能embed进来)。
问题还是出在合并子aar的R.txt到r-classes.jar这个做法,会使这种不规范的aar在这种情况下引起错误。
而google本身工具链反正合并的是R.txt,并不是个类,所以这些不规范的aar在一般情况下不会引起错误。临时的解法, @keke521 可以试试把这个aar的R.txt给清空,重新打一下这个aar,是可以成功的。
我这些模块都是 项目里的 module 没有 R.txt, 如果全打成 aar ,再清空 R.txt 再合并,工作量太大了,我们是组件化的,module 异常的多😂
from fat-aar-android.
@zhoujian365
我了解你的意思了,现在确实没有办法解决这种问题,因为一个aar中只能包含一个R.txt,如果仅仅只是将R.txt合并是不够的,因为这样会在打包apk的时候,将所有R.txt中的资源全都生成在该aar的packageName的包名下,这样就导致原来子module中import的其实是子module包名下的R,而在最后apk中,R却变到了主aar的包名下,导致子module中R类找不到。现在插件的做法是做了两步:
- 将所有R.txt合并,这样最后生成apk时,会统一生成主module包名下的R.class文件
- 根据所有子module的R.txt生成r-classes.jar,目的是做一层映射,将所有的子module包名下的R全部映射到主module的R。
所以直接使用R.txt是无法实现资源合并的;
至于你的这种情况,我现在能想到的是能不能做一个资源检查,查看R.txt中的资源是否真正存在,如果不存在的话将该行过滤掉。
目前的话,建议你们手动过滤下R.txt文件。
请问这个手动怎么过滤R.txt文件,这个R.text文件是在哪个文件夹下的
from fat-aar-android.
from fat-aar-android.
最后怎么解决的?我用最新的fat-aar也出现了这个问题。
from fat-aar-android.
Related Issues (20)
- 1.3.8的fat-aar版本,AGP 7.3 Gradle7.4,资源文件没merge到一起,class什么的都merge到一起了。 HOT 11
- Duplicated *.so resources HOT 5
- packagingOptions的配置对这个插件生效吗
- resources not included on AGP 7.3.0 HOT 2
- Build fat AAR file from flutter module
- Binding Resouces (.BR) not created for sub lib,
- java.lang.NoSuchFieldError: No static field ic_rapido_splash of type I in class Lcom/rapido/passenger/R$drawable; or its superclasses
- Could not resolve all dependencies for configuration ':dsrrdlibrary:embed HOT 1
- Android Resource linking failed
- Support for Gradle 8+, AGP 8+ HOT 3
- 如何过滤abi,打出来的最终AAR包含了x86,armeabi,armeabi-v7a,arm64-v8a所有的so,不想要这么多,abiFilters不生效
- Failed to apply plugin [id 'com.kezong.fat-aar'] HOT 2
- java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/lifecycle/runtime/R$id; HOT 1
- 完全不生效
- Task with name 'transformClassesWithTransformRForFataarDebug' not found in project HOT 2
- 一种安全的替换 fat-aar-android 插件的方法 HOT 8
- Is there a package relocation for the embed dependencies?
- 请问下如何配置Gradle 8.0版本 HOT 1
- How to exlcude "org.jetbrains.kotlin:kotlin-stdlib" HOT 2
- Cannot Merge SmartRefreshLayout 打包Module无法合并SmartRefreshLayout
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fat-aar-android.