當前位置:首頁 » 安卓系統 » 命令行編譯android

命令行編譯android

發布時間: 2023-02-09 10:47:04

❶ 用java或C#調用命令行對android工程進行編譯、打包和簽名,急求!!

Android本身是支持ant打包項目的,並且SDK中自帶一個build.xml文件。
通過該文件,可以對文件進行編譯、打包、安裝等。並且支持多種方式打包,如debug或者release。
一般的,可以按照如下方法進行操作:

首先創建一個Android工程。
工程創建好後,需要為工程添加ant支持,即創建相應的build.xml文件。
這個文件不需要用戶自己創建,只需要執行如下命令即可:
<sdk>/tools/android update project -p <project> -t <target>

其中:
sdk為sdk的安裝目錄,其下的tools/android是我們要使用的命令。
project為項目目錄。
target為項目所使用的android的target id,也就是項目對應的android的版本。

可以將sdk的tools目錄添加到環境變數 ~/.bashrc 文件中,重啟後生效,以後可以直接使用命令了。
可以通過執行以下命令查看當前sdk中所包含的target以及相應id:
android list targets

執行完android update project命令後,會在項目的根目錄下生成相應的ant文件。
主要有build.xml、ant.properties、local.properties三個文件。
如果沒有ant.properties文件,可以自己手動添加。

其中,build.xml文件是進行ant build的主要文件,它引用了其它的文件。
在local.properties文件中定義了sdk.dir屬性,也就是當前使用的sdk的目錄。
在ant.properties文件中,可以定義自己的一些屬性,或者重定義一些屬性。
當然,這兩個屬性文件可有可無,直接定義到build.xml中也沒有關系。

在build.xml中的最後,引用了sdk目錄下的tools/ant/build.xml文件。
這個是sdk默認的build文件,可以將其內容直接拷貝過來,也可以保持當前的引用方式。
項目下的build.xml默認執行的target是help,運行後可以看到相關的幫助信息。
通過幫助信息,可以看到其它可用的target。
一般的,我們需要修改為debug或者release。
修改好之後,再運行build.xml文件,就會執行我們需要的編譯過程了。
build.xml文件的執行方法為:右鍵->Run As->Ant Build。

如果是debug版的話,默認會使用debug方式簽名。
如果是release版的話,需要指定相應的keystore以及私鑰。
否則,最後只能生成一個沒有簽名的apk文件。

設定私鑰庫的方法是,在ant.properties文件中,添加如下內容:
key.store=<keystore>
key.alias=<key>
key.store.password=<keystore pwd>
key.alias.password=<key pwd>

其中:
keystore為私鑰庫文件。
key為簽名需要使用的私鑰。
key.store.password為私鑰庫的密碼。
key.alias.password為私鑰的密碼。

兩個密碼相關的屬性也可以不添加,而只添加私鑰庫及私鑰。
這樣的話,執行時會依次彈出相應的輸入框,提示用戶輸入相應的密碼。
這樣雖然相對繁瑣,但是由於沒有明文指定密碼,對私鑰庫的保護會更好一些。

如果項目引用了第三方庫的話,只需要在項目根目錄創建libs文件夾並將其放入即可。
如果是jar庫,直接放到libs目錄下;如果是so庫,需要放到libs的名為armeabi的子目錄下。
也可以通過設定相應的屬性來指定第三方庫的位置,其默認都是libs文件夾。
jar.libs.dir為jar類型庫所在的目錄。
native.libs.absolute.dir為so類型庫所在的目錄,即armeabi的父目錄。

如果項目包含了jni代碼,希望在打包時自動重新編譯so庫,可以修改build.xml文件。
修改方法為,在引用sdk的build.xml文件之前添加如下target:
<target name="-pre-build" depends="-ndk-build">
</target>
<target name="-ndk-build">
<exec executable="ndk-build" failonerror="true">
<arg value="clean" />
</exec>
<exec executable="ndk-build" failonerror="true" />
</target>

ndk-build為ndk提供的命令,需要將ndk安裝目錄添加到環境變數中,添加方法同sdk/tools。
生成的so默認會放到libs/armeabi目錄下。

使用默認的build.xml打包apk時,已經包含了混淆、簽名、對齊優化等相關過程。
如果是使用release的方式,最後生成的apk文件已經可以直接發布了。

