안 드 로 이 드 의 구성 요소 화 간단 한 사용

19472 단어 Android
안 드 로 이 드 구성 요소 화 는 이미 광범 위 하 게 응용 되 었 습 니 다.그 장점 은 여기 서 더 이상 말 하지 않 겠 습 니 다.여 기 는 간단 한 구성 요소 화 과정 에 대해 간단 한 사용 설명 을 하고 나중에 사용 할 때 참고 할 수 있 습 니 다.준비 작업:우 리 는 구성 요 소 를 사용 할 때 반드시 구성 요소 간 의 점프 와 전송 값 과 관련 될 것 입 니 다.이것 은 우리 가 아 리 의 ARouter 를 사용 해 야 합 니 다.우리 먼저 가자.https://github.com/alibaba/ARouterARouter 에 대해 알 아 보고 최신 버 전 1,프로젝트 를 만 듭 니 다.moduleLearn 프로젝트 를 새로 만 듭 니 다.이 안에 module 을 몇 개 더 만 듭 니 다.module 의 구축 은 file->new module 입 니 다.여기 서 설명 하 자 면,우 리 는 chat,contract,home 이라는 세 개의 모듈 을 만 들 었 는데,그들 세 개 는 만 들 때 Phone&Tablet module 모드 를 선택 했다.이 세 가지 모듈 은 바로 우리 가 독립 적 으로 개발 해 야 하 는 것 이다.comonlib 를 만 들 때 Android Library 를 선택 하 십시오.공공 구성 요소 로 서 변 수 를 추가 하고 각 구성 요소 가 변수 값 의 변화 에 따라 프로젝트 의 루트 디 렉 터 리 에서 독립 적 으로 개발 할 수 있 는 지 확인 할 수 있 도록 gradel.properties 파일 을 찾 아 기록 합 니 다.
#         true      false    
isNeedHomeModule = true
isNeedChatModule = true
isNeedContractModule = true

3.각 하위 구성 요소 의 build.gradle 에서 1 을 수정 하고 머리 에서 수정 합 니 다.
//        ,   module
if(!isNeedHomeModule.toBoolean())
{
    apply plugin: 'com.android.application'
}else{
    apply plugin: 'com.android.library'
}
 2, android-> defaultConfig    
android {
    compileSdkVersion 28
    defaultConfig {
   		//     ,  applicaton
        if(!isNeedHomeModule.toBoolean()) {
            applicationId "com.cg.home"
        }
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
    }

3.각 하위 구성 요소 의 android manifest.xml 파일 을 src->main 아래 에 manifest 폴 더 를 만 들 고 그 안에 android manifest.xml 파일 을 만 들 고 바깥 의 android manifest.xml 내용 을 복사 하여 바깥 의 android manifest.xml 내용 을 수정 합 니 다.무엇 을 수정 합 니까?기본 시작 페이지 를 제거 하 는 것 입 니 다.
다음은 정상 적 인 androidmanifest.xml 입 니 다.

    

    


지금 은 차이 점 을 보 았 습 니 다.왜 여 기 를 바 꾸 려 고 합 니까?여기 서 고치 지 않 으 면 독립 적 인 개발 을 하지 않 을 때 app 을 설치 하면 여러 개의 시작 페이지 가 있 습 니 다.그러면 손 에 여러 개의 app 의 진입 아이콘 이 나타 납 니 다.
android manifest.xml 를 추가 한 후 build.gradle 파일 을 수정 하여 android 에 추가 합 니 다.
<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.cg.home">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

4.주 app 의 build.gradle 에 인용 을 추가 합 니 다.
sourceSets{
        main{
			//      home    ,  module     ,        
            if(!isNeedHomeModule)
            {
                manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
            }else{
                manifest.srcFile 'src/main/AndroidManifest.xml'
            }
        }
    }

독립 개발 을 할 때 는 인용 이 필요 하 다.
자,여기까지.구성 요소 화 는 처리 가 완료 되 었 더 라 도 실행 하면 gradle.properties 에서 우리 가 정의 한 변수 값 을 수정 하면 독립 개발 여 부 를 실현 할 수 있 습 니 다.
ARouter 의 인용 과 사용 을 살 펴 보 겠 습 니 다.
우 리 는 commonlib 의 역할 이 공용 코드 를 추출 하기 위 한 것 이 라 고 정 의 했 습 니 다.그러나 ARouter 안의 일부 코드 는 여기에 넣 을 수 없습니다.그렇지 않 으 면 항상 오 류 를 알려 줍 니 다.이것 은 구덩이 라 고 할 수 있다.이제 우 리 는 ARouter 를 어떻게 도입 하 는 지 설명 하 나 를 만 들 고 모든 module 은 comonlib 를 참조 합 니 다.2.comonlib 의 built.gradle 에 도입
if(isNeedChatModule.toBoolean())
    {
        implementation project(':chat')
    }

    if(isNeedContractModule.toBoolean())
    {
        implementation project(':contract')
    }

    if(isNeedHomeModule.toBoolean())
    {
        implementation project(':home')
    }

    implementation project(':commonlib')

그럼요.dommlib 에 넣 지 않 고 각 module 에 독립 적 으로 추가 해도 됩 니 다.3.각 module 에 도입 할 수 있 습 니 다.
compile "com.alibaba:arouter-api:1.5.0"

동시에 android->defaultConfig 에 추가
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'

메 인 앱 에 도 추가 해 야 합 니 다.
4.ARouter 를 초기 화 하 는 것 은 주 app 에서 우리 자신의 my Appllication 을 정의 하 는 것 입 니 다.
android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.cg.modulelearn"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

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

이렇게 집성 이 끝 났 으 니,이제 어떻게 점프 하고 전달 하 는 지 보 자.
1.하위 module 에서 우 리 는 주 해 를 진행 해 야 한다.
public class myApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        initRouter();
    }

    private void initRouter() {
        if(BuildConfig.DEBUG)
        {
            ARouter.openLog();
            ARouter.openDebug();
        }
        ARouter.init(this);
    }
}

주 app 의 코드
//    ,         ,    path    app         
@Route(path="/home/main")
public class MainActivity extends AppCompatActivity {

    private TextView txt_homeTitle;

	//   title ,       ,      @Autowired
    @Autowired
    public String title;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_homemain);
        //      ARouter 
        ARouter.getInstance().inject(this);
        Log.e("MainActivity.java(onCreate)", "  : 25  title:" + title);
        initControls();
    }

    /**
     *      
     */
    private void initControls() {
        txt_homeTitle = (TextView)findViewById(R.id.txt_homeTitle);
        txt_homeTitle.setText(title);
    }


}

이것으로 완성 하 다.여 기 는 단지 간단하게 사용 기록 을 만 들 뿐이다.이것 은 두 명의 큰 신 에 참여 한 코드 입 니 다.주 소 는 다음 과 같 습 니 다.한 편의 글 은 구성 요 소 를 이해 하고 한 문 은 구성 요 소 를 이해 합 니 다.

좋은 웹페이지 즐겨찾기