天天看點

Android元件化

元件化

  • 建立一個app 作位殼工程。
  • 一個common library來寫基礎元件庫,提供給module。
  • 建立module 子產品。

1.版本管理在根目錄建立

app_config.gradle

ext{
//是否釋出
isRease=true
app_android=[
        compileSdkVersion:30,
        buildToolsVersion :"30.0.2",
        minSdkVersion :26,
        targetSdkVersion: 30,
        versionCode :1,
        versionName :"1.0",
]
           

}

2.在module的gradle中引用

android {
    compileSdkVersion app_android.compileSdkVersion
    buildToolsVersion app_android.buildToolsVersion
}
           

3.判斷是作位依賴打包還是獨立運作

isRease=true
           

4.在module中如果

isRease=true

則說明是作位依賴庫

在module的gradle配置如下:

if (isRease){
apply plugin:'com.android.library'
}else {
    apply plugin: 'com.android.application'
}

defaultConfig {
    if (!isRease){
        applicationId "com.m.order"
    }
}
           

在app添加module依賴時,如果

isRease

作位library庫引入

if (isRease){
    implementation project(':order')
    implementation project(':personal')
}
           

5.最後就是對

AndroidManifest

配置

在main下建立一個debug檔案夾,拷貝AndroidManifest

然後項目目錄下的AndroidManifest檔案修改為:

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.m.personal">

<application>
    <activity android:name=".PersonalMainActivity">
    </activity>
</application>
           

在build檔案中

android{}

添加

sourceSets{
    main{
        if (isRease){
            //內建化模式,整個項目打包
            manifest.srcFile 'src/main/AndroidManifest.xml'
            java {
                exclude 'debug/**'
            }
        }else {
            //單獨運作
            manifest.srcFile 'src/main/debug/AndroidManifest.xml'
        }
    }
}
           

#ARouter使用

首先添加依賴:

api 'com.alibaba:arouter-api:1.4.0'
 annotationProcessor'com.alibaba:arouter-compiler:1.2.1'
           

在全部module包括module依賴的module(沒有頁面的module也算),在每個module的 build.gradle中加上下面的代碼。

defaultConfig {
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = [AROUTER_MODULE_NAME: project.getName()]
        }
    }
}
           

**特别注意:**module 的build 這個每個都要加

annotationProcessor'com.alibaba:arouter-compiler:1.2.1'
           

初始化:

public class App extends Application {
private boolean isDebug=true;
@Override
public void onCreate() {
    super.onCreate();
    if (isDebug) {           // 這兩行必須寫在init之前,否則這些配置在init過程中将無效
        ARouter.openLog();     // 列印日志
       ARouter.openDebug();   // 開啟調試模式(如果在InstantRun模式下運作,必須開啟調試模式!線上版本需要關閉,否則有安全風險)
    }
    ARouter.init(App.this);
   }
}
           

使用:

@Route(path = "/order/OrderMainActivity")
public class OrderMainActivity extends AppCompatActivity {
}
           

跳轉:

ARouter.getInstance().build("/order/OrderMainActivity").navigation();
           

簡單Demo:元件化Demo