android編譯代碼
⑴ Linux命令行怎麼編譯Android代碼
這個問題已經找到解決方案了,方法如下:
1.在Linux設置文件共享,將項目
共享,最好有個密碼什麼的。
2.在Linux上配置ssh server,用於
和編譯安卓源碼
3.Linux mac 通過
連接,原因是有線傳輸比無線的快很多,ping只是0.3左右ms,不影響使用。然後就可以mac編寫代碼,然後ssh
編譯什麼的,很方便,
⑵ android 修改代碼怎樣編譯
1: ./mk n(r) kernel; ./mk bootimage;當修改kernel相關代碼時,具體如下:
alps/kernel/
alps/mediatek/platform/mt65xx/kernel/
alps/mediatek/source/kernel/
alps/mediatek/customer/mt65xx/kernel/
alps/mediatek/customer/common/kernel/
alps/mediatek/customer/$porject_name$/kernel
......
2: ./mk n pl 當修改preloader相關代碼時, 具體如下:
alps/mediatek/platform/mt65xx/preloader/
alps/mediatek/source/preloader/
alps/mediatek/customer/mt65xx/preloader/
alps/mediatek/customer/common/preloader/
alps/mediatek/customer/$porject_name$/kernle
......
3: ./mk uboot 當修改uboot相關代碼時,具體如下:
alps/mediatek/platform/mt65xx/uboot/
alps/mediatek/source/uboot/
alps/bootable/bootloader/uboot/
alps/mediatek/customer/mt65xx/uboot/
alps/mediatek/customer/common/buoot/
alps/mediatek/customer/$porject_name$/uboot/
......
4: ./mk systemimage 當修改system相關代碼時,具體如下:
alps/frameworks/
alps/packages/
alps/vendor/
alps/hardware/
alps/dalvik/
...........
5: ./mk recoverimage 當修改recover相關代碼時,具體如下:
alps/bootable/recovery/
alps/mediatek/customer/$project_name$/recovery/
......
6: ./mk factoryimage: 當修改factory相關代碼時使用此命令,具體如下:
alps/mediatek/customer/$project_name$/factory/
alps/mediatek/customer/common/factory/
alps/mediatek/source/factory/
......
7: ./mk secroimage 當修改secro相關代碼時,具體如下:
alps/mediatek/source/secro/
alps/mediatek/customer/$project_name$/secro/
.....
⑶ android如何把apk的工程代碼放到源碼目錄下編譯
啥平台的,是原生的還是高通的還是mtk的?反正都類似,你需要一個Android.mk然後源碼需要整體new過。然後編譯的時候編譯到Android.mk所在目錄就可以了。反正我現在接觸mtk平台的,new代碼方法如下:1、首先到XXXXXX/L23_XXXXXXX_AN5.1_MT6735_65C_L1.MP3.V1.8.9_150503/android_mtk_6753_mp目錄下,使用如下命令./TmakeGionee
BFL7506A
-p
packages/apps/XXXXX(XXXXXX就是你apk代碼所存放的並且與Android.mk同級的目錄)。
⑷ 如何在Ubuntu編譯Android2.3源代碼以及製作自己的SDK
網上下一個軟碟通軟通(UitraISO)工具、然後去官網上下載一個64位ubuntu.*.iso系統文件、然後軟碟通工具自己製作一個USB啟動盤(非常簡單)不會用軟碟通的網路一下一大把!、系統最好是10.40以上的版本
使用的是ubuntu官網下載的ubuntu10.04 LTS 64位版本(ubuntu-10.04.2-desktop-amd64.iso)
配置軟體源:
系統安裝完畢以後應該首先換一個速度快的軟體源
一般用的是ubunt
不然下載各種更新和軟體包的時候非常的慢
安裝JDK:
我要編譯的是2.3姜餅的源代碼 所以需要使用jdk6 (還需要是64位的系統)
如果是32為系統藐視jdk要安裝jdk5.0的吧!藐視說有個doc什麼的不行!所以系統一般裝64的、如果是32的小伙們趕快把jdk看看
安裝方法:
打開終端
輸入
sudo add-apt-repository "deb "
sudo add-apt-repository "deb-src "
sudo apt-get update
sudo apt-get install sun-java6-jdk
就安裝好了 (ubuntu10.04 LTS版會自帶那兩個源)
並且不需要配置環境變數
這一步可以參考
安裝各種軟體包:
終端中輸入
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos texinfo libsdl-dev libwxgtk2.6-dev
最後三個是我補充的 其他都是官方文檔提供的
這一步可以參考
下載源代碼:
打開終端並輸入
mkdir ~/bin
PATH=~/bin:$PATH
這兩句是在你的個人文件夾下創建了一個名字叫bin的文件夾 並且把其加入到了環境變數中
再輸入
curl ; ~/bin/repo
chmod a+x ~/bin/repo
這兩句首先在bin目錄下面下載了一個repo文件 repo簡單來說就說用來版本控制的 我們就是用的它來同步代碼
然後建立一個用來存放源代碼的文件夾 我的這個文件夾的名字是android2.3
輸入
mkdir android2.3
cd android2.3
進入android2.3目錄
輸入
repo init -u git://androi/platform/manifest.git -b gingerbread
在此說明一下:
安卓總稱:「機器人」
1.5系統:「紙杯蛋糕」
Android 1.6 Donut甜甜圈
Android 2.0 Eclair松餅
Android 2.1 Eclair松餅
Android 2.2 Froyo凍酸奶
Android 2.3 Gingerbread姜餅(以上系統都是用於手機的)官方消息說2.4准備出來了!至於3.0目前只用於平板電腦
Android 4.0 Ice Cream Sandwich(簡稱ICS,冰淇淋三明治),
表示你需要的代碼是姜餅的 所以最後是gingerbread 如果是2.2代碼 就把gingerbread改成froyo
然後你需要輸入你的名字跟郵箱地址
如果提示找不到repo命令的話 需要重新設置環境變數 就是之前的PATH=~/bin:$PATH
輸入
repo sync
開始同步代碼 這個過程會根據你的網速來決定快慢
這一步需要下載的數據有3g那麼大
可以續傳 一次沒下完也沒關系
如果之前就已經下過一次的話 只需要把源代碼目錄(我的是android2.3)下有一個叫.repo的隱藏文件夾里的projects文件夾備份出來就可以了
以後還需要同步的時候再把projects文件夾拷貝回去
ctrl+h查看隱藏文件
這一步可以參考
編譯整個源代碼:
cd android2.3
進入你的代碼目錄
輸入
. build/envsetup.sh
注意.和build中間有個空格
輸入
lunch full-eng
make -j2
輸入make就是開始編譯代碼了 加一個-j2參數就是開兩個線程去編譯 速度會快些 我花了兩個小時的時間
編譯完畢以後馬上輸入
emulator
就可以運行模擬器了 系統能跑起來就說明編譯成功了
如果提示找不到emulator命令的話
需要添加環境變數
在android2.3目錄下的out/target/proct/generic文件夾下會看到system.img
能看到的話應該算是成功了
這一步可以參考
編譯SDK:
這一步在官方網站上沒有說明
但是在源代碼文件夾裡面有文檔提到了
就是在android2.3/sdk/docs目錄下有一個叫howto_build_SDK.txt的文件介紹了如何編譯SDK
原文
Then once you have all the source, simply build the SDK using: $ cd ~/my-android-git $ . build/envsetup.sh $ lunch sdk-eng $ make sdk
看來不需要先編譯整個系統再編譯SDK 可以直接上來就編譯SDK
按提示輸入
make到時候也可以加上-j參數 比如 make -j2 sdk
但是不推薦 因為容易編譯失敗 而且編譯SDK只需要二十多分鍾到時間 不算很長
當出現
Package SDK: out/host/darwin-x86/sdk/android-sdk_eng.<build-id>_mac-x86.zip
的時候 就表示編譯成功了 其中<build-id>默認是系統的用戶名
howto_build_SDK.txt中還提到了編譯ADT插件
我發現自己編譯到ADT插件竟然認不到platform 自己編譯出來到SDK也一樣
原因不明
只要使用官方的SDK和ADT就沒有問題了
具體就是把自己編譯出來platform拷貝到官方SDK里到platforms文件夾下 搞過Android開發都懂的
最後:
非常簡單的一步
就是直接修改源代碼然後編譯SDK就可以得到自己的SDK了
我就示範一個簡單的例子 拋磚引玉
首先我找到TextView的代碼
在frameworks/base/core/java/android/widget 如圖
我在updateTextColors方法的開頭添加了一句System.out.println
列印了一句話"Source Code Changed"
updateTextColors方法會在TextView的setTextColor方法中被調用
好 保存
編譯
然後使用這個platform
新建一個項目
調用一下TextView的setTextColor方法看看有什麼效果一個很簡單的例子看看
Source Code Changed被打出來了
SDK修改成功
⑸ 如何將源代碼編譯後的文件編譯到android中
1.將應用程序源碼復制進Android源碼目錄中(提前編譯好源碼)
2.使用build/envsteup.sh 配置shell -
mm TARGET_PRODUCT=proct_name
或直接./build_android.sh 也能完成編譯。
3.在源碼目錄:out/target/proct/proctname/obj/APPS/test_cert_intermediates 下有三個文件:package.apk package.apk.unsigned package.apk.unaligned
將package.apk.unsigned復制出來,單獨進行sign.
4.在Windows下進行sign: jarsigner -verbose -keystore youkey.keystore d:\package.apk.unsigned youkey
5.zipalign -v 4 d:\package.apk.unsigned d:\package.signed.apk
⑹ 如何編譯和調試android源碼中platform/system/core下的代碼
首先在Android源代碼目錄下的build目錄下,有個腳本文件envsetup.sh,執行這個腳本文件後,就可以獲得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$ . ./build/envsetup.sh
注意,這是一個source命令,執行之後,就會有一些額外的命令可以使用:
- croot: Changes directory to the top of the tree.
- 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.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
這些命令的具體用法,可以在命令的後面加-help來查看,這里我們只關注mmm命令,也就是可以用它來編譯指定目錄的所有模塊,通常這個目錄只包含一個模塊。
⑺ Androidapp證書反編譯代碼
反編譯代碼dex2jar。
在學習android程序的開發過程中,有時候需要借鑒別人的代碼,提升自己的開發水平。
前面說了反編譯,我們當然不希望我們的應用被別人反編譯,所以就得在打包的時候進行代碼混淆,這樣的包也可反編譯出代碼,但是代碼的可讀性很低,從而達到保護代碼的目的。