保证只编译成一个 APK,且资源独立可控
包含两个逻辑分支(Dawn 和 Mipha)保证只编译成一个 APK,且资源独立可控。通过机型判断运行哪套逻辑。
演示如何在一个 Android 项目中:
-
包含两个逻辑分支(Dawn 和 Mipha)
-
共用一个
R文件 -
通过机型判断运行哪套逻辑
-
保证只编译成一个 APK,且资源独立可控
在as里新建模块(dawn、mipha)的时候,Templates 选择phone&Tablet 还是选择Android Library?
如果你的目的是:
-
让
dawn、mipha作为独立模块来开发、包含界面、Activity 等,方便调试和开发,且最终会合并到一个 APK 里由app作为入口启动,建议选择Phone & Tablet Module模板。 -
但如果你只是想做纯代码、纯库、不包含界面,或主要用来放资源和逻辑,且不需要单独运行,建议选择
Android Library模板。
具体区别和建议:
| 模板选项 | 适用场景 | 是否有 Application 配置 |
是否包含启动 Activity | 备注 |
|---|---|---|---|---|
| Phone & Tablet Module | 需要包含界面(Activity/Fragment),单独运行调试 | 是 | 有 | 会生成 com.android.application 模块,可方便单独调试 |
| Android Library | 纯代码、资源库,供主模块依赖使用 | 否 | 无 | 只能作为库被依赖,不能单独运行 |
你的场景推荐
-
开发阶段:选
Phone & Tablet Module,方便写界面和单独调试(可后续改为 Library 或用 Gradle 配置切换); -
发布阶段:修改为
Android Library,让它作为库被app依赖并合并打包。
如何后期切换
你也可以先创建 Phone & Tablet Module,等开发完成后,改 build.gradle 插件为:
apply plugin: 'com.android.library'
然后修改 AndroidManifest.xml 去掉 application 节点里的启动 Activity,变成纯库。
额外建议
-
给模块起包名时加前缀,比如
com.example.dawn,防止资源和类名冲突; -
资源命名加模块前缀,如
dawn_activity_main.xml。
如果你需要,我可以帮你写一个从 Phone & Tablet Module 到 Android Library 的完整转换示例。需要的话告诉我!
更多推荐


所有评论(0)