1. 程式人生 > >android兩個app合併

android兩個app合併

概述

最近公司需要將原來的app和現在的app合併(主要是為了用原來的功能),先說一下思路,分成一個主module和一個附module,其實就是一個app新增一個library,下面總結一下遇到的錯。

將附module新增為library

1.首先在主module中通過File-->New-->Import Module引入附工程的module

2.開啟附module的build.gradle修改apply plugin: 'com.android.application'為apply plugin: 'com.android.library'

這樣就將你的附工程油app改為了library了,否則回報這個錯

各種報錯解決

1.如果你專案用到了Butterknife,或者onClick用到了switch(v.getId())的獲取控制元件那麼都會報錯,因為附module的R.java裡面的id都是變數(沒用final修飾),而主module的R.java的id是常量(用final修飾),這是因為當附module新增到主moudle時兩份R.java檔案裡面的id可能衝突,這時會修改附module的R.java檔案,所以不能用final修飾。而註解和switch都只能用常量,switch還是乖乖改成if else吧。Butterknife提供瞭解決辦法,在你工程的build.gradle中新增如下依賴,用8.8.1的版本我這裡報錯,可能有衝突

然後在附module中新增

這個外掛是用來生成R2.java檔案的,R2.java檔案是copy的R.java檔案的,但是多了final修飾(Butterknife最終findViewById時還是通過R.java檔案找的)。

詳情https://github.com/JakeWharton/butterknife

2.接下來你可能出現依賴衝突

,解決辦法,將依賴統一管理起來,在工程的build.gradle做統一依賴配置

 
 

這樣在各個module引用就沒問題了

3.執行時又可能出現layout重名衝突,由於兩個module都有同名的layout.xml檔案,導致id錯亂,只需要把附module的id對應的layout檔案重新命名就好了

到這就差不多了