當前位置:首頁 » 編程軟體 » android編譯運行版本

android編譯運行版本

發布時間: 2022-07-08 22:24:33

⑴ Android編譯版本eng,user和userdebug的區別

Android編譯版本eng、user和userdebug的區別:
一、Android官網的解釋
eng This is the default flavor. A plain make is the same as make eng.
* Installs moles tagged with: eng, debug, user, and/or development.
* Installs non-APK moles that have no tags specified.
* Installs APKs according to the proct definition files, in addition to tagged APKs.
* ro.secure=0
* ro.debuggable=1
* ro.kernel.android.checkjni=1
* adb is enabled by default.
* Setupwizard is optional
user make user
This is the flavor intended to be the final release bits.
* Installs moles tagged with user.
* Installs non-APK moles that have no tags specified.
* Installs APKs according to the proct definition files; tags are ignored for APK moles.
* ro.secure=1
* ro.debuggable=0
* adb is disabled by default.
* Enable dex pre-optimization for all TARGET projects in default to speed up device first boot-up
userdebug make userdebug
The same as user, except:
* Also installs moles tagged with debug.
* ro.debuggable=1
* adb is enabled by default.
二、對編譯版本MTK的補充說明
MTK 補充說明差異:(
(1) Debug/LOG 方面,原則上user 版本只能抓到有限的資訊,eng 可以抓到更多的資訊,Debug 能力更強,推崇使用eng 版本開發測試
* 因user/eng 版本設置ro.secure不同,導致user 版本adb 只擁有shell 許可權,而eng 版本具有root 許可權
* MTK System LOG 在ICS 以後,在user 版本默認關閉全部LOG, 在eng 版本中默認打開,以便抓到完整的資訊
* 在eng 版本上,LOG 量 >= user 版本的log 量,一些地方會直接check eng/user 版本來確認是否列印LOG
* user 版本默認關閉uart, eng 版本默認開啟uart
* 在eng 版本上,開啟ANR 的premp, 會抓取ftrace,可以得到更多ANR的資訊
* 在eng 版本上,可用rtt 抓取backtrace,可開啟kdb 進行kernel debug, 可用ftrace 抓取cpu 執行場景
* MTK aee 在ENG 版本抓取更多的異常資訊,比如native exception 會抓取core mp 信息
(2) 性能方面,原則上進行性能測試請使用user 版本測試
* user 版本為提高第一次開機速度,使用了DVM 的預優化,將dex 文件分解成可直接load 運行的odex 文件,ENG 版本不會開啟這項優化
* 更少的LOG 列印,uart 的關閉,原則上user 版本的性能要優於eng 版本
(3) 如何確認user/eng 版本
* java 層,check android.os.Build 類中的TYPE 值
* native 層,property_get("ro.build.type", char* value, "eng"); 然後check value 值
* Debug 時, adb shell getprop ro.build.type 返回值如果是user 即user 版本,eng 即eng 版本
* Log 確認, mobile log/Aplog_xxxxx/versions 中查看ro.build.type 屬性
(4) 如何編譯user/eng 版本
* 默認編譯是eng 版本,如果需要編譯user 版本,請加入參數 -o=TARGET_BUILD_VARIANT=user 如:
./mk -o=TARGET_BUILD_VARIANT=user mt6577_phone new
default.prop和/system/build.prop
三、編譯版本與ADB、root的控制關系
1. root許可權:adb.c中與屬性ro.kernel.qemu(是否是模擬器)、ro.secure、ro.debuggable、service.adb.root幾個相關聯。
service.adb.root : services.c -> restart_root_service()中設置
build/core/main.mk的如下地方決定了了ro.secure和ro.debuggable的值
user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT))
enable_target_debugging := true
tags_to_install :=
ifneq (,$(user_variant))
# Target is secure in user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=1
...
else # !user_variant
# Turn on checkjni for non-user builds.
ADDITIONAL_BUILD_PROPERTIES += ro.kernel.android.checkjni=1
# Set device insecure for non-user builds.
ADDITIONAL_DEFAULT_PROPERTIES += ro.secure=0
# Allow mock locations by default for non user builds
ADDITIONAL_DEFAULT_PROPERTIES += ro.allow.mock.location=1
endif # !user_variant
ifeq (true,$(strip $(enable_target_debugging)))
# Target is more debuggable and adbd is on by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=1
# Include the debugging/testing OTA keys in this build.
INCLUDE_TEST_OTA_KEYS := true
else # !enable_target_debugging
# Target is less debuggable and adbd is off by default
ADDITIONAL_DEFAULT_PROPERTIES += ro.debuggable=0
endif # !enable_target_debugging
## eng ##
...
endif
2. 是否開啟adbd服務:UsbDeviceManager.java中與屬性persist.sys.usb.config、sys.usb.config、persist.service.adb.enable幾個相關聯
persist.sys.usb.config:/build/tools/post_process_props.py中根據ro.debuggable來設置persist.sys.usb.config的初始值
sys.usb.config:UsbDeviceManager.java -> setUsbConfig
文件init.clippers.usb.rc中監聽了sys.usb.config屬性變化時的動作
on property:sys.usb.config=adb

⑵ 那個版本的ecplise用來開發android編譯運行比較快

我用的是3.7.0的 這個版本,我覺得整體上的編譯速度還是可以的。其實最重要的是兼容性和穩定才是關鍵。

⑶ Android編譯和運行在手機上使用的系統源碼版本各是什麼版本

如果app是和android系統一起進行編譯,如果想讓app的源碼保持一套,卻能夠同時在android4.1和android4.2下進行編譯。如果app源碼與android系統的版本無關,那麼,不存在問題。
但,如果app的實現代碼與所依賴的framework的版本強相關,譬如,Location相關的API,在android4.1和android4.2上的差異比較大。應用如果是採用4.2的API來實現的,在配合android4.1系統編譯時就會報錯。此時,可以採用在Android.mk文件中,根據PLATFORM_SDK_VERSION的值,在編譯時決定要編入哪些Java文件,源碼中同時保留針對android4.1和android4.2的特有實現。
源碼目錄為:

⑷ 編譯android4.4用哪個版本的gcc

一般來說編譯安卓4.4用ggc的4.4.3版本即可,版本過高可能會引起錯誤。
gcc:它是一套GNU編譯器套裝以GPL許可證所發行的自由軟體,也是 GNU計劃的關鍵部分。GCC原本作為GNU操作系統的官方編譯器,現已被大多數類Unix操作系統(如Linux、BSD、Mac OS X等)採納為標準的編譯器,GCC在微軟的Windows下的移植版本叫MinGW。[1]GCC是自由軟體過程發展中的著名例子,由自由軟體基金會以GPL協議發布

⑸ android 中編譯版本,最小版本,目標版本都有什麼區別

  • SDK 最低版本

    以最低版本設置值為標准,操作系統會拒絕將應用安裝在系統版本低於標準的設備上。

  • SDK 目標版本

    目標版本的設定值告知Android:應用是為哪個API級別設計的。大多數情況下,目標版本即最新發布的Android版本。

  • SDK 編譯版本

    SDK最低版本和目標版本會通知給操作系統,而SDK編譯版本只是你和編譯器之間的私有信息。
    Android的特色功能是通過SDK中的類和方法展現的。在編譯代碼時, SDK編譯版本(即編譯目標) 指定具體要使用的系統版本。 Android Studio在尋找類包導入語句中的類和方法時,編譯目標確定具體的基準系統版本。

⑹ 開發一個android程序,可以在不同安卓系統版本的手機上運行嗎

可以的,在新建一個 android project 時,要求輸入 minSdkVersion 這一項,一般我們是指定和我們使用的 SDK 版本相一致的 API Level. 然後,在androidManifest.xml 文件中會有一個對應的屬性:android:minSdkVersion .那這個屬性就決定了本程序最低兼容的android系統版本。

由於andrid系統是向下兼容的,也就是說,高版本的SDK會兼容低版本的SDK

舉例說明:
1. 我們新建一個 Android Project (HelloAndroid), 指定為 Android 2.2 版本,對應的 minSdkVersion 填8,finish;
2. 此時我們運行 HelloAndroid ,會運行一個 2.2 版本的模擬器。
3. 假若我們現在去 AndroidManifest.xml 文件 中修改 android:minSdkVersion=7,再次運行,那麼會在我們已經打開的 2.2 模擬器上運行。因為 Android API 都是向後兼容的,所以系統在編譯時,這個 Project 是利用 2.1 版本來編譯的,但也可以在 2.2 模擬器上運行;若我們先把 2.2 模擬器關閉,再運行 HelloAndroid 這個Project 的話,那麼會新建一個 API Level=7 的 模擬器來運行這個程序(也就是 2.1模擬器)。
4. 假若我們修改 android:minSdkVersion=10, 那麼無論你是否打開了 2.2 版本的模擬器,都會報錯:
ERROR: Application requires API version 10. Device API version is 8 (Android 2.2).
Launch canceled!

⑺ 創建一個Android應用程序時,需要明確目標版本和編譯版本,不需要最小版本

摘要 compiledSdkVersion: 編譯SDK版本是將要編譯APP的平台版本. 默認情況下它應該設置為SDK中最新的Android可用版本. 我們依然可以編譯APP來支持更早的版本, 但是設置它為最新版本讓我們可以使用新功能並優化APP使其在最新版本上擁有更好的用戶體驗.

⑻ android sdk多個版本 編譯用哪個

永遠只用最新的SDK版本,這是Google官方強烈建議的。開發者的app能運行的Android版本不是由SDK決定的,是由每一個項目的minSDK決定的。SDK都是向下兼容的。SDK在不斷改進中,新的SDK會提供更強大開發工具,而且用4.0的SDK編譯的2.1的apk的執行效率會比用2.1的SDK編譯的更高。
至於每個app應該用什麼minSDK ,應該根據應用具體的API來,如果app沒有用到1.6以上SDK新提供的API,那麼用1.6會在提供相同體驗下反而會比2.1兼容更多機型.

附谷歌原版建議:
In order to provide the best user experience on the latest devices, we recommend that you use the latest platform version as your build target. You'll still be able to run your app on older versions, but you must build against the latest version in order to use new features when running on devices with the latest version of Android.To get started, download the latest Android version, plus the lowest version you plan to support (we recommend Android 2.2 for your lowest version).

⑼ 為什麼在android源碼下編譯的可執行程序在別的android版本下不能運行

你需要設置程序的向上兼容、向下兼容版本。。。在AndroidMainfest.xml里設置
比如你用api17(android4.2)編譯出來的程序在沒設置向下兼容版本的情況下,就不能兼容api8(android2.2)的版本。
在AndroidMainfest里加上這個:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

⑽ android studio新建工程時怎麼設置編譯版本

安裝Android Studio的准備工作 1.下載好JDK 去官網上找一個下載下來 2.安裝JDK.並配置環境變數.安裝過程可以一直下一步,無腦操作 3.下載Android Studio的安裝包 去官網上找一個,下載下來 (jdk的環境變數一定要配置) 准備工作完成之後,就可以開始我們的安裝了 1.安裝Android studio也是無腦操作,一直點下一步。直到安裝結束 2.安裝好之後,我們要新建我們的項目。重點從這里開始 點擊 New Project會出現.我們設置好名稱,也可以無腦操作,一直點擊next,直至結束,不過這個過程需要我們耐心的等待。(時間有點漫長)。 然後我們就會進入我們的開發界面。點擊圖片中紅圈的圖標(SDK manager)會出現下圖 這個步驟是安裝Android的sdk,推薦,Android1.6~Android4.4.2全部安裝。(這個耗費時間挺長的,請在網速良好且大量閑暇時光下安裝,安裝過程中可以看部電影) 安裝完之後,就開始配置我們的avd(Android Virtual Device),也就是Android的虛擬環境。點擊,圖片中紅圈的圖標 點擊New(Test是我配置好的) 隨便設置AVD name,建議如圖設置 設置完成之後,就可以點擊下圖的三角號編譯我們的程序了。

熱點內容
改裝配置後不想重啟怎麼辦 發布:2025-02-09 06:36:40 瀏覽:445
演算法復雜度定義 發布:2025-02-09 06:30:46 瀏覽:585
昵圖源碼介面 發布:2025-02-09 06:30:37 瀏覽:724
微信怎麼沒有支付密碼 發布:2025-02-09 06:29:52 瀏覽:33
mplayer編譯版 發布:2025-02-09 06:29:13 瀏覽:762
免費網盤源碼 發布:2025-02-09 06:29:07 瀏覽:5
毛發模擬演算法 發布:2025-02-09 06:24:27 瀏覽:273
芝麻雲伺服器分布圖 發布:2025-02-09 06:12:53 瀏覽:429
oracle同義詞存儲過程 發布:2025-02-09 06:00:59 瀏覽:156
quartz資料庫配置 發布:2025-02-09 05:58:07 瀏覽:114