1. 程式人生 > >【Android Native Code開發系列】四 編譯自己的Native Code

【Android Native Code開發系列】四 編譯自己的Native Code

注意:

1。 系列六裡也有一些編譯相關的技巧

2。 編譯過程中,如果出現需要類似缺少libxxx.so這樣的出錯資訊,請到原始碼主目錄編譯此庫: make libxxx

#######################################
                                      編譯自己的Native Code
#######################################
# 在有Android原始碼的條件下,編譯自己的native程式碼
1.  寫好自己的c/c++工程程式碼,放在mymodule目錄,並設定好同目錄下的Android.mk
    比如要編譯一個動態庫,程式碼為ZPService.h和ZPService.cpp,則這樣配置:
    ----------------------------------------------
    LOCAL_PATH:=$(call my-dir)                                                  
    include $(CLEAR_VARS)
    LOCAL_SRC_FILES:=ZPService.cpp                         // 原始碼
    LOCAL_SHARED_LIBRARIES:=libutils libbinder    // 依賴庫 
    LOCAL_MODULE_TAGS:=optional                            // 不要忘了這行
    LOCAL_MODULE:=ZPService                                     // 生成庫名,前面不需要加lib
    LOCAL_PRELINK_MODULE:=false
     // 編譯成庫, 若編譯成可執行檔案,則為
    // include $(BUILD_EXECUTABLE)
    include $(BUILD_SHARED_LIBRARY)
    ---------------------------------------------
2.  把原始碼目錄mymodule放在android/development/下
3.  (1)進入android根目錄,執行
    source build/envsetup.sh
     (2)或者,先執行source build/envsetup.sh,再進入mymodule目錄,執行
    mm
4.  make libZPService
5.  生成的檔案將放在android/out/target/product/generic/system下的bin
    或lib目錄,這要視你要編成庫還是可執行檔案而定




# 使用下載的ndk編譯自己的native程式碼
1.  建立工程目錄ndktest, 再建立子目錄jni, 在jni下放置native程式碼和Android.mk, 如下所示:
    ../ndktest
    `-- jni
        |-- Android.mk
        `-- test.cpp
2.  進入工程主目錄下, 呼叫ndk-build編譯
   

[email protected]:~/ndktest$ ~/android-ndk-r7/ndk-build
    Compile++ thumb  : zptest <= test.cpp
    StaticLibrary  : libstdc++.a
    Executable     : zptest
    Install        : zptest => libs/armeabi/zptest
3.  如2所示, 生成的zptest位於ndktest/libs/armeabi目錄. 編譯後的目錄結構如下:
    ../ndktest
    |-- jni
    |   |-- Android.mk
    |   `-- test.cpp
    |-- libs
    |   `-- armeabi
    |       `-- zptest
    `-- obj
        `-- local
        `-- armeabi
            |-- libstdc++.a
            |-- objs
            |   `-- zptest
            |       |-- test.o
            |       `-- test.o.d
            `-- zptest

http://blog.csdn.net/blackboyofsnp/article/details/7242564

相關推薦

Android Native Code開發系列 編譯自己Native Code

注意: 1。 系列六裡也有一些編譯相關的技巧 2。 編譯過程中,如果出現需要類似缺少libxxx.so這樣的出錯資訊,請到原始碼主目錄編譯此庫: make libxxx #######################################        

Android Studio安裝部署系列十一、Android Studio安裝Alibaba Java Coding Guidelines插件(檢查代碼規範)

實現 gui 參考 阿裏巴巴 style oid lips 基本上 setting 版權聲明:本文為HaiyuKing原創文章,轉載請註明出處! 前言 該插件主要是對今年發布的《阿裏巴巴 Java 開發規約》的一個延伸,它以一個 IDE 的插件存在,可以自動對手冊中的

Android Studio安裝部署系列三十、將Eclipse項目導入到Android Studio中

png 規範 報錯 dsv 代碼 struct const 程序包 方法 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 我采用的是笨方法:新創建Android Studio項目,然後將Eclipse項目中的目錄一一復制到Android Studio項目中。

Android Studio安裝部署系列二、Android Studio開發環境搭建

alt nand inf ima str php span 開發環境搭建 index.php 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 Android Studio開發環境安裝步驟 下載Android Studio 下載地址: http://ww

Windows10 IoT開發系列API 移植工具

計算機 develop 資料 pip sin normal 分隔 win32 命令行 原文:【Windows10 IoT開發系列】API 移植工具 Windows 10 IoT Core 中是否提供你的當前 Win32 應用程序或庫所依賴的

Windows10 IoT開發系列Powershell命令行實用程序

啟動應用 solution 人員 sina rac oot 表示 art 顯示 原文:【Windows10 IoT開發系列】Powershell命令行實用程序 更新帳戶密碼: 強烈建議你更新默認的管理員帳戶密碼。若要更新帳戶密碼,你可以發出以

[置頂]實用 .NET Core開發系列- 導航篇

ati res pos dock 持續集成 cat swa bapi vue 前言 此系列從出發點來看,是 上個系列的續篇, 上個系列因為後面工作的原因,後面幾篇沒有寫完,後來.NET Core出來之後,註意力就轉移到了.NET Core上,所以再也就沒有繼續下去,此是原因

Android Studio安裝部署系列十八、Android studio更換APP應用圖標

tail map 安全區 大小 next detail 有時 ash blog 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 Android Studio新建項目後會有一個默認圖標,那麽如何更換圖標呢? 替換圖標 這個方案不建議直接在已有項目上更換

Android Studio安裝部署系列二十二、Android studio自動生成set、get方法

setter 自動生成 全選 style 原創文章 back .com 安裝部署 dash 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 操作步驟 將光標放置我們所要生成get,set方法的實體類空白處——然後右鍵—&mdas

Android Studio安裝部署系列九、Android Studio常用配置以及快捷鍵

har 常用配置 int intel 你在 tom ron androi use 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 整理Android Studio的常用配置和快捷鍵。 常用配置 顯示行號 臨時顯示 永久顯示 File&md

Android Studio安裝部署系列三十三、windows系統中通過SourceTree使用git

wan 彈出 隱藏 ins 顯示 創建倉庫 cal 代碼 參考 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 概述 前期準備 選擇代碼托管服務器:gitlab、github、開源中國等。 註冊賬號 創建項目 安裝git 參考《【Android

Android Studio安裝部署系列二十七、Android studio修改項目名稱和包名

detail 如何 裏的 繼續 想要 example 發現 and 版權 版權聲明:本文為HaiyuKing原創文章,轉載請註明出處! 概述 實際項目開發中可能碰到項目名稱寫錯了或者需要修改,而且包名可能也想要修改,那麽如何操作呢。 本文是在Android Studi

Android Studio安裝部署系列三十六、從Android Studio3.1.4升級到Android studio3.2以及創建android p模擬器(未成功)

tps min 比較 安裝 bsp mda 下載 initial uil 版權聲明:本文為HaiyuKing原創文章,轉載請註明出處! 概述 因為想要使用Android P模擬器,所以需要將Android Studio升級到3.2版本以上。 按照官網的說法:參考《ht

在VS2015中匯入/建立靜態庫並使用靜態庫VS+Qt專案開發系列

本專案示例原始碼已經上傳,歡迎點選下載~注:靜態庫——在連結步驟中,聯結器將從庫檔案取得所需的程式碼,複製到生成的可執行檔案中,這種庫稱為靜態庫,其特點是可執行檔案中包含了庫程式碼的一份完整拷貝;缺點就是被多次使用就會有多份冗餘拷貝。即靜態庫中的指令都全部被直接包含在最終生成

在VS2015中建立Qt專案VS+Qt專案開發系列(二)

        在上一篇【VS+Qt專案開發】(一)在VS2015中安裝Qt環境中,我們完成了開發環境的安裝,現在我們正式建立我們的專案。專案原始碼已經上傳,歡迎下載專案原始碼~(1)選擇:檔案 -> 新建 -> 專案,然後選擇:模板 -> Visual C

微信小程式開發系列文章模組化

微信小程式的MINA框架,其實是許多前端開發技術的組合。這篇文章中,我們來簡單地討論一下模組化。 1、模組化標準 玩前端的同學大部分都知道模組化的幾個標準,CommonJs / AMD / CMD。這裡花費一些篇幅簡單的介紹一下,比較熟悉的同學可以跳過這一部分的介紹。(1)

iOS開發系列九宮格布局

使用 objc with div self. orm i++ back hab /** * 這個盡管非常easy,算是一個小技巧,可是碰到了就記錄下來吧.積跬步,致千裏嘛. */ - (void)scratchableLatex { for (int i=

iOS開發系列NSObject方法介紹

ati ber oid ring cto rgb dst -s 推斷 NSObject是OC中的基類,全部類都繼承於此,這裏面也給我們提供了非常多與“類”和“方法”相關的方法,本文將解說幾個非常有用的方法。 正文: Per

JAVA零基礎入門系列Day1 開發環境搭建

oracle 零基礎 ati 成功 官方 運行 根目錄 文件目錄 sys 一、安裝JDK java的sdk簡稱JDK ,去其官方網站下載最近的JDK即可。 http://www.oracle.com/technetwork/java/javase/downloads/jdk

JAVA零基礎入門系列Day2 Java集成開發環境IDEA

log rgs string 文件夾 ges jetbrains 技術 http clip 開發環境搭建好之後,還需要一個集成開發環境也就是IDE來進行編程。這裏推薦的IDE是IDEA,那個老掉牙的Eclipse還是先放一邊吧,(手動滑稽)。 IDEA的下載地址:http: