1. 程式人生 > >Android.mk編譯目標(編譯包、二進位制檔案、預編譯)

Android.mk編譯目標(編譯包、二進位制檔案、預編譯)

1.常用

我們經常使用Android.mk來編譯一個apk,jar包等。

BUILD_PACKAGE(既可以編apk,也可以編資源包檔案,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true)

BUILD_JAVA_LIBRARY(java共享庫)

BUILD_STATIC_JAVA_LIBRARY(java靜態庫)

BUILD_EXECUTABLE(執行檔案)

BUILD_SHARED_LIBRARY(native共享庫)

BUILD_STATIC_LIBRARY(native靜態庫)

2.預編譯模組

在實際的開發中,並不會像Android一樣將所有的原始碼集中在一起編譯,有很多apk檔案,jar都是預先編譯好的,編譯系統是需要將這些二進位制檔案複製到生成的image檔案中。

常用的方法是通過PRODUCT_COPY_FILES變數將這些檔案直接複製到生成的image檔案中。但是有些apk或jar包,需要實用系統的簽名才能正常執行,這樣用複製的方式就不行了。另外一些動態庫檔案可能是原始碼中的某些模組所依賴的,用複製的方法也無法建立依賴關係,這將導致這些模組編譯失敗。Android可以通過定義預編譯模組的方法來解決上面的問題。

定義一個預編譯模組和定義一個普通的編譯模組格式相似。不同是LOCAL_SRC_FILES變成不是原始檔了,而是二進位制檔案。同時可以通過LOCAL_MODULE_CLASS來指定模組的型別,最後include的是BUILD_PREBUILT變數定義編譯檔案。

編譯apk檔案

include $(CLEAR_VARS)
LOCAL_MODULE := ThemeManager.apk
LOCAL_SRC_FIELS := app/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := APPS
LOCAL_CERTIFICATE := platform
include & (BUILD_PREBUILT)

編譯jar包

include $(CLEAR_VARS)
LOCAL_MODULE := libfirewall.jar
LOCAL_SRC_FIELS := app/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := JAVA_LIBRAYIES
LOCAL_CERTIFICATE := platform
include & (BUILD_PREBUILT)

定義動態庫檔案目標

include $(CLEAR_VARS)
LOCAL_MODULE := libglobaltheme_jni.so
LOCAL_MODULE_OWNER :=
LOCAL_SRC_FIELS := lib/$(LOCAL_MODULE)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := SHARED_LIBRAYIES
include & (BUILD_PREBUILT)

編譯可執行檔案

include $(CLEAR_VARS)
LOCAL_MODULE := bootanimation
LOCAL_MODULE_OWNER :=
LOCAL_SRC_FIELS := bin/bootanimation
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_PATH := $(TARGET_OUT)/bin
include & (BUILD_PREBUILT)


相關推薦

Android.mk編譯目標(編譯二進位制檔案編譯

1.常用 我們經常使用Android.mk來編譯一個apk,jar包等。 BUILD_PACKAGE(既可以編apk,也可以編資源包檔案,但是需要指定LOCAL_EXPORT_PACKAGE_RESOURCES:=true) BUILD_JAVA_LIBRARY(java共

Android Studio中新增整體的activity類檔案,重新編譯後提示“程式R不存在”解決

問題描述: 做新功能模組開發,新增兩個寫好的activity類檔案,資原始檔和jave都整合好了,最後 Rebuild Project的時候編譯的message裡面出現“程式包R不存在”提示 解決辦

個人小結:為什麼要在構建機器上編譯待測試釋出的二進位制檔案!

1>構建機上只能編譯程式碼倉庫裡的工程,未入庫的程式碼無法編譯,釋出!    這樣的話,想搞點小動作也沒那麼容易 2>構建機會自動打版本號,數字簽名,備份PDB,如HUDSON      多人開發環境下,如

C# 好程式碼學習筆記(1):檔案操作讀取檔案Debug/Trace 類Conditional條件編譯CLS

[TOC] 目錄: 1,檔案操作 2,Debug、Trace類 3,條件編譯 4,MethodImpl 特性 5,CLSComplianAttribute 6,必要時自定義類型別名 最近在閱讀 .NET Core Runtime 的原始碼,參考大佬的程式碼,學習編寫技巧和提高程式碼水平。學

application.properties多環境配置檔案jar外部配置檔案配置項加密程式中配置使用

一、簡介 spring boot專案application.properties檔案存放及使用介紹 二、方法一多環境配置檔案 我們一般都會有多個應用環境,開發環境、測試環境、生產環境,各個環境的配置會略有不同,我可以根據這個建立多份配置檔案,由主配置檔案來控制讀取那個子配置 建立spring boot專案

Tensorflow學習筆記:讀取二進位制檔案讀寫TFRecord檔案

#影象基本知識     OpenCV已經學過 #圖片操作目的:     增加圖片資料的統一性:大小與格式統一     縮小圖片資料量,防止增加開銷 #圖片操作:放大或縮小   

文字檔案二進位制檔案操作01(C)

現有一個二進位制檔案 E81_data.bin,其中儲存了 20 個整數, 請將檔案儲存至 C 盤根目錄下的 cdata 資料夾。 編寫程式 完成如下功能: (1) 編寫一個函式, 讀取出這些整數。 (2) 編寫一個函式,對所有整數按照從小到大排序。 (3) 編寫一個函式,

eclipse c 編譯工程(已有makefile檔案的完整工程

如何編譯一個已經具備makfile的完整的工程 以TJET_SDK為例說明如何用eclipse編譯程式: 在TJET_SDK的主目錄下會發現有.cproject和.project隱藏檔案, .project檔案大小2~3K Bytes , 該檔案是針對eclipse的project

文字檔案二進位制檔案操作03(C)

現有一個二進位制檔案 E83_data.bin,檔案中包含了若干學生資訊, 請將檔案儲存至 C 盤根目錄下的 cdata 資料夾。其中學生資訊結構如下: struct _student { char ID[15]; // 學號 char name[20]; // 姓名 int

C/C++讀寫文字檔案二進位制檔案

//採用CPP模式讀取txt void TextRead_CPPmode() { fstream f; f.open("txt_out.txt",ios::in); //檔案開啟方式選項: // ios::in    = 0x01, //供讀,檔案不存在則建立(ifstream預設的開啟方式) /

Java編譯(三 Java即時編譯(JIT編譯):執行時把Class檔案位元組碼編譯成本地機器碼

Java編譯(三)Java即時編譯(JIT編譯): 執行時把Class檔案位元組碼編譯成本地機器碼 下面我們詳細瞭解JIT編譯;從官方JDK中的HotSpot虛擬機器的JIT編譯器入手,先介紹直譯器與JIT編譯器是如何配合工作的,認識JIT編譯器C1/C2;再看看JI

從零開始學C++之IO流類庫(三檔案的讀寫二進位制檔案的讀寫檔案隨機讀寫

#include <cassert>#include <iostream>#include <fstream>#include <string>using namespace std;struct Test {     int a;     int b; };i

mysql之 日誌體系(錯誤日誌查詢日誌二進位制日誌事務日誌中繼日誌

一、 mysql錯誤日誌: 錯誤日誌記錄的事件: a)、伺服器啟動關閉過程中的資訊 b)、伺服器執行過程中的錯誤資訊 c)、事件偵錯程式執行一個事件時間生的資訊 d)、在從伺服器上啟動從伺服器程序時產生的資訊 log_error引數指定錯誤日誌存放路徑以及檔名。如果不指定檔

MySQL 第20天 MySQL日誌 錯誤日誌二進位制日誌查詢日誌和慢查詢日誌

MySQL日誌在任何一種資料庫中,都會有各種各樣的日誌,記錄著資料庫工作的方方面面,以幫助資料庫管理員追蹤資料庫曾經發生過的各種事件在 MySQL 中,有 4 種不同的日誌,分別是錯誤日誌、二進位制日誌(BINLOG 日誌)、查詢日誌和慢查詢日誌錯誤日誌錯誤日誌是 MySQL

通過Unity編譯檔案smcs.rsp檔案新增編譯命令

可以在Unity Assets目錄下建立smcs.rsp檔案,並向其中新增預編譯命令,其會在unity啟動時執行,比如新建一個smcs.rsp檔案,向其中新增內容: -define:MYDEF 然後就可以在指令碼中加入巨集判斷: if MYDEF …

文字檔案二進位制檔案Unicode字元編碼

從網上找到一篇文章, 寫的挺基礎, 通俗易懂的, 和大家分享:     現在搞懂了文字檔案與二進位制檔案之間的關係啦. 我們可以利用二進位制編輯器檢視文字檔案. 上圖紅框中的左邊是十六進位制顯示的,右邊是文字(ascii 在程式中有這麼一句: 開始我不明白為什麼要寫

android下使用FTP上傳檔案下載檔案新建目錄刪除檔案工具類

package com.hisign.util; import android.text.TextUtils; import android.util.Log; import com.hisign.qrcebpro.app.Constant; import com.

使用python的hdfs操作分散式檔案系統(HDFS

===================================================================================== 寫在前邊的話:         之前做的Hadoop叢集,組合

C# 選擇檔案選擇資料夾開啟檔案(或者資料夾 路徑中獲取檔案全路徑目錄副檔名檔名稱 追加拷貝刪除移動檔案建立目錄 修改檔名資料夾名!!

https://www.cnblogs.com/zhlziliaoku/p/5241097.html 1、選擇檔案用OpenDialog OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;/

mysql與mariaDB涉及到的檔案(日誌檔案程序檔案套接字檔案

文章目錄 1、引數配置檔案 2、日誌檔案 2.1 錯誤日誌 2.2 慢查詢日誌 2.3 查詢日誌 2.4 二進位制日誌 3、套接字檔案 4、p