❷ android編譯命令的說明

android源碼目錄下的build/envsetup.sh文件,描述編譯的命令

- m:       Makes from the top of the tree.

- mm:      Builds all of the moles in the current directory.

- mmm:     Builds all of the moles in the supplied directories.

要想使用這些命令,首先需要設置android腳本編譯環境,在源碼根目錄執行 source build/envsetup.sh

m:編譯所有的模塊

mm:編譯當前目錄下的模塊,當前目錄下要有Android.mk文件

mmm:編譯指定路徑下的模塊,指定路徑下要有Android.mk文件

下面舉個例子說明,假設我要編譯android下的\framework\av\cmds\screenrecord模塊,

當前目錄為源碼根目錄,方法如下:

1、source build/envsetup.sh

2、mmm framework/av/cmds/screenrecord

或者 :

1、source build/envsetup.sh

2、cd framework/av/cmds/screenrecord

3、mm

❸ Android APK編譯流程

apk 是Android Package的簡寫, 在平時的開發過程中,通過點擊 Run app 按鈕 或者 在命令行中輸入

這樣Android Studio就會啟動構建流程,最終輸出一個我們想要的APK。

直達官網介紹

對於小白來說,上面一張圖已經可以解釋apk的構建過程了,不過對於Andoid開發者而言還需要了解一些更詳細的構建過程。

詳細的對應步驟 和 使用工具如下:

資源文件(res文件夾下的文件)通過 AAPT(Android Asset Packaging Tool)打包生成R.java類(資源索引表)、.arsc資源文件 和res文件。

resources.arsc 是一個App的資源索引表,通過R.java 文件 和 resources.arsc 可以定位到資源的內存地址,resources.arsc文件的作用是通過一樣的ID,根據不同的配置索引到最佳的資源顯示在UI中。

AIDL (Android Interface Definition Language), 是Android介面定義語言,是Android提供的IPC (Inter Process Communication,進程間通信)的一種獨特實現。
如果有aidl文件,這個階段會生成對應的Java介面文件。

R.java文件、工程源碼文件、aidl.java文件, 在這一步通過javac生成.class文件。

源碼.class文件和第三方jar或者library通過dx工具打包成dex文件

Android系統的Dalvik虛擬機的可執行文件為DEX格式,所以這里會將上一步中生成的.class文件 和 引用的第三方jar等過程中的.class 一起通過dx工具打包成dex文件

apkbuilder工具會將所有沒有編譯的資源、.arsc資源、.dex文件打包到一個完成apk文件中

tips:

apksigner工具會對未簽名的apk驗證簽名。得到一個簽名後的apk(signed.apk)

apksigner 是google 退出的V2簽名方式
Jarsigner 是之前一直使用的V1簽名方式

可以通過在命令行中輸入apksigner --help來獲取詳情信息,如果沒有特殊需求,使用下面命令即可完成簽名

release mode 下使用 aipalign進行align,即對簽名後的apk進行對齊處理

所謂對齊,主要過程是將APK包中所有的資源文件距離文件起始偏移為4位元組整數倍,這樣通過內存映射訪問apk文件時的速度會更快。對齊的作用主要是為了減少運行時內存的使用。

zipalign是一個android平台上整理APK文件的工具,它對apk中未壓縮的數據進行4位元組對齊,對齊後就可以使用mmap函數讀取文件,可以像讀取內存一樣對普通文件進行操作。如果沒有4位元組對齊,就必須顯式的讀取,這樣比較緩慢並且會耗費額外的內存。

參考文章:
Android-Studio配置構建
淺談Android打包流程
apk打包流程

END!

linux命令行怎麼編譯Android代碼

這個問題已經找到解決方案了,方法如下:
1.在Linux設置文件共享,將項目
共享,最好有個密碼什麼的。
2.在Linux上配置ssh server,用於
和編譯安卓源碼
3.Linux mac 通過
連接,原因是有線傳輸比無線的快很多,ping只是0.3左右ms,不影響使用。然後就可以mac編寫代碼,然後ssh
編譯什麼的,很方便,

❺ 如何編譯android x86模擬器

