Eclipse項目轉Android Studio


  剛來某公司的時候,發現Android開發仍然還在使用Eclipse,編碼無規范,渠道打包竟然手動,svn版本主干分支管理混亂,總之各種low。。。

        對於有強迫症的我來說,屬實不可忍。但無奈,新人一個,沒有話語權。

  經過幾個月的磨練和見證,實戰中終於可以雷厲風行的把自己最精銳的東西展示(說白了就像處女座的追求完美)。

  前面講述到了Android 開發規范 ,當然這是轉載別人的,涵蓋的范圍還是比較廣的。

  另外還有Eclipse打包多渠道包,這個也是轉載別人的,說明的很詳細,當然這里面關系到我本地Eclipse版本和環境,因而gradle的版本以及語法都有不一致的地方,但關鍵是要看報錯的信息,具體的問題具體分析,不懂的通過百度總能解決。再次有Eclipse打包多渠道包(庫工程版),這個是在上一篇的基礎上延伸的,全部都是自己爬坑,主要還是gradle的配置。

  svn版本主干分支管理有專門的人員負責,主要是思想是:保證基線代碼不被改得(主干),每個版本代碼各一份(分支);版本迭代完成,合入到主干中去(我司就是這樣),其實我覺得應該是基線代碼也要區分版本保存,這樣可以追查歷史版本代碼(真的很關鍵),就是基線不合 並(上家公司就是這樣做)。

  Android Studio(AS)出來的時候的確很多bug,不過相比Eclipse是恨人性化的IDE了。現在我使用的AS版本是2.3.2,因為gradle版本也是2.3.2,那么Eclipse項目轉成AS項目,坑就比較多了。

  1.我開始是Eclipse導出的方式生成gradle文件,再通過AS導入。這個方式有很多報錯,主要是Eclipse導出的時候gradle版本是根據Eclipse版本生成,那么和AS環境就會沖突,報錯在所難免,另外就是項目的文件結構和Eclipse差不多,看起來很不舒服,比較AS是有project、packages、Android這樣的展示模式切換的。所以這個方式,拒絕。

  2.我算是比較笨了,打開AS,創建一個AS項目,包名、項目名和Eclipse項目的包名、項目名一致;

  3.將Eclipse項目相關的文件拷貝並替換AS項目下的文件,一般需要拷貝的是src、res、libs、AndroidManifest等;

  4.這個時候項目肯定報錯的。庫工程換成compile的方式在build.gradle(app目錄下的),如果找不到,那就把庫工程的jar丟到libs中,res需要的全部拷貝到相應的位置。注意:需要的資源不能重復(jar、xml等)。

  5.現在是配置文件的時候了:

      1)settings.gradle的內容include ‘:app’   (意思是包含的module,如果還有其他的module,加上去) ;

      2)local.properties :sdk.dir=E\:\\sdk(聲明SDK的路徑);

      3)gradle.properties:    (默認是org.gradle.jvmargs=-Xmx2048m,下面是我參考網上寫的,加快編譯打包速度)

            org.gradle.daemon=true
            org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
            org.gradle.parallel=true
            org.gradle.configureondemand=true
4)build.gradle :默認生成,不需修改。
5)app/libs,放拷貝過來的jar包,注意:不要拷貝.so文件,下面說到.so文件的存放;
6)app/src/build.gradle:關鍵的文件,第一句apply plugin: 'com.android.application',包含相關的配置sdk版本、資源文件、簽名信息、混淆信息、生成包修改
渠道信息、編譯依賴等;我會在文章最后貼出整個文件內容;
7)app/src下的androidTest和test文件夾下的java文件刪除,如果你需要做單元測試,必須留着(單元測試不做擴展);
8)app/main文件夾下包含assets文件夾(Eclipse拷貝過來),java文件夾(核心java代碼),res文件夾(Eclipse拷貝過來)、AndroidManifest和jnilibs(自己創建,
  存放.so文件);
9)proguard-rules.pro:代碼混淆文件,注意:里面如果有第三方jar包聲明,必須刪除,因為gradle添加依賴的時候已聲明了。
 到此,選擇Build,Clean Project,這時報錯,問題應該就是出現在app/src/build.gradle中了,如果是其他的問題,從頭檢查一遍。而對於app/src/build.gradle中出現的問題,要
結合log、message輸出去做修改,因為不同版本的gradle的語法有些變化,因為根據報錯信息能夠解決一切報錯,相信我,因為第一個項目的整個過程我花了2天的時候,第二個項目,我只花了半小時。
     
app/src/build.gradle文件全部內容

 

apply plugin: 'com.android.application'

android {
  //編譯sdk
compileSdkVersion 25
buildToolsVersion "25.0.2"

defaultConfig {
multiDexEnabled true  //允許多個dex文件
applicationId "com.xxx" //包名作為id
minSdkVersion 14     //最低版本sdk
targetSdkVersion 23   //最高版本sdk
versionCode 1       //版本code
versionName "1.0.0"   //版本號
}
//執行lint檢查,有任何的錯誤或者警告提示,都會終止構建,我們可以將其關掉。
lintOptions {
abortOnError false    //有報錯的時候,依然繼續執行
disable "ResourceType" //忽略代碼上的資源類型警告
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
signingConfigs {
debug {

}
release {
//填寫你的keystore路徑和密碼們(配置簽名)
storeFile file("E:\\xxx.keystore")
storePassword "12345678"
keyAlias "android"
keyPassword "12345678"
}
}
buildTypes {
debug {
minifyEnabled false
//Zipalign優化
zipAlignEnabled true
// 移除無用的resource文件
shrinkResources false
}
release {
minifyEnabled true
//Zipalign優化
zipAlignEnabled true
// 移除無用的resource文件
shrinkResources false
//前一部分代表系統默認的android程序的混淆文件,該文件已經包含了基本的混淆聲明,后一個文件是自己的定義混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//簽名
signingConfig signingConfigs.release
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 輸出apk名稱
//def fileName = "app_v${defaultConfig.versionName}_${releaseTime()}.apk"
def fileName = "android_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
productFlavors {//渠道信息配置
server {
manifestPlaceholders = [UMENG_CHANNEL_ID: "1"]
}
     baidu{
manifestPlaceholders = [UMENG_CHANNEL_ID: "2"]
}

}
}
//工程依賴
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:design:25.3.0'
compile 'com.youth.banner:banner:1.4.9'
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM