演示如何在一个 Android 项目中:

  • 包含两个逻辑分支(Dawn 和 Mipha)

  • 共用一个 R 文件

  • 通过机型判断运行哪套逻辑

  • 保证只编译成一个 APK,且资源独立可控

在as里新建模块(dawn、mipha)的时候,Templates 选择phone&Tablet 还是选择Android Library?

如果你的目的是:

  • dawnmipha 作为独立模块来开发、包含界面、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 ModuleAndroid Library 的完整转换示例。需要的话告诉我!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