首先你需要設置一下emulator工具的目錄之類的
要在.bashrc中新增環境變數,如下
ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic
ANDROID_PRODUCT_OUT_bin=~/android/out/host/linux-x86/bin
這里是設置你的輸出文件的位置和bin工具目錄
然後在命令行輸入:
export path=${path}:${ANDROID_PRODUCT_OUT_bin}:${ANDROID_PRODUCT_OUT};
上面是導入了相關的配置,然後使之生效。
source ~/.bashrc
接著切換到輸出的system文件夾
cd ~/android/out/target/proct/generic
然後來創建模擬器
emulator -system system.img -data userdata.img -ramdisk ramdisk.img
如果你運氣夠好的話,也許現在已經在運行了,不過我運氣明顯不夠好。
提示一:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
If you are an Android sdk user, please use 『@<name>』 or 『-avd <name>』
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator

既然人家提示了,那就按照步驟走吧,輸入命令:
emulator -help-avd
接著提示如下:
use 『-avd <name>』 to start the emulator program with a given Android
Virtual Device (a.k.a. AVD), where <name> must correspond to the name
of one of the existing AVDs available on your host machine.
See -help-virtual-device to learn how to create/list/manage AVDs.
As a special convenience, using 『@<name>』 is equivalent to using
『-avd <name>』.
跟著提示繼續走,輸入命令:
emulator -help-virtual-device
又是提示了:
An Android Virtual Device (AVD) models a single virtual
device running the Android platform that has, at least, its own
kernel, system image and data partition.
Only one emulator process can run a given AVD at a time, but
you can create several AVDs and run them concurrently.
You can invoke a given AVD at startup using either 『-avd <name>』
or 『@<name>』, both forms being equivalent. For example, to launch
the AVD named 『foo』, type:
emulator @foo
The 『android』 helper tool can be used to manage virtual devices.
For example:
android create avd -n <name> -t 1 # creates a new virtual device.
android list avd # list all virtual devices available.
Try 『android –help』 for more commands.
Each AVD really corresponds to a content directory which stores
persistent and writable disk images as well as configuration files.
Each AVD must be created against an existing sdk platform or add-on.
For more information on this topic, see -help-sdk-images.

延伸1):
Android x86模擬器Intel Atom x86 System Image配置與使用方法

大家現在開發使用的Android 模擬器模擬的是 arm 的體系結構(arm-eabi),因此模擬器並不是運行在x86上而是模擬的arm,所以我們調試程序的時候經常感覺到非常慢,大部分開發者應該都深有體會。
針對這種情況,前段時間intel推出了支持x86的Android模擬器,這將大大提高啟動速度和程序的運行速度,這將允許Android模擬器能夠以原始速度(真機運行速度)運行在使用intel x86處理器的電腦中,各位開發者有福了,下面將為大家展示使用方法。

一、首先下載intel提供的 intel® Hardware Accelerated Execution Manager 1.0.1(R2)

requirement:
1. requires the Android* SDK to be installed (version 17 or higher). SDK17或者以上
2.intel® processor with support for VT-x, EM64T, and Execute Disable (XD) bit functionality intel的cpu:並支持VT-X(虛擬化技術)、可擴展64位、Execute Disable bit。(均需要保證在bios中開啟Enable)
3. At least 1 gb of available ram 1G以上內存,否則安裝不了

滿足硬體和軟體要求之後,就可以開始安裝了,一直下一步至安裝成功。途中有個地方選擇分配給HAXM內存大小,一般默認就好,分太多會拖慢整機速度。

安裝成功後命令行輸入sc query intelhaxm,查看運行狀態: state is: 「4 RUNNING」 ,即代表安裝成功。需要更改分配內存,重新運行一下安裝程序選擇change即可修改。
還可以使用以下指令手動開啟和關閉:
Stop: sc stop intelhaxm

Start:
sc start intelhaxm

滿足軟硬體條件,若提示如下Error:but intel Execute Disable bit (XD) is not turned on......
(需要開啟系統數據執行保護功能dep,下午糾結了好久才查到。官網原文:Windows* hosts may need to enable dep (Data Execution Prevention) in addition to intel XD)
命令行使用指令:bcdedit.exe /set nx optin 打開即可,需要重啟電腦

二、下載Intel Atom x86 System Image
1. 從SDK Manager下載:打開SDK Manager,展開至Android2.3.3(API10)(注意:目前只有2.3.3和4.0.3(Ice Cream Sandwich)有x86的Image),需要和2.3.3的SDK Platform配合使用。

2.使用avd Manager創建一個新的avd: Hardware Property裡面選擇gpu emulation yes 還有 Keyboard support yes

3.開始使用飛速的模擬器吧,各種爽歪歪
好的工具可以更有效率的開發APP,讓我們從此告別那龜速的模擬器吧

❻ 求教一個問題,命令行編譯Android程序,如何用proguard混淆

針對android 選擇user版本進行編譯的時候,會出現proguard錯誤,我們需要知道的事情

1.proguard是做什麼的,他的作用是將java代碼進行混淆的工具

2.因為proguard是混淆工具,所以android的mk文件也對其支持為兩種方式:

1.指定不需要混淆的native方法與變數的proguard.flags文件如:LOCAL_PROGUARD_FLAG_FILES := proguard.flags

2.制定編譯的工程,不要使用代碼混淆的工具進行代碼混淆如:LOCAL_PROGUARD_ENABLED := disabled

3.不設置,默認使用LOCAL_PROGUARD_ENABLED := full.即將該工程代碼全部混淆

❼ 如何編譯android x86模擬器

首先你需要設置一下emulator工具的目錄之類的,這個不細說了,
要在.bashrc中新增環境變數,如下
ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic
ANDROID_PRODUCT_OUT_BIN=~/android/out/host/linux-x86/bin
這里是設置你的輸出文件的位置和bin工具目錄,不用多解釋吧?
然後在命令行輸入:
export PATH=${PATH}:${ANDROID_PRODUCT_OUT_BIN}:${ANDROID_PRODUCT_OUT};
上面是導入了相關的配置,然後使之生效。
source ~/.bashrc
接著切換到輸出的system文件夾
cd ~/android/out/target/proct/generic
然後來創建模擬器
emulator -system system.img -data userdata.img -ramdisk ramdisk.img
如果你運氣夠好的話,也許現在已經在運行了,不過我運氣明顯不夠好。
提示一:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
If you are an Android SDK user, please use 『@』 or 『-avd 』
to start a given virtual device (see -help-avd for details).
Otherwise, follow the instructions in -help-disk-images to start the emulator

既然人家提示了,那就按照步驟走吧,輸入命令:
emulator -help-avd
接著提示如下:
use 『-avd 』 to start the emulator program with a given Android
Virtual Device (a.k.a. AVD), where must correspond to the name
of one of the existing AVDs available on your host machine.
See -help-virtual-device to learn how to create/list/manage AVDs.
As a special convenience, using 『@』 is equivalent to using
『-avd 』.
跟著提示繼續走,輸入命令:
emulator -help-virtual-device
又是提示了:
An Android Virtual Device (AVD) models a single virtual
device running the Android platform that has, at least, its own
kernel, system image and data partition.
Only one emulator process can run a given AVD at a time, but
you can create several AVDs and run them concurrently.
You can invoke a given AVD at startup using either 『-avd 』
or 『@』, both forms being equivalent. For example, to launch
the AVD named 『foo』, type:
emulator @foo
The 『android』 helper tool can be used to manage virtual devices.
For example:
android create avd -n -t 1 # creates a new virtual device.
android list avd # list all virtual devices available.
Try 『android –help』 for more commands.
Each AVD really corresponds to a content directory which stores
persistent and writable disk images as well as configuration files.
Each AVD must be created against an existing SDK platform or add-on.
For more information on this topic, see -help-sdk-images.

❽ Android系統編譯命令make

在編譯Android系統時,需要先執行2條命令,來設置必要的環境變數。

接下來就可以執行make系列命令,來完成不同的需要。

make clean 用來清除編譯歷史,開始一個全新的編譯。
make -j 或 make -j8 啟動編譯過程。 -j 後面的數字代表要使用的cpu thread的數目。

在完成了全編譯後,才能執行生成OTA升級包的操作。

注意事項:

❾ 如何反編譯android應用以及重編譯,簽名和對齊優化

首先,了解一下我們為什麼需要反編譯apk
大部分情況下,是由於想本地化一款優秀的應用,才需要做這事兒;又或者進行少量的smali修改以達到想要的效果(如添加歸屬地,使3G版Nexus 7支持Wi-Fi熱點)。

下面我們先准備運行環境和工具
建立工作目錄,如.\workspace\apktoolbox (下面同樣以此路徑為例)
必不可少的JDK:Oracle Java下載,安裝完成後把<jdk-inst-path>\bin添加到$PATH環境變數中
反編譯和重編譯工具apktool:Google Code下載,按平台下載(一個apktool-install-<platform>-<ver>-tar.bz2,一個apktool<ver>.tar.bz2,下載完成後解壓至.\workspace\apktoolbox\bin
密鑰文件,共4組。test/shared/media/platform,從android source中獲取,分別對應不同共享用戶ID時簽名所需(查看應用AndroidManifest.xml第二行android:sharedUserId項 ),放到.\workspace\apktoolbox\bin下
test - 無android:sharedUserId項
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
簽名工具signapk.jar,放到.\workspace\apktoolbox\bin下
對齊優化工具zipalign(從android sdk中獲取,在tools目錄下),放到.\workspace\apktoolbox\bin下
准備工作完成

接下來我們就要開始工作了(以本地化工作為例)
把待反編譯的apk放到.\workspace\apktoolbox\apks下
在命令行模式下進入.\workspace\apktoolbox\bin目錄,輸入以下命令進行解包(反編譯)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目錄(英文原版)和values-r<locale>目錄(本地化)就是我們需要的對象。
本地化工作完成後,在命令行中輸入以下命令進行重新打包(重新編譯)
apktool b ..\apks\<outdir>

.\workspace\apktoolbox\apks\<outdir>\dist目錄下會生成重新打包後的apk(未簽名,未對齊優化)
重新打包完成後,在命令行中輸入以下命令進行簽名(根據實際情況選用密鑰,這里以test密鑰為例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk

簽名完成後,在命令行中輸入以下命令進行對齊優化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk

<apkfile>_zipaligned.apk就是我們最終需要的apk了。
完成
部分apk需要系統框架資源,沒有的話在重新打包時會報錯,這種情況下我們只需要先安裝一下對應系統框架即可(從你目標ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中輸入以下命令進行安裝
apktool if ..\apks\framework-res.apk

❿ 如何在命令行下使用Android NDK交叉編譯工具

1. 定義相關的目錄(請修改為自己的相關目錄)
$ export NDKROOT=/opt/android/android-ndk-r10
$ export SYSROOT=$NDKROOT/platforms/android-19/arch-arm
$ export GCC=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
2. 編譯代碼
$ $GCC -o main.out main.c --sysroot=$SYSROOT
3. 執行程序
$ adb push main.out /data/local/
$ adb shell
$ /data/local/main.out
其核心思想其實很簡單, 就是使用NDK提供的arm-linux-androideabi-gcc代替Linux下的gcc工具, 使用NDK提供的C頭文件/庫文件目錄代替 Linux 下默認的目錄, 其實, 使用gcc編譯的時候默認的 sysroot設置為了本機的"/"目錄, 等價於如下命令 :
$ gcc -o main.out main.c --sysroot=/
關於如何在命令行下使用Android NDK交叉編譯工具就介紹到這里了,希望對大家有所幫助

熱點內容
玩火影筆記本要什麼配置 發布:2024-04-25 08:34:59 瀏覽:208
sql性能監視器 發布:2024-04-25 08:21:48 瀏覽:832
吃雞ak配置什麼最好 發布:2024-04-25 08:15:46 瀏覽:447
firefox緩存目錄 發布:2024-04-25 08:00:31 瀏覽:940
我的世界國服怎麼免費弄伺服器 發布:2024-04-25 08:00:16 瀏覽:540
javaapi源碼 發布:2024-04-25 07:51:15 瀏覽:606
怎麼在伺服器執行jmeter腳本 發布:2024-04-25 07:35:25 瀏覽:397
域名訪問https 發布:2024-04-25 07:16:56 瀏覽:414
javaie亂碼 發布:2024-04-25 07:07:15 瀏覽:602
php開發微信支付 發布:2024-04-25 06:57:38 瀏覽:317