『壹』 如何給安卓應用編譯
把常用的應用程序編譯到img文件中,就成了系統的一部分,用戶不必自己安裝,當然也卸載不了;
同時也可以刪減系統自帶的應用程序,精簡系統;
1.\build\target\proct 目錄下generic.mk文件:
java代碼 收藏代碼
PRODUCT_PACKAGES := \
AccountAndSyncSettings \
DeskClock \
AlarmProvider \
Bluetooth \
Calculator \
Calendar \
Camera \
testMid \
CertInstaller \
DrmProvider \
Email \
Gallery3D \
LatinIME \
Launcher2 \
Mms \
Music \
我們添加一個testMid \ 應用名稱。
2.把testMid包放入
\packages\apps 目錄下,修改android.mk文件。
Java代碼 收藏代碼
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := testMid
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
註:LOCAL_PACKAGE_NAME := testMid (包名必須和generic.mk中添加的相同)
編譯源碼,可以看到在
\out\target\proct\smdkv210\system\app
目錄下生存了testMid.apk了。這時system.img也包含了此應用。
-------------------------------------------------------------------
特殊情況:有時,應用需要包含jar包,這時的app導入源碼時會出現問題:
MODULE.TARGET.JAVA_LIBRARIES.libarity already defined by ... stop
由於 LOCAL_STATIC_JAVA_LIBRARIES := libarity 會引發錯誤信息。
目前解決方法是:
\build\core 目錄下修改base_rules.mk
注釋掉錯誤信息:
ifdef $(mole_id)
#$(error $(LOCAL_PATH): $(mole_id) already defined by $($(mole_id)))
endif
$(mole_id) := $(LOCAL_PATH)
--重新編譯,這時可以通過了。
(2)、刪除原廠(Telchips)帶源碼的應用程序,如DTV_DVBT
在/device/telechips/m801/device.mk
注釋掉相應語句:
# PRODUCT_PACKAGES += \
# SampleDVBTPlayer \
同時,在/out/target/proct/m801/system/app 找到相應的.APK包,並刪除
『貳』 如何單獨編譯安卓系統源碼指定模塊
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源碼根目錄執行. build/envsetup.sh 腳本設置環境
m:編譯所有的模塊
mm:編譯當前目錄下的模塊,當前目錄下要有Android.mk文件
mmm:編譯指定路徑下的模塊,指定路徑下要有Android.mk文件
下面舉個例子說明,假設我要編譯android下的\hardware\libhardware_legacy\power模塊,當前目錄為源碼根目錄,方法如下:
1、. build/envsetup.sh
2、mmm hardware/libhardware_legacy/power/
編譯完後 運行 make snod
會重新將你改過的模塊打入到system.img中
『叄』 請問怎麼編譯安卓軟體
呵呵,你學過java吧,基本功就有了,安卓軟體是用java來寫的~不過我覺得安卓軟體是不用編譯的,因為裡面的主程序是格式化的xml文件,在軟體成形的過程中只是把一些文件打包起來就行了,你可以試下把安卓軟體的後綴名改成zip,就可以看見源程序和文件了~然後呢,你要想做安卓軟體的話,先搭建一個安卓的開發環境,用到的東西有Myeclipse這個軟體(你應該知道的),然後到網上下載安卓開發的SDK即開發字典~有一本叫安卓開發案例的書,可以看下,另外網上有很多的視頻教程~PS:我自己之前只寫過一個安卓的HELLO,WORLD!,由於大一事情比較多就沒有繼續研究了,如果你有問題可以CALL我哦,我們一起學~
『肆』 自己編譯安卓源碼怎麼實現root
建議按如下步驟操作:
1、使用USB數據線將手機與電腦連接。
2、 在電腦上,打開360安全衛士遲塵團,找到360手機助手,點擊「立即連接」。
3、下載並安裝手機版360手機助手。
4、選擇『我的手機』,點擊『管理你的手機預裝軟體』,就可以准確的查看到自己的手機有多少個自帶軟體。可以點擊右上角的「一鍵root」,也可以卸載如何一個軟體,系統會自動提醒你「root」的,點擊確定。
5、獲取ROOT許可權的時間有點長,大概需要5-10分鍾,具體和手機的內存及軟體有關。
6、當屏幕顯示「恭喜您,已經成功獲取root許可權!」字樣,就說明完工了,再點擊「完成」就可以了。
7、現在手機已經成功獲取root許可權,可以點擊『我的手兄遲機』,再點擊「管理預裝軟體「進行卸載了。值得注碼橘意的是,並不是所有的軟體都可以刪,有些如日歷、計算機、天氣等必備軟體刪除了,手機可能就要刷機了,ROOT是回不去的,要慎重選擇要刪除的軟體。
『伍』 如何單獨編譯安卓系統源碼指定模塊
1.make模塊名稱需要查看Android.mk文件的LOCAL_PACKAGE_NAME變數。2.mmm命令用於在源碼根目錄編譯指定模塊,參數為模塊的相對路徑。只能在第一次編譯後使用。比如要編液薯檔譯Phone部分源碼,需要手畝在終端中執行以下命鬧亂令:$mmmpackages/apps/phone3.mm命令用於在模塊根目錄編譯這個模塊。只能在第一次編譯後使用。例如要編譯Phone部分源碼,需要在終端中執行以下命令:$cdpackages/apps/phone$mm註:mmm和mm命令必須在執行「.build/envsetup.sh」之後才能使用,並且只編譯發生變化的文件。如果要編譯模塊的所有文件,需要-B選項,例如mm-B。
『陸』 windows下如何編譯android源碼
如果沒記錯,windows下是沒法編譯android框架源代碼的
因為android是基於linux平台的,因此底層的很多東西都是基於linux系統的
如果只是單純的android應用程序,則可以在windows下開發編譯
只需要用Eclipse的adt插件加上windows下開發的Android SDK就行了。
『柒』 自己可以編譯安卓源碼嗎
用最新的Ubuntu 16.04,請首先確保自己已經安裝了Git.沒安裝的同學可以通過以下命令進行安裝:
sudo apt-get install git git config –global user.email 「[email protected]」 git config –global user.name 「test」
其中[email protected]為你自己的郵箱.
簡要說明
android源碼編譯的四個流程:1.源碼下載;2.構建編譯環境;3.編譯源碼;4運行.下文也將按照該流程講述.
源碼下載
由於某牆的原因,這里我們採用國內的鏡像源進行下載.
目前,可用的鏡像源一般是科大和清華的,具體使用差不多,這里我選擇清華大學鏡像進行說明.(參考:科大源,清華源)
repo工具下載及安裝
通過執行以下命令實現repo工具的下載和安裝
mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo
補充說明
這里,我來簡單的介紹下repo工具,我們知道AOSP項目由不同的子項目組成,為了方便進行管理,Google採用Git對AOSP項目進行多倉庫管理.在聊repo工具之前,我先帶你來聊聊多倉庫項目:
我們有個非常龐大的項目Pre,該項目由很多個子項目R1,R2,...Rn等組成,為了方便管理和協同開發,我們為每個子項目創立自己的倉庫,整個項目的結構如下:
這里寫圖片描述
執行完該命令後,再使用make命令繼續編譯.某些情況下,當你執行jack-admin kill-server時可能提示你命令不存在,此時去你去out/host/linux-x86/bin/目錄下會發現不存在jack-admin文件.如果我是你,我就會重新repo sync下,然後從頭來過.
錯誤三:使用emulator時,虛擬機停在黑屏界面,點擊無任何響應.此時,可能是kerner內核問題,解決方法如下:
執行如下命令:
通過使用kernel-qemu-armv7內核 解決模擬器等待黑屏問題.而-partition-size 1024 則是解決警告: system partion siez adjusted to match image file (163 MB >66 MB)
如果你一開始編譯的版本是aosp_arm-eng,使用上述命令仍然不能解決等待黑屏問題時,不妨編譯aosp_arm64-eng試試.
結束吧
到現在為止,你已經了解了整個android編譯的流程.除此之外,我也簡單的說明android源碼的多倉庫管理機制.下面,不妨自己動手嘗試一下.
『捌』 怎麼進行android源碼編譯
eclipse下編譯android代碼的流程虧攜如下:
1.點擊襲空慧拍答android工程,點擊run
2.彈出窗口,選擇運行設備,如下圖,點擊run就可以編譯,運行
『玖』 如何編寫安卓軟體
問題一:如何用eclipse編寫安卓程序 方法/步驟
1
1)首先,下載android SDK.介紹一種非常簡單的方法,一並下載eclipse.在網路中輸入android SDK,進入搜索界面。選中第一條。
2)如果你已經有eclipse,你可以直接在eclipse中進行android SDK插件的安裝。方法就是點擊上面菜單里的help,選擇install new software進行添加SDK。具體方法見經驗如何在eclipse中添加android SDk。
2
進入下載界面後,選擇適合自己電腦的SDK進行下載。這里下載的是android開發工具,非常的簡單實用,不需要我么重新下載eclipse,在這個下載包中會自帶一個eclipse FOR android的develop工具,我們直接在裡面就可以進行android的開發。
3
下載完成後解壓,解壓後我們進入文件名為eclipse的文件夾中。點擊eclipse應用程序,運行。運行如圖,和我們常用的eclipse是不一樣的因為這個是android的開發工具,只適用於開發android。裡面有好的插件已經提供給我們,不需要再進行安裝。
4
進入eclipse界面後,開始新建android項目。輸入新建項目名,如果沒有特殊要求,點擊next一直至最後完成。開始的配置只是一個大體的框架的構建,這些我們可以以後進行修改,最總要的還是代碼的編寫。
5
所有配置都完成後就可以開始進行android的開發了。如圖:
進行android開發的時候建議不要用拖拽控制項的方式,建議直接編寫代碼。
END
java環境變數配置
1
這里順便介紹一下java環境變數的配置。
1)首先打開環境變數的界面,添加一個JAVA_HOME的值。右擊計算機屬性,在左側有高級設置,進入後就會看見環境變數選項了。
2)在系統變數中建立java_home,將你的java SDK所在的路徑放在裡面。
2
建立classpath。同樣在系統變數中新建一個classpath,在下面輸入.;即可,不用輸入其他的值。
3
運行cmd,測試。按win+R打開命令面板,輸入cmd,進入後輸入java -version然後回車,接著輸入javac,回車,看結果是否與下圖相同。
這里需要注意的是java -version的java後面是有空格的。
問題二:如何開發安卓第一個程序Hello World 1
打開eclipse集成sdk開發環境,點擊菜單file――》new――》Android application新建安卓項目
2
輸入工程名,項目名,還有包名,點擊下一步。
3
信心勾選不要更改,點擊下一步。
4
這個步驟是選擇應用的啟動圖標,如果想改就改,不想改就點擊下一步
5
選中blackActivity,點擊下一步
6
輸入activity的名稱,main的名稱,點擊下一步。
7
項目創建好了,右鍵要啟動的項目,run as 選中Android application啟動項目
8
然後模擬器啟動好之後,點擊查看,helloworld就創建好了
問題三:如何自學 Android 編程 因為項目需要,8月中旬開始決定做安卓的程序,所以馬上就開始學習安卓方面的開發知識,把最近的學習實踐經歷和大家分享分享。不要一開始就下載一大堆資料,視頻,然後就不知道做什麼了,要給自己定個目標,我要做什麼?我怎麼達到目標?
我不懂java,但是懂C#和C++,所以我沒主張去單獨學習java語言,如果你是個最最初的新手,沒啥語言基礎,那你必須先看看java語言,不要很詳細看,因為學習Android中,你也是在學習java。
1. 明確目標
沒有目標的學習,會感覺到後面沒什麼成果,在1年前,我也打算學習android開發的,但是目的就是學習,到網上去下載很多學習的視頻,然後把開發環境搭建起來,能把Helloworld運行起來,能打些log,Activity之間也能互相切換了,但是後面也就不了了之了,因為不知道學了要干什麼。依葫蘆畫瓢的做了幾個例子,因為裡面的問題都是已經解決的,所以也沒能深入的系統學習。
這次因為產品的需要,要做Android版本,要做的東西一開始就已經設計好了,見搖搖2選1安卓版本,剛開始也不知道裡面有些什麼技術難度,但是要做的目標已經明確了,而且也沒有現成的,碰到問題就查資料,慢慢地解決,這樣有的放矢,學習的效果非常好。既有現成的技術可以使用,又有些技術,需要查比較多的資料,這樣記憶就比較深刻,所掌握的知識也比較系統。
接下來的一系列文章,我會把在開發搖搖2選1中遇到的問題,給大家詳細講講,程序雖然小,但是五臟俱全,做Demo和做產品的要求完全不是一個級別,如果Android大牛感覺知識講的比較淺,那可以繞道,畢竟我是從一個完全的新手開始的。
2. 了解安卓開發中比較困難的地方
學習一個新平台,就要知道此平台開發要面臨的困難有哪些,不要做到最後,這些問題沒有考慮,那就比較糟糕了。在網上搜索了下,安卓開發困難總結如何:
1)安卓系統版本比較多,各版本之間的兼容性是個問題,此為系統碎片。
2)安卓設備千變萬化,設備難以統一,每個產品都成為獨立,分散的Android碎片。
3)解析度五花八門。一個產品,可能需要多個界面排版,人工消耗比較大。
看到這張圖,有沒有頭疼的感覺?
總結成一句話:Android的碎片化真是要來開發者的命。
3. 搭建開發環境
巧婦難為無米之炊,開發環境肯定是第一件要做的事情,這類的文章已經很多了,我也不多說了,多說也就比較無聊了。感謝吳秦,也是博客園里的一員,他寫的很詳細了,見這里。
4. 查看網友總結的一些經驗。
不是什麼都查看,開發中遇到什麼問題,就去查看什麼問題,這樣你查到的知識,馬上就能深入的實踐,這樣知識就鞏固了。
1)首先當然要看Android的開發文檔,裡面其實大部分的知識都有了,還有就是SDK自帶的Samples。
2)博客園里搜索「Android開發」,會出來一大把,很多網友都是很系統的講解了。
3)eoe
android社區,裡面有很多網友上傳了現成的demo代碼,裡面很多都是模仿現在流行的產品的界面開發,很是不錯。
5. 掌握調試方法
個人一直認為,調試技巧是開發中最重要的技能,如果調試技能比較差,不知道如何查找問題,那不會是個好的程序員,其技能也不會高到哪裡去。
Android做下來,感覺調試這塊做的很不錯了,這要感謝Eclipse
IDE做的比較不錯,但是Android的界面排版部分,真的不敢恭維,Eclips......>>
問題四:如何用c++寫安卓手機軟體? 這個你不容易,安卓是java寫的,你學過C和C++想寫安卓軟體既需要學java語言,又需要學安卓手機的介面,相當於新學,不天天學兩三年寫不出什麼東西的。建議寫個win7能用的加殼程序,現在的殼基本上是以前系統上的,win7實用的不多。
問題五:怎樣編寫安卓手機程序???用什麼軟體編寫 。 說具體點 。 樓主看一下這個教程,或許能幫到您。 pan./...703809
問題六:怎樣將自己寫的程序放到android手機里運行 你是用ECLIPSE開發的程序吧?
如果是的話可以先USB接上手機和電腦,手機打開調試模式然後直接在項目上右鍵 -伐> 運行方式 -- > android application 可以直接運行
APK文件的話在項目的BIN目錄下面
問題七:安卓軟體怎麼寫 寫安卓程序的話有好多平台,常用的就是eclipse和myeclipse,我場做安卓開發都是用這兩個平台。安裝起來也方便,當然,如果您的水平高的話可以直接記事本寫代碼再編譯。。。
問題八:安卓開發軟體歡迎界面怎麼做 顯示一個載入的界面,增加一個延時任務。比如用handler,幾秒後再執行跳轉到主界面。
問題九:如何學習安卓軟體開發 200分 你把android sdk中的開發文檔下載到本地,然後eclipse中就有javadoc顯示了,你就能在代碼里看到每個庫函數的用法了。書的話我建議買 精通Android2 ,或者 Android2高級編程 這兩本書,講解的細致,但是一定要結合sdk來看。國內的不要買。。。。(切身體會,千萬別買)看完之後就可以自己動手做做項目了。對於java基礎,我現在的感覺是 如果要深入學習android平台,java基礎一定要好(里邊包括各種java類庫的用法,本地代碼jni什麼的)。但如果平時隨便做做應用的話,會面向對象編程就完全可以了。
『拾』 如何使用自己的makefile編譯android ndk項目
android ndk提供了一套自己的makefile管理方式,要將源碼項目移植到android平台,需要按照android的makefile規則編寫makefile,還要按android的規則部署源碼目錄,對一個有自己的makefile管理方法的大型項目來說,只是做一下makefile遷移工作就是一件很麻煩的事。
其實android ndk上的編譯說到底也就是交叉編譯,只要配置好交叉編譯工具鏈,使用原有的makefile也是可以編譯出在android運行的c、c++程序的。
以android-ndk-r4-crystax的ndk版本為例:
編譯器路徑 android-ndk-r4-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin
名稱前綴 arm-eabi-
頭文件目錄 android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include
庫文件目錄 android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/lib
你可以試一下上面的配置,如果編譯鏈接都沒有問題,可以adb push到android設備上運行看看,什麼結果?
有點崩潰,根本運行不起來,你也許想試試看android自帶的ndk例子,確實是能夠運行的,問題在哪兒呢?
只是正確配置了編譯器、頭文件、庫文件還不夠,還需要配置編譯、鏈接的參數,android例子中編譯鏈接的參數是什麼呢?你也許想深究一下android的makefile,可是不久你會發現那是更崩潰的事情,裡面用了很多的make腳本函數。其實android的makefile是可以把執行的詳細命令輸出來的,只要make的時候加上V=1即可。可以看到確實帶了很多參數
編譯參數:
-fpic
-mthumb-interwork
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-Wno-psabi
-march=armv5te
-mtune=xscale
-msoft-float
-mthumb
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-Wa,--noexecstack
-D__ARM_ARCH_5__
-D__ARM_ARCH_5T__
-D__ARM_ARCH_5E__
-D__ARM_ARCH_5TE__
-DANDROID
鏈接參數:
-nostdlib
-Bdynamic
-Wl,-dynamic-linker,/system/bin/linker
-Wl,--gc-sections
-Wl,-z,noreloc
-Wl,--no-undefined
-Wl,-z,noexecstack
-L$(PLATFORM_LIBRARY_DIRECTORYS)
crtbegin_static.o
crtend_android.o
這其中鏈接參數中的-Wl,-dynamic-linker,/system/bin/linker、crtbegin_static.o、crtend_android.o是最關鍵的,android使用了自己的進程載入器,並且自定義了c運行時的啟動結束。難怪先前編譯的進程啟動不了。