- 首先在主工程目录下的
gradle.properties
建立变量,控制当前moudle是单独运行还是moudle形式
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# 注意不要带有标点符号,比如xx=true; 会被转换为false
isSampleDebug=true
-
然后在对应moudle目录下建立一个用于测试的清单文件,清单文件需要设置默认启动的activity,还有一些调试时候需要用到res也要设置下。
Debug模式下的清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lexinfintech.sample">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true">
<activity android:name=".activity.ComponentListActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
** module模式下的清单文件**
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lexinfintech.sample">
<application>
<activity android:name=".activity.ComponentListActivity" />
</application>
</manifest>
- 在对应moudle目录下的gradle里面做如下配置
1、独立工程需要apply plugin: 'com.android.application'
2、独立工程需要设置applicationID
3、独立工程需要都默认启动的主activity,这里需要设置不同的清单文件和资源引用位置
//单独工程和lib的声明不同
if (isSampleDebug.toBoolean()) {
apply plugin: 'com.android.application'
} else {
apply plugin: 'com.android.library'
}
android {
//限制资源名称
resourcePrefix project.getName() + "_"
defaultConfig {
//作为单独工程,需要设置applicationID
if (isSampleDebug.toBoolean()) {
applicationId "com.lexinfintech.sample"
}
}
sourceSets {
main {
// 单独调试与集成调试时使用不同的 AndroidManifest.xml 文件
if (isSampleDebug.toBoolean()) {
manifest.srcFile 'src/main/debug/AndroidManifest.xml'
//多增加一个资源调试路径 src/main/debug/res
res.srcDirs = ['src/main/res', 'src/main/debug/res']
} else {
manifest.srcFile 'src/main/AndroidManifest.xml'
java {
//module 模式下要 排除src/test/文件夹下的所有文件
exclude 'src/debug/'
}
}
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
api project(':base')
}
- 最后还需要在主工程设置一下引用关系
//主工程在组件作为单独工程运行的时候,要过滤到此组件,因为application是不能直接引用application的
if(!isSampleDebug.toBoolean()){
runtimeOnly project(':sample')
}
- 这样moudle就可以作为独立工程跑起来了