Module单独运行调试

Posted wikiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Module单独运行调试相关的知识,希望对你有一定的参考价值。

首先在主工程目录下的gradle.properties建立变量,控制当前moudle是单独运行还是moudle形式
image.png
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也要设置下。


image.png
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就可以作为独立工程跑起来了

 

https://www.jianshu.com/p/5014bc7cf0de

 

以上是关于Module单独运行调试的主要内容,如果未能解决你的问题,请参考以下文章

FlutterFlutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )

webpack的Hot Module Replacement运行机制

如何开启 ABAP Update function module 和系统程序的调试功能

vscode调试Vue提示:crbug/1173575, non-JS module files deprecated.

调试出现 WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START MODULE: STARTUP.obj (?C_STARTUP)

Linux内核调试:“Python异常 当尝试在gdb中使用帮助程序脚本时,没有名为module_core的成员