AndroidStudio導入eclipse項目掃過的坑,記錄下

一:先介紹導入流程吧

我用的是android studio 的3.2版本

Eclipse項目工程:一個主工程,一個SDK的依賴庫。請先關閉Android Studio當前的Project,否則你看不到Import Project。如圖

選擇“Import project(Eclipse ADT, Gradle, etc.)”,定位到你所需要導入的工程的主目錄(這裏一定要是工程的主目錄,因爲可能你的目錄存在多級,必須進到你主工程的根目錄)。由於主目錄和SDK有依賴關係,Android Studio會自動關聯進來。然後指定一個保存的目錄,點擊Next。如圖:標誌1是一級目錄,裏面包含主工程標誌2 com.xxx._360和依賴工程標誌3xxxSdk,、鼠標必須定位到主工程標誌2(這裏的主工程已經是根目錄了,如果不是根目錄那麼還要進入主工程的根目錄

這裏就是你所建立的studio工程名稱以及所在目錄

最終結果圖如下:

以下都是默認,直接finish,sdk會被android  studio自動關聯

以上導入項目基本完成,下面肯定會有問題

二:解決問題,我走過的坑

1:在根目錄下的build.gradle添加 google():如圖

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

2:主工程和依賴工程下的AndroidManifest文件裏面的必須屏蔽 uses-sdk字段,因爲在配置文件裏面包含這個,如果不屏蔽編譯會出錯

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.xxx.sdk"
    android:versionCode="2"
    android:versionName="0.0.0" >

    <!--<uses-sdk-->
        <!--android:minSdkVersion="8"-->
        <!--android:targetSdkVersion="15" />-->

    <uses-permission android:name="android.permission.INTERNET" />

3 :主工程和依賴工程下的build.gradle中minSdkVersion和targetSdkVersion根據你下的sdk配置想要的大小,這個沒影響,只要不報錯,你本地包含,就默認

4:出現Manifest merger failed with multiple errors, see logs.這個問題基本就是manifest文件有問題,首先很重要android studio 導入eclipse項目時必須注意,庫裏面的manifest文件和主工程manifest文件定義的activity不能重複,假設你在sdk裏面定義了一個activity,那麼在你的主工程裏面一定不能重複定義一模一樣的activity;

5:出現亂碼:我的eclipse的項目是GBK的,但是android studio是utf-8的,這樣的話包含中文的文件一定是亂碼,(這個我目前覺得最安全靠譜的方法就是隻能一個文件一個文件的修改,網上介紹的也有別的,怕出問題沒搞,而且這個方法簡單,就是文件多了話比較費時)

      解決方式如下:

      1、點擊 Android Studio 右下角的 File Encoding UTF-8,在出現提示時點擊 GBK;

      2、在出現的對話框中點擊 Reload -> Reload anyway,此時源代碼亂碼消失,出現中文;

      3、點擊 Android Studio 右下角的 File Encoding GBK,在出現提示時點擊 UTF-8;

      4、在出現的對話框中點擊 Convert。

      注意順序不能出錯,已經親測,如果順序出錯了,那麼中文亂碼改不回來了。

 

6:出現” 非法字符: '\ufeff' “之類的錯誤,需要class,interface或enum。

解決辦法:利用Eclipse可以智能的把UTF-8+BOM文件轉爲普通的UTF-8文件,然後文件替換就可以了,這個不是編碼的問題,純粹文字內容替換無效,必須文件替換。

7:我導入的eclipse項目包含jni,所以這時出現一個問題:

Error:Execution failed for task ':libtermexec:compileReleaseNdk'.
> Error: Your project contains C++ files but it is not using a supported native build system.
Consider using CMake or ndk-build integration with the stable Android Gradle plugin:
https://developer.android.com/studio/projects/add-native-code.html
or use the experimental plugin:
https://developer.android.com/studio/build/experimental-plugin.html.

解決辦法是:在主工程的build.gradle中的buildTypes上面添加如圖所示,我的是這樣添加的解決了問題,沒有添加其他配置,我的AS是3.2版本的,沒有gradle.properties這個文件,所以也沒有添加android.useDeprecatedNdk=true這個玩意,就加了如下配置就ok了,而且也沒有下載ndk,也沒有其它配置

   sourceSets {
        main {
            jni.srcDirs = []
        }
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard.cfg'
        }
    }

8:出現the same input jar is specified twice這個問題,我們在build.gradle文件中已經配置過jar文件了,然而eclipse項目的proguard文件包含了jar的配置,如圖所示,所以將proguard文件中 以下內容可以刪除或註釋掉,我這裏選擇註釋掉

 

最後就是所有問題都解決了,沒問題了,但是運行按鈕還是灰色的,如圖

這個情況只是需要點下  按鈕同步下就ok了,就會如圖出現可運行按鈕了

9:添加外部jar時,流程如圖:點擊 File ——> Project Structure,點紅框標記的+號

彈框如下,搜索你想要的依賴包,點擊ok就可以了,相應的工程下面的build.gradle中dependencies就會自動出現你添加的依賴包

注意一點就是包是否下下來如圖所示的目錄中有沒有下載完整,如果沒有,那麼你的依賴包沒下下來,需要重新換個

10:如果添加了多個依賴包,有重複的時候,會編譯出錯提示 More than one file was found with OS independent path ‘META-INF/proguard/androidx-annotations.pro’

解決辦法:如果不影響的話要麼刪掉多餘的依賴包;要麼就是在build.gradle文件中添加如下代碼

packagingOptions {
       exclude 'META-INF/proguard/androidx-annotations.pro'
}

而我的工程我是刪除了多餘的依賴包的,對我的工程沒影響

 

最後,就是如果工程沒有錯誤,但是一直出現不了運行的按鈕(Run app按鈕是灰色的),可以點擊如下按鈕進行同步,這樣就ok了

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章