bytedance / ByteX

ByteX is a bytecode plugin platform based on Android Gradle Transform API and ASM. 字节码插件开发平台
Apache License 2.0
3.14k stars 463 forks source link

Android App Bundle支持 #88

Open haizhiyun opened 3 years ago

haizhiyun commented 3 years ago

请问下aab 打包,怎么在dynamic feature 中生效,只在base apply插件还是在dynamic feature中要同样的配置呢?(尝试了下,只在base中配置,feature中没有生效,在feature中apply 打包报错 ) 谢谢! Android studio:4.1.2 agp:4.1.2 错误: Caused by: kotlin.KotlinNullPointerException at com.ss.android.ugc.bytex.gradletoolkit.ProjectKt.findVariantManager36(Project.kt:29) at com.ss.android.ugc.bytex.gradletoolkit.ProjectKt.findVariantManager(Project.kt:18) at com.ss.android.ugc.bytex.gradletoolkit.ProjectKt.findVariantScope(Project.kt:12) at com.ss.android.ugc.bytex.common.CommonTransform.getApplyingVariantScope(CommonTransform.java:66) at com.ss.android.ugc.bytex.common.CommonTransform.getReferencedScopes(CommonTransform.java:118)

yangzhiqian commented 3 years ago

只需要在宿主中apply bytex插件即可,不需要在feature模块apply。你那边怎么判断没有生效的呢?

haizhiyun commented 3 years ago

只需要在宿主中apply bytex插件即可,不需要在feature模块apply。你那边怎么判断没有生效的呢?

我写了个demo 反编译看没有达到预期目标,后面再看下,如果不行的话,我传demo上来

wtfisthatzzz commented 3 years ago

只需要在宿主中apply bytex插件即可,不需要在feature模块apply。你那边怎么判断没有生效的呢?

宿主和每个dynamic-feature的transform是独立的,在宿主apply好像没用。。我试过shrink-r、const_inline等几个插件没生效

yangzhiqian commented 3 years ago

你的Android Gradle Plugin环境是什么?宿主也可以处理dynamic-feature的代码,不一定要到feature模块中处理。

haizhiyun commented 3 years ago

你的Android Gradle Plugin环境是什么?宿主也可以处理dynamic-feature的代码,不一定要到feature模块中处理。

使用了官方的这个demo:https://github.com/android/app-bundle-samples (下面的DynamicFeatures); clone 后agp 版本修改为4.1.3 gradle 版本:6.7.1-all as 版本:4.1.3 在feature java 里面写Log.i("xxx","xxx") 这个语句并没有被优化掉 写在base(app) 中的语句能被优化掉

(我自己写的埋点插件,也是对动态feature无效)

haizhiyun commented 3 years ago

你的Android Gradle Plugin环境是什么?宿主也可以处理dynamic-feature的代码,不一定要到feature模块中处理。

使用了官方的这个demo:https://github.com/android/app-bundle-samples (下面的DynamicFeatures); clone 后agp 版本修改为4.1.3 gradle 版本:6.7.1-all as 版本:4.1.3 在feature java 里面写Log.i("xxx","xxx") 这个语句并没有被优化掉 写在base(app) 中的语句能被优化掉

(我自己写的埋点插件,也是对动态feature无效)

支持动态feature的配置:关闭r8工具,打开混淆选项,才会支持

FortuneDream commented 3 years ago

你的Android Gradle Plugin环境是什么?宿主也可以处理dynamic-feature的代码,不一定要到feature模块中处理。

使用了官方的这个demo:https://github.com/android/app-bundle-samples (下面的DynamicFeatures); clone 后agp 版本修改为4.1.3 gradle 版本:6.7.1-all as 版本:4.1.3 在feature java 里面写Log.i("xxx","xxx") 这个语句并没有被优化掉 写在base(app) 中的语句能被优化掉 (我自己写的埋点插件,也是对动态feature无效)

支持动态feature的配置:关闭r8工具,打开混淆选项,才会支持

所以说不是ByteX不适配,而是R8不适配??---我这边也碰到了transform各种不适配Bundle的问题