有办法设置打包 apk 时,不打包部分资源吗

2019 年 12 月 27 日
 diy886

公司的项目是一套多用,基本就是换个 appicon 和启动页就给另一个客户使用,于是就用 productFlavors 来打包,大概是这样配置的

 productFlavors {
        a {
            manifestPlaceholders = [app_icon: "@drawable/logo_a"]
            buildConfigField "int", "loading_bg", "R.drawable.bg_a"
           }
        b {
            manifestPlaceholders = [app_icon: "@drawable/logo_b"]
            buildConfigField "int", "loading_bg", "R.drawable.bg_b"
           }
          .
          .
          .

原来还好,就一两个,但是现在有大概 30 个客户了,就有很多启动页都被一起打包进 apk,apk 变得很大。

试过混淆 shrinkResources true 没有用

也试了 sourceSets exclude 的配置也没生效

    sourceSets {
        b {
            resources {
                exclude "**/bg_a.png"
            }
        }
    }

不知道是不是写错了,有经验的大佬帮忙看下,谢谢了

15884 次点击
所在节点    Android
14 条回复
stephonhu
2019 年 12 月 27 日
可以在 src 下和 main 同级创建对应 productFlavors 名字的文件夹,里面目录和 main 一样,然后把启动页放到对应 productFlavors 的 drawable 下就好了呀
yaming116
2019 年 12 月 27 日
做一个脚本替换资源打包好了呀,简单的就是一个客户一个文件夹,客户再多就自己写一个 web 界面管理
diy886
2019 年 12 月 27 日
@stephonhu 然后用 exclude 排除其他文件夹吗?
iseejun
2019 年 12 月 27 日
脚本跑起来呀,第三方打包都是替换公共资源
目前我这边就是这样做
diy886
2019 年 12 月 27 日
@iseejun 老哥怎么搞,有没有教程文章啥的,没弄过啊
0DBBFF
2019 年 12 月 27 日
https:
//developer.android.com/
studio/
build
/optimize-your-build#reduce_resources

上面去掉换行的连接
mrleft
2019 年 12 月 27 日
一楼说得对 gradle flavour 本身就能实现
Tomey
2019 年 12 月 27 日
一楼的做法是可以实现的
sunrain
2019 年 12 月 27 日
百度 tools:discard
royliu
2019 年 12 月 27 日
我们项目也有这个需求,就是通过一楼说的在对应 productFlavors 中建同名目录和资源就行。
PhxNirvana
2019 年 12 月 27 日
自动化打包
Minson
2019 年 12 月 27 日
一楼正解
allenframe
2019 年 12 月 27 日
3、4 年前就有的 Android 打包方案,属于基础;还不涉及到复杂的需求,都不需要用到脚本
diy886
2019 年 12 月 28 日
@stephonhu 老哥你这方法正是我想要的,谢谢了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/632801

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX