Tencent / Shadow

零反射全动态Android插件框架
BSD 3-Clause "New" or "Revised" License
7.37k stars 1.29k forks source link

已知问题:IDE中直接Run sample-host会失败 #1263

Open shifujun opened 7 months ago

shifujun commented 7 months ago

临时兼容手段:./gradlew :sample-host:installDebug

google开发者的意思是IDE中点Run按钮构建的apk是针对Run选择的机型构建的,把这个apk直接放到output目录中,会让人误以为这个apk是不区分机型的构建。所以这是个bug。修复方案就是点Run构建的apk不放到output目录。

我们这个项目并不涉及这个问题。我们只是想让sample-host构建自动触发sample-app等plugin的apk构建,然后拿到apk打包成插件包,自动放到host的asset中。这样开发shadow时,修改了代码一键运行host,方便开发调试。

现在我们代码是写死的output目录路径。如果要检测是Run构建的,还是assemble任务构建的,一时还没有好办法。这里主要是涉及两边如果都构建过,哪个是新的。初步看应该是从apk_ide_redirect_file的记录确定。

总之这个开发还比较费事,先置顶个issue吧。

          这个AGP 7.1带来了一个很麻烦的变动。在Android Studio中运行assemble任务,apk文件会生成在`build/intermediates/apk`目录中。直接在命令行运行同一个assemble任务却会像以前一样生成到`build/outputs/apk`中。

          这使得在IDE中直接运行`sample-host`和在命令行中运行`./gradlew :sample-host:assembleDebug`,需要两种不同的复制插件apk路径。

          😞 😞 😞 😞 😞

Originally posted by @shifujun in https://github.com/Tencent/Shadow/issues/799#issuecomment-1036001714

          https://developer.android.google.cn/studio/releases/fixed-bugs/studio/2021.1.1?hl=zh-cn

          [问题 69014026](https://issuetracker.google.com/issues/69014026?hl=zh-cn)
          将部署 build 输出移至 intermediates 文件夹

          我看这里标记了一个`AGP-7.2 Beta`版本,我就先不深究到底是修复了还是怎么样,等7.2出了再试试看吧。

Originally posted by @shifujun in https://github.com/Tencent/Shadow/issues/799#issuecomment-1036019766

Heart-Beats commented 2 months ago

临时兼容手段:./gradlew :sample-host:installDebug

google开发者的意思是IDE中点Run按钮构建的apk是针对Run选择的机型构建的,把这个apk直接放到output目录中,会让人误以为这个apk是不区分机型的构建。所以这是个bug。修复方案就是点Run构建的apk不放到output目录。

我们这个项目并不涉及这个问题。我们只是想让sample-host构建自动触发sample-app等plugin的apk构建,然后拿到apk打包成插件包,自动放到host的asset中。这样开发shadow时,修改了代码一键运行host,方便开发调试。

现在我们代码是写死的output目录路径。如果要检测是Run构建的,还是assemble任务构建的,一时还没有好办法。这里主要是涉及两边如果都构建过,哪个是新的。初步看应该是从apk_ide_redirect_file的记录确定。

总之这个开发还比较费事,先置顶个issue吧。

          这个AGP 7.1带来了一个很麻烦的变动。在Android Studio中运行assemble任务,apk文件会生成在`build/intermediates/apk`目录中。直接在命令行运行同一个assemble任务却会像以前一样生成到`build/outputs/apk`中。

          这使得在IDE中直接运行`sample-host`和在命令行中运行`./gradlew :sample-host:assembleDebug`,需要两种不同的复制插件apk路径。

          😞 😞 😞 😞 😞

Originally posted by @shifujun in #799 (comment)

          https://developer.android.google.cn/studio/releases/fixed-bugs/studio/2021.1.1?hl=zh-cn

          [问题 69014026](https://issuetracker.google.com/issues/69014026?hl=zh-cn)
          将部署 build 输出移至 intermediates 文件夹

          我看这里标记了一个`AGP-7.2 Beta`版本,我就先不深究到底是修复了还是怎么样,等7.2出了再试试看吧。

Originally posted by @shifujun in #799 (comment)

大佬这个问题我弄过,之前想自定义 apk 打包输出目录的时候遇到了这个问题,后面也是通过 hook apk_ide_redirect_file 这个任务的执行完成了,可以参考 apk_build.gradle 这个脚本处理