Closed yhxxxbl closed 5 years ago
是点击android studio上的Run按钮打包吗? 还是通过命令行执行打包命令?命令内容贴一下吧
具体的命令是这样的 @echo off call adb shell rm /sdcard/testplugin/host_classes.dex call gradle ^ host_main:clean ^ host_main:assembleOnlineDebug
就是我在local.properties中设置组件App=false后 执行上述命令后打包仍会排除组件App 编译时我手动打印出来的组件App的runAsApp为true
打包日志的这一段截图看一下
这段log没打印出来过,所以才会有疑问在上面代码那里就return了T.T
主要是这段log的上半部分:我截图中的第3行日志
麻烦您了! 场景是:我需要将一个组件独立编译App且需要灵活切换 前置条件:local文件中设置为false且addComponent project 但打包流程中并没有出现该组件的configure project 所以3、4是非常规流程截取的log(3\4中的模块即为被漏掉的组件) 第一个是主工程的: 第二个是依赖了CC但是没有独立编译成App的组件: 第三个是使用gradle build命令编译的 独立运行且需要切换是否隔离的组件: 第四个是去掉addcomponent 改成combile/implementation project的log
通过我自己打日志发现就是在if (!curModuleIsBuildingApk)这句return了
在cc-register插件在ProjectModuleManager.groovy中通过当前执行的task来判断是否正在为某个module打包
通过你的截图日志看来,是由于task列表中包含了其它module的build task,并且fsprobuf:build在第一个,导致在initByTask()方法中第一个被匹配到。从而使得mainModuleName=fsprobuf
, 导致host_main的curModuleIsBuildingApk
为false
解决问题的思路是:需要确保打包命令的task列表中不包含其它能匹配正则表达式TASK_TYPES的task,如果实在不行,也要确保host_main:assembleOnlineDebug在task列表中所有匹配该正则表达式的第一个,例如:[host_main:clean, host_main:assembleOnlineDebug, fsprobuf:build, ......]
最后问题得到解决,十分感谢!
遇到这种问题可以参考楼上billy的回答 或者修改TASK_TYPES正则的参数都是可行的办法!
您好,当前使用的是CC最新版本 我通过addComponent方式依赖的组件在打包时不参与编译 导致最后生成的包内容缺失,不包含组件App
def curModuleIsBuildingApk = taskIsAssemble && (mainModuleName == null && isMainApp(project) || mainModuleName == project.name) project.ext.addComponent = { dependencyName, realDependency = null -> //不是在为本app module打apk包,不添加对组件的依赖 if (!curModuleIsBuildingApk) return;
我运行时应该是在最后一行return了 麻烦您能给个思路吗,可能遇到的情况