手动组件化步骤
- 新建module
- 配置清单文件
- 在gradle.properties文件中设置每个Module是否需要单独编译的变量
- 配置每个module的build.gradle文件
- 在主module中根据每个module都有的布尔值变量来导入依赖
- 大功告成!!!
- 新建module
- 配置清单文件
复制两个清单文件放在不同的文夹下 一个作为Application使用的A清单文件 一个作为library使用B清单文件
A清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.module">
<application
android:name=".ModuleApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ModuleActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
B清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.module">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".ModuleActivity"/>
</application>
</manifest>
- 在gradle.properties文件中设置每个Module是否需要单独编译的变量
是否需要单独编译 true表示需要,false表示不需要
isMoudel=false
isMoudel=true
-
配置每个module的build.gradle文件
根据刚才的每个module都有的布尔值变量来设置是application还是library
将第一句 --> apply plugin: 'com.android.application'
改成 -->
if (isMoudel.toBoolean()) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
同理在下面defaultConfig中设置applicationId和清单文件
将 -->
defaultConfig {
applicationId "com.example.module"
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
改成 -->
defaultConfig {
//applicationId "com.example.module"
if (isMoudel.toBoolean()) {
applicationId "com.example.module"
}
sourceSets {
main {
if (isMoudel.toBoolean()) {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
} else {
manifest.srcFile 'src/main/release/AndroidManifest.xml'} } } minSdkVersion 22 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
-
在主module中根据每个module都有的布尔值变量来导入依赖
if(isMoudel.toBoolean()){
implementation project (':app')
} -
大功告成!!!
网友评论