元件化
- 建立一個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