Android番外篇 AndroidStudio独立运行Module

Posted 彭老希

tags:

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

一、解决方案

进入Module的build.gradle

在这里插入图片描述
添加

apply plugin: 'com.android.application'

在这里插入图片描述

移除

apply plugin: 'com.android.application'

在这里插入图片描述
设置包名,即applicationId

defaultConfig {
    applicationId "com.xxx.xxx.net"
    ...
}

就能看见可以运行了
在这里插入图片描述

直接运行报错

在这里插入图片描述

二、解决方法

第一步:进入清单文件夹
在这里插入图片描述
第二步:配置application标签,包括icon、theme等

  <application
        android:name=".App"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@drawable/ic_launcher"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
    
      ...
    
    </application>

第三步:配置程序入口,添加intent-filter

        <activity android:name=".XXXXActivity">
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
  
                  <category android:name="android.intent.category.LAUNCHER" />
              </intent-filter>
          </activity>

三、番外

使用开关来配置Module是否独立运行

首先是设置是否组件化的开关,这个开关一般我们发在单独的gradle配置文件或gradle.properties文件中

(1)在confi.gradle中是这样的。当然你得在project的build.gradle中添加对config的引用。

project的build.gradle添加

apply from: "config.gradle"

然后在config.gradle中添加

ext {
    /** Net模块是否作为App存在*/
    isNetApp = false
}

(2)在gradle.properties中设置

#控制运行哪个模块(1:运行app模块 2:运行net模块)
runModule=2

(3)然后就是引用刚刚设置的变量

if (rootProject.ext.isNetApp) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

或者

if (Integer.valueOf(runModule) == 1) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

(4)开关设置好了,在要做切换的地方根据开关,来设置。主要在module的build.gradle中。

if (rootProject.ext.isNetApp) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}
...
android {
    ...
    defaultConfig {

        if (rootProject.ext.isNetApp) {
            //组件模式下设置applicationId
            applicationId "com.xxx.xxx.net"
        }
        ...      
    }
    
    // 配置不同模式下的AndroidManifest文件地址
    sourceSets {
        main {
            if (rootProject.ext.isNetApp) {
                manifest.srcFile 'src/main/AndroidManifest.xml'
            } else {
                // 这里再在对应的文件夹下新建AndroidMenifest文件,并配置好activity等参数即可
                manifest.srcFile 'src/main/module/AndroidManifest.xml'
            }
            jniLibs.srcDirs = ['libs']
        }
    }
}

AndroidMenifest的设置如下图

在这里插入图片描述
这样我们就可以在config.gradle中切换模块是否单独运行。

效果图:
在这里插入图片描述
资源包:https://download.csdn.net/download/weixin_44720673/19805720?spm=1001.2014.3001.5501

或者后台留言,我发给你也行

以上是关于Android番外篇 AndroidStudio独立运行Module的主要内容,如果未能解决你的问题,请参考以下文章

Android番外篇 Android Studio查看第三方库依赖树

Android番外篇 NestedScrollView嵌套RecyclerView

Android番外篇 LruCache缓存机制

Android番外篇 RecyclerView 移除飞行效果动画

Apache Cordova开发Android应用程序——番外篇

Android番外篇 Glide获取图片PathBitmap用法详解