將應用代碼由eclipse匯入Android studio的方法NDK-Build和Cmake兩種方法(以android_serialport_api為例)

來源:互聯網
上載者:User

標籤:false   read   add   execution   路徑   complete   result   ati   red   

網上翻了幾百篇部落格,看了半天,要不就是寫的亂七八糟看不懂,要不就是隱藏了一些細節,要不就是實現不了,最後還是在Android官網上看明白了,而且說得有條有理,以後遇到不懂的一定要先翻官網。

參考資料:https://developer.android.com/studio/projects/add-native-code.html?utm_source=android-studio#link-gradle

 

1. 匯入eclipse到Android studio1. 匯入工程:

點擊如下所示:

 

匯入之後會建置錯誤和一個檔案:

1). 產生的錯誤:

Gradle ‘android-serialport-api-master‘ project refresh failedError:Minimum supported Gradle version is 4.1. Current version is 2.14.1. If using the gradle wrapper, try editing the distributionUrl in F:\AndroidWork\AndroidStudio\android-serialport-api-master\gradle\wrapper\gradle-wrapper.properties to gradle-4.1-all.zipConsult IDE log for more details (Help | Show Log)

 

從上面可知是gradle版本太低,需要升級gradle

解決辦法:修改gradle-wrapper.properties

 

#Fri Nov 10 19:29:01 CST 2017distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip   //修改為警告對應的版本

 

2). 產生了一個import-summary.txt

 

下面對該檔案進行說明

ECLIPSE ANDROID PROJECT IMPORT SUMMARY======================================Ignored Files:     //忽略掉的檔案--------------The following files were *not* copied into the new Gradle project; youshould evaluate whether these are still needed in your project and ifso manually move them:* README.md* run_emulator.shMoved Files:    //移除掉的檔案------------

/*因為安卓gradle工程和eclipse的ADT使用的構建工程的方法不同,所以這裡對一些工程目錄進行了重構*/Android Gradle projects use a different directory structure than ADTEclipse projects. Here‘s how the projects were restructured:/*舉例:eclipse目錄下的jni\改為Android studio目錄下的ManiMenu\src\main\jni\
*/
* AndroidManifest.xml => MainMenu\src\main\AndroidManifest.xml* jni\ => MainMenu\src\main\jni* res\ => MainMenu\src\main\res* src\ => MainMenu\src\main\javaNext Steps: //接下啦需要做的事情-----------
/*需要網路去下載一些依賴的庫或者對應的SDK之類的東西*/You can now build the project. The Gradle project needs networkconnectivity to download dependencies.Bugs:-----If for some reason your project does not build, and you determine thatit is due to a bug or limitation of the Eclipse to Gradle importer,please file a bug at http://b.android.com with categoryComponent-Tools.(This import summary is for your information only, and can be deletedafter import once you are satisfied with the results.)

 

2. 修改build.gradle:

 

因為我們的應用只是用在Android4.2.2上面,對應的SDK版本為17。(看了eclipse上全部都是17,所以應該不用考慮相容其他版本的應用,照著改)

如果不記得,看看這兩篇:

Android studio的gradle

Android系統版本、平台版本、SDK版版本、gradle修改

 

android {    compileSdkVersion 17   //修改這裡,編譯版本的SDK    buildToolsVersion "27.0.1"    defaultConfig {        applicationId "android_serialport_api.sample"        minSdkVersion 17   //修改這裡,最小的SDK版本        targetSdkVersion 17  //修改這裡,目標的SDK版本        ndk {            moduleName "serial_port"        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.txt‘        }    }}

 

這個時候Android studio會去網上把對應的SDK下載下來,等待幾分鐘

 

3. 編譯不通過(無法構建本地C++系統)

再次編譯,發生錯誤

Information:Gradle tasks [:MainMenu:assembleDebug]Error:Execution failed for task ‘:MainMenu:compileDebugNdk‘.> Error: Your project contains C++ files but it is not using a supported native build system.  //工程無法使用本地C++構建系統  Consider using CMake or ndk-build integration. For more information, go to:   https://d.android.com/r/studio-ui/add-native-code.html     Alternatively, you can use the experimental plugin:   https://developer.android.com/r/tools/experimental-plugin.htmlInformation:BUILD FAILED in 3sInformation:1 errorInformation:0 warningsInformation:See complete output in console

 

這個時候下載三個軟體:

其中:

NDK:通過NDK-build方法來使用本地庫

CMake:通過CMake方法來使用本地庫

LLDB:用來調試C/C++的工具

 

2. 方法一:將gradle通過NDK-build關聯到本地庫

 注意:NKD-build在Android studio3.0版本以後就不能再用了,必須使用CMke,不過我覺得3.0並不是很好用,比如安裝的時候沒有選擇SDK路徑,預設C盤,每次安裝完又忘記改,搞得C盤越來越大,換回2.3接著用,還可以使用NDK-build

 

1). 將Android studio查看方法改為Android視圖。

2). 選擇Link C++ Project with Gradle

3). 選擇ndk-build。

4). Project Path 旁的欄位為您的外部 ndk-build 項目指定Android.mk 指令檔。

 

編譯OK。完成

 

查看android-serialport-api-master\MainMenu\build.gradle

apply plugin: ‘com.android.application‘android {    compileSdkVersion 17    buildToolsVersion "27.0.1"    defaultConfig {        applicationId "android_serialport_api.sample"        minSdkVersion 17        targetSdkVersion 17        ndk {            moduleName "serial_port"    //這裡已經自動添加了        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.txt‘        }    }    externalNativeBuild {        ndkBuild {            path ‘src/main/jni/Android.mk‘        }    }}

 

虛擬機器效果:

 

3. 方法二:將gradle通過CMake關聯到本地庫

使用的時候忘記儲存流程了,懶得再去試一遍,跟NDK-build方法差不多,就是選擇方法的時候改一下,具體可以看上面貼的官網,要是以後有時間再寫上吧。

將應用代碼由eclipse匯入Android studio的方法NDK-Build和Cmake兩種方法(以android_serialport_api為例)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.