由於公司項目需要多包名APK的支持,所以把公司的項目從eclipse遷移到了Android Studio.
以下是一些遷移經驗:
遷移準備
- Android Studio對代碼檢查比較嚴格,代碼中如果存在一些重複ID和重複String,儘量都使用lint處理掉。
- Android Studio對於JAR包重複會導致編譯失敗,如果引用的項目中有相同的jar包,先清理掉,只保留一份。
開始遷移
目前Android Studio支持兩種方式遷移
- 如果想保持原有的目錄結構,
在eclipse繼續開發,我們採用通過eclipse導出gradle文件的方式,
在Studio中再import gradle文件的方式加進來 - 如果不準備保留原有結構,直接用Android Studio打開eclipse項目,會提示遷移,該方式是通過拷貝的方式,新生成一份新結構的代碼。
完成遷移
在導入gradle文件後,每個Module都有一個build.gradle文件,
在setting.gradle中會include所有需要Module。
導入完成後,嘗試編譯運行一下,首次運行編譯較慢,需要耐心等待。
lint配置
Android Studio中的Lint檢測需要在build.gradle中配置,在Settings裏面修改並不能生效,如果想暫時忽略的話,可以加入
android{
lintOptions {
abortOnError false
}
}
JNI問題
Android Studio對eclipse導入的項目,打包時會少打入so文件,需要在Gradle的sourceSets加入
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
配置多渠道打包
- 第一步 在AndroidManifest.xml裏配置PlaceHolder
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
- 第二步 在build.gradle設置productFlavors
android {
productFlavors {
xiaomi {}
_360 {}
baidu {}
wandoujia {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
支持多包名APK
支持多包名比較簡單,比如我新增一個google的渠道包,
在其中指定一個特殊的packageName
android {
productFlavors {
google {
packageName "com.example.google"
versionCode 1
}
}
}
本文作者: 陽春麪
本文出處:http://www.aswifter.com/2015/06/12/eclipse-to-android-studio/
轉載請在開頭註明本文出處。歡迎關注我的微信公衆號,分享Swift開發,Android 開發和互聯網內容
微信號:APP開發者