安卓系統程序編譯
❶ 如何把應用程序編譯進android系統
把常用的應用程序編譯到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包,並刪除。
❷ 如何單獨編譯安卓系統源碼指定模塊
例如:你不想編譯music進image中,你就在該文件里PRODUCT_PACKAGES:=這一項下的Music刪除就可以了同理,你想把自己的app編譯進image中,你先寫好編譯用的Android.mk文件,然後去到上面所說的文件里在PRODUCT_PACKAGES:=這一項添加對應的app包名一般來說,只要改這么一個文件就足夠了。但是如果以上編譯後發現還是編譯到了image裡面,那麼它很有可能是一個已經編譯好的apk文件預裝到image裡面去了,也是以我的sdk為例,進入device/產品目錄/common/apk下看看有沒有.apk文件,我的sdk裡面這個目錄下的.apk文件是全部預裝到system/app裡面的還有一個目錄:/device/產品目錄/common/preinstallapk這個目錄里的apk也是預裝到image裡面去,只是並不是預裝到system/app而已也就是說,你還要看看你不想編譯進image里的app是不是預裝進去,如果是預裝進去的話,只要在對應目錄下把該apk文件刪除了就好了希望這些能幫到你!
❸ 安卓系統是用什麼語言編的
安卓系統的編程語言,C/C++(底層) Java等(應用層)。
1、Android是一種基於Linux的自由及開放源代碼的操作系統。主要使用於移動設備,如智能手機和平板電腦,由Google(谷歌)公司和開放手機聯盟領導及開發。
2、尚未有統一中文名稱,中國大陸地區較多人使用「安卓」或「安致」。Android操作系統最初由Andy Rubin開發,主要支持手機。
(3)安卓系統程序編譯擴展閱讀:
1、Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接執行安裝,和Windows Mobile中的PE文件有區別。
2、這樣做對於程序的保密性和可靠性不是很高,通過dexmp命令可以反編譯,但這樣做符合發展規律,微軟的 Windows Gadgets或者說WPF也採用了這種構架方式。
3、在Android平台中dalvik vm的執行文件被打包為apk格式,最終運行時載入器會解壓然後獲取編譯後androidmanifest.xml文件中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。
4、最終我們平時安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。
❹ 如何編譯一個精簡的Android系統
本次試驗使用的android源碼是4.2,編譯的架構是mini-mips。
一、所做的工作
1、修改build/target/proct/mini.mk,去掉一些不必要的模塊(例如Phone、DownloadManager等)
2、修改SystemServer.java,屏蔽一些service,讓系統能夠啟動起來(例如,Location Manager、Telephony Registry)
3、修改dalvik/vm/native/dalvik_system_Zygote.cpp,注釋掉因為檢查不到外部存儲而導致dalvik abort的地方 (這是googel的一個bug,在2013年1月份已解決,如果用這以後的代碼不用修改此處)
4、修改WindowManagerService.java,把發送BOOT_TIMEOUT消息的時間改為0(之前為30秒)
二、系統優化後的效果(驗證工作均在mips模擬器上進行)
1、節省運行內存,下面是全編譯與mini編譯的內存使用狀態的對比
1)full build
MemTotal: 499360 kB
MemFree: 242064 kB
2)mini build
MemTotal: 499360 kB
MemFree: 395192 kB
2、縮短開機啟動時間
在虛擬機上的啟動時間
1)full build-29秒
2)mini build-14秒
3、只啟動home程序,其餘的應用程序均被移除
三、保留android的開發環境
1、adb,ddms,apkinstall等,都能正常工作
2、在eclipse中編寫的android應用程序能夠運行在該mini-android之上
四、開機自動啟動指定應用程序
本次測試使用Gallery.apk應用程序,修改其源碼後可以實現隨系統的啟動而自動啟動的功能。
❺ 如何把應用程序app編譯進android系統
把常用的應用程序編譯到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包,並刪除
❻ 安卓系統可以直接編譯和運行JAVA文件嗎需要怎麼安裝環境
安卓軟體的開發,許Java的環境呢
需要你會編程和Java,然後可以在應用寶上面下載一個開發的教程
應用寶裡面的資源很多,除了有大量的APP應用可以免費下載
還有很多軟體開發的教程和攻略呢,都是很不錯的,免費下載呢
在手機上打開應用寶軟體搜索你所需要的教程,找到下載就可以了。
也可以通過手機連接電腦端的應用寶軟體來下載的,打開PC端的應用寶軟體——手機應用。
可以通過搜索你所需要的開發教程進行下載呢,都是很方便的。還望採納
❼ 安卓系統的軟體怎麼製作和怎麼編輯
製作?你首先得懂c和c+等編程語言,電腦上搭建java環境,反正很麻煩就是了,隨便就想製作是不可能的。手機上也可以製作和編輯,同樣的需要懂編程語言,軟體有很多:aide可以編寫程序,一般的修改編輯別人的軟體直接解包想怎麼改怎麼改前。提你是知道怎麼改
❽ 如何在安卓系統下構建c++編譯環境
這個有點難,現在安卓能用的(我知道的)只有一個軟體C4droid可以在android系統中編譯c/c++:
編譯界面:
❾ 有手機的源代碼,如何編譯安卓4.4的系統
代碼編譯…
恐怕這個不是隨隨便便在這里幾句話就能說明白的…
首先要下載安卓4.4的內核,
然後要把廠商的手機源代碼編譯進去,
還要自己寫腳本,
很多都是很技術的活。
lz確定能hold住么?