1. 程式人生 > >Android Studio] Gradle專案中新增JNI生成檔案(.so檔案)

Android Studio] Gradle專案中新增JNI生成檔案(.so檔案)

轉:http://blog.csdn.net/qiujuer/article/details/24209457

為了適應潮流使用Android Studio還是有半年多了!

對於從Eclipse遷移專案到Android Studio中新增.jar檔案和.so檔案無疑是一件很重要也是很頭疼的問題!

在最新版本中,預設是自動打包libs下面的所有.jar檔案的,所以jar不用多講了。

加入.SO(這個是要看你的專案Gradle版本)

提示:都是設定build.gradle檔案

(1)老版本,好像是指0.5以前的,具體不太記得了,方法如下:

  1. task copyNativeLibs(type: Copy) {  
  2.     from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }  
  3.     into new File(buildDir, 'native-libs')  
  4. }  
  5. tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }  
  6. clean.dependsOn 'cleanCopyNativeLibs'  
  7. tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->  
  8.     pkgTask.jniDir new File(buildDir, 'native-libs')  
  9. }  


(2)新版本,具體版本號忘記了,反正如果你下載的是最新的那麼自帶就是最新的編譯器。

這個版本我現在知道的有三種辦法做到打包.SO檔案

(2.1)打包前先生成.Jar檔案後自動解包到apk檔案

  1. task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {  
  2.     destinationDir file("$buildDir/native-libs")  
  3.     baseName 'native-libs'  
  4.     extension 'jar'  
  5.     from fileTree(dir: 'libs', include: '**/*.so')  
  6.     into 'lib/'  
  7. }  
  8. tasks.withType(Compile) {  
  9.     compileTask -> compileTask.dependsOn(nativeLibsToJar)  
  10. }  


下面一句話就是打包生成目錄(build\native-libs)中的.jar檔案

  1. compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')  

(2.2)手動生成.Jar檔案後自動解包到apk檔案

這個方式需要自己手動進行.SO檔案壓縮,具體步驟為:將所有需要使用的.so檔案壓縮為.zip檔案(zip中的檔案目錄結構為: lib/armeabi/*.so)然後把zip檔案字尾改為.Jar然後放到libs生成apk就ok


預設就是自動打包所有.Jar檔案:

  1. dependencies {  
  2.     compile fileTree(dir: 'libs', include: '*.jar')  
  3. }  


(2.3)這也就是現在我正在使用的方式(推薦),其實弄了大半天無非就是把.SO檔案打包到APK的lib資料夾中,假如仔細閱讀了Gradle的使用方法,自然就知道其實Gradle官方在新版已經自動實現了打包.SO檔案的.很簡單級就是在配置的android節點下加入下面的內容就ok:

  1. sourceSets {  
  2.         main {  
  3.             jniLibs.srcDirs = ['libs']  
  4.         }  
  5.     }  


其他地方無需修改,整個專案的配置檔案如下:

  1. apply plugin: 'android'  
  2. android {  
  3.     compileSdkVersion 19  
  4.     buildToolsVersion "19.0.0"  
  5.     defaultConfig {  
  6.         minSdkVersion 16  
  7.         targetSdkVersion 19  
  8.         versionCode 1  
  9.         versionName "1.0"  
  10.     }  
  11.     buildTypes {  
  12.         release {  
  13.             runProguard false  
  14.             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'  
  15.         }  
  16.     }  
  17.     sourceSets {  
  18.         main {  
  19.             jniLibs.srcDirs = ['libs']  
  20.         }  
  21.     }  
  22. }  
  23. dependencies {  
  24.     compile fileTree(dir: 'libs', include: ['*.jar'])  
  25. }  

這不就是很簡單麼,無需手動打包,也無需很複雜的打包拷貝命令,簡單的操作就ok。可以說多看看官方文件是多麼的重要。

相關推薦

Android Studio] Gradle專案新增JNI生成檔案(.so檔案)

轉:http://blog.csdn.net/qiujuer/article/details/24209457 為了適應潮流使用Android Studio還是有半年多了! 對於從Eclipse遷移專案到Android Studio中新增.jar檔案和.so檔案無疑是一件很重要也是很頭疼的問題! 在最新

[Android Studio] Gradle專案新增JNI生成檔案(.so檔案)

轉自:http://blog.csdn.net/qiujuer/article/details/24209457?utm_source=tuicool&utm_medium=referral 為了適應潮流使用Android Studio還是有半年多了! 對於從

Android Studio Gradle打包使用正式簽名生成apk

在app目錄下找到build.gradle檔案,按照如下配置即可: android { signingConfigs { release { key

android studio查詢專案沒用到的資源

               在android studio中查詢所有沒被用到的資源,也就是res中檔案,圖片,xml檔案之內。 在android studio中點選工具欄Analyze按鈕,選擇 Run Inspection by name...按鈕 ,輸入 unused

Android studio 如何將字串新增到values-Strings.xml檔案

前言 不會偷懶的程式猿,不是一個合格的老司機 !! String規範化 大家都知道將佈局中的string等字串,規範化寫到Values-Strings.xml中的好處. 但是有時候我們不

Android studio清除專案無用的資源

做專案的過程中,可能會忘記刪除一些沒有使用的資源。接下來介紹利用android studio檢查和刪除這些沒有使用的資源。建議這個操作在打測試包之前就做,測試中,感覺不要做的好,萬一刪錯了,線上版本出問題,可不好處理啊! 下面是使用步驟: 一、 輸入:Unusen

android studio專案匯入module

       有時我們在做專案時,我們為了方便需要將已有的module匯入到專案中進行使用。那麼如何將以有的module匯入android studio專案中呢?        方法一:                最簡單的方法就是找到這個module,直接複製到專案中; 

Android studio 引入 weex 由.vue打包的.js檔案,ReferenceError: Vue is not defined錯誤

按照weex官網給出的配置,weex_sdk 版本是 0.5.1,就是由於這個版本太低,對vue.js1不支援導致的, 切換到最新sdk版本即可 還有的童鞋可能會遇到 WXSDKEngine.initialize 初始化失敗,有可能因為配置不正確 /**  * 注意要在Ma

VS2005~2012專案新增lib庫、include檔案工程設定

應用程式使用外部庫時需要進行載入,兩種庫的載入本質上都是一樣:提供功能和功能的定義。vs2005~vs2012 c++ 專案設定外部庫方法如下: 1. 新增編譯所需要(依賴)的 lib 檔案在“專案->屬性->配置屬性->聯結器(link)->輸入

使用android studio將eclipse專案改造成gradle專案踩過的坑

       本文中部分內容是看過了張大神的部落格後分享出來的。        其實android studio使用起來和之前習慣用eclipse開發區別並不大,只是一些快捷鍵發生了變化,這個是需要你

android studio gradle打包,怎麼樣通過打不同的包名所依賴的專案不同,即所生成的apk大小不一樣呢(每個apk不包含所有的依賴的專案

問題:gradle打包,怎麼樣通過打不同的包名所依賴的專案不同,即所生成的apk大小不一樣呢(每個apk不包含所有的依賴的專案)??? 解決:通過修改build.gradle檔案中 在android{}新增如下程式碼:   在dependencies{}中新增 “F

Android studio專案使用JNI呼叫opencv的c++程式

前言 opencv雖然有java版本,但是對於輪廓,點等資料結構和c++版本不一樣,這給移植帶來了大量的工作量。好在java有JNI(Java Native Interface)可以呼叫c++函式。 本文主要介紹如何在安卓手機APP專案中呼叫用c++寫的通過op

android studio開啟專案Gradle Download:https://jcenter載入慢

我們經常會遇到這個問題,下載了一個demo,但是gradle載入的時候特別慢,這個是因為很多要連線境外伺服器,所以網速慢的一筆,為解決這個問題,我這裡推薦兩種方法。 使用方法: build.gradle buildscript { repositories

Android Studio專案構建時報Could not find lint-gradle-api.jar 錯誤的解決辦法

        網上有很多報下面這個錯誤:       這個錯誤的解決辦法,經常都是莫名出現的,這個問題是由於專案build.gradle中沒有配置google()所造成的,一般在buildscript和allprojects的配置項中都加上即可,然而有時還是解決不了問

Android Studio使用過程Java類突然報紅,但專案可執行解決方法

Studio也有不穩定的時候,比如電腦自動的關機,或者停電導致的電腦直接關機等,再開啟電腦後,接著開啟Studio也許專案中就是不片紅,重啟和Build、clean、make project都不行,最後才知道是build快取的問題,網上說清空build快取之後就可以了,試了後

Android Studio 在安裝gradle-4.6-all.zip下載問題

Android Studio 在安裝中遇gradle-4.6-all.zip下載問題 很久沒用Android Studio了,最近重新安裝Android Studio 時,遇到了這樣一個問題,一直在顯示gradle檔案在下載中,檢查其他檔案,全部沒問題後,並且更改使用者名稱為英文也無效;記錄下來以免以後遺忘

Android Studio專案新增C/C++原生程式碼教程

Android Studio向專案新增C/C++原生程式碼教程  轉自:http://www.cnblogs.com/lsdb/p/9337285.html 說明:本文相當於官方文件的個人重新實現,官方文件連結:https://developer.android.com/studi

安卓開發經驗——Android Studio的project兩個build.gradle配置的區別

一般建立一個android專案後回出現兩個gradle: build.gradle(Project):用來配置整個工程的 build.gradle(app):一個是用來配置app的 對compile和classpath區別的解釋: I’m g

解決方法:Mac Android studio 建立專案是下載gradle一直不返回

1,用android studio 建立專案,會一直停留在建立的進度條狀態,一個多小時也沒完成; 2,用 活動監視器 強制退出android studio, 開啟剛才建立的那個專案裡的 gradle–>wrapper–>gradle-wrapper.proper

完美簡單的解決Android Studio匯入專案Gradle問題(超簡單)

GitHub上有很多的程式碼可供我們參考學習。但是存在著一個問題,就是有很多專案的Gradle版本和我們自己的Gradle版本不一致 ,匯入無法執行或者各種問題。 總結了多次,遇到新的情況會不斷的更新。現在給大家講一下我的方法: 這裡涉及到五個要素: (1)自己的Gradl