Coder Social home page Coder Social logo

Comments (23)

zhoujian-official avatar zhoujian-official commented on May 28, 2024 3

我确认问题了,底下某些依赖的aar内的R.txt包含了一些id,但是又没有在pom里带上对应的依赖。而fataar插件是通过把R.txt变成R.java来合并id的。能否考虑下还是使用R.txt的形式而不是搞成一个r-classes.jar?谢谢。

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024 1

最终成功了!不知道为什么之前那个 主 lib 怎么都不成功,我又写个一毛一样(gradle 配置全一样)的 lib ,在新的 lib 里做合并,完美成功!可是最终都不知道 那个失败的 lib 出了什么问题!
感谢作者!!!
感谢作者!!!
感谢作者!!!
小小 star 不成敬意😂

from fat-aar-android.

kezong avatar kezong commented on May 28, 2024

麻烦发一下使用的fat-aar版本号、gradle plugin版本号以及gradle版本号。

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024

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.

WindyChZh avatar WindyChZh commented on May 28, 2024

现在可以使用maven插件上传,也是遇到了R文件问题,R文件确实存在,但是项目中引用的时候提示错误

from fat-aar-android.

kezong avatar kezong commented on May 28, 2024

现在可以使用maven插件上传,也是遇到了R文件问题,R文件确实存在,但是项目中引用的时候提示错误

看你的描述应该不是编译aar时的问题吧? 提供一下具体的错误信息吧,然后各个插件版本也提供一下。

from fat-aar-android.

kezong avatar kezong commented on May 28, 2024

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.

cervy avatar cervy commented on May 28, 2024

com.kezong:fat-aar:1.1.7
com.android.tools.build:gradle:3.4.1
gradle-5.1.1-all

一样有问题

from fat-aar-android.

zhoujian-official avatar zhoujian-official commented on May 28, 2024

一样有问题,1.1.7版本。我这个com.alibaba.offline.solution.apos.wrapper.R下面本来就没有attr

image

from fat-aar-android.

CCY0122 avatar CCY0122 commented on May 28, 2024

同问题

from fat-aar-android.

kezong avatar kezong commented on May 28, 2024

如果出现该问题,很有可能是子module需要整体打包,但是没有在主module中加入embed依赖。
具体可以看看 #14

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024

用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错!
另外我按照#14 里所有依赖都embed ,了 但是 还是会报一个 layout 找不到,而且 R 文件路径不对,应该是那个

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024

image
image
提示找不到那个 layout, 路径应该是在下面那个 R 文件里面才对

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024

我确认问题了,底下某些依赖的aar内的R.txt包含了一些id,但是又没有在pom里带上对应的依赖。而fataar插件是通过把R.txt变成R.java来合并id的。能否考虑下还是使用R.txt的形式而不是搞成一个r-classes.jar?谢谢。

赞同

from fat-aar-android.

kezong avatar kezong commented on May 28, 2024

用你的 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.

zhoujian-official avatar zhoujian-official commented on May 28, 2024

用你的 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.

kezong avatar kezong commented on May 28, 2024

@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.

keke521 avatar keke521 commented on May 28, 2024

用你的 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。

我已经再三确认了 !
这是我主 module:
image

tac_module_wechat依赖 tacsdk module
所以我在主 module 里 embed他俩 没问题吧。
image

这个找不到的 layout id 就在这个 module 里! 实在不知道是为啥呢!求个 解决问题的方向

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024

用你的 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。

我已经再三确认了 !
这是我主 module:
image

tac_module_wechat依赖 tacsdk module
所以我在主 module 里 embed他俩 没问题吧。
image

这个找不到的 layout id 就在这个 module 里! 实在不知道是为啥呢!求个 解决问题的方向

刚刚发现 我新建个项目 把这两个模块导进去,然后居然合并成功了!!
可是在我原始的项目里为什么就不成功呢?什么原因呢?

from fat-aar-android.

keke521 avatar keke521 commented on May 28, 2024

用你的 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.

PiYun01 avatar PiYun01 commented on May 28, 2024

@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.

zhoujian-official avatar zhoujian-official commented on May 28, 2024

from fat-aar-android.

qwe134679 avatar qwe134679 commented on May 28, 2024

最后怎么解决的?我用最新的fat-aar也出现了这个问题。

from fat-aar-android.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.