android編譯版本
❶ 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的特有實現。
源碼目錄為:
❷ 查看apk是android哪個版本編譯
如果有一個apk,需要知道他最低安裝支持的Android版本是什麼,應該如何查看呢?
直接將apk後綴名改為rar或者zip,拉出AndroidManifest.xml?不行,AndroidManifest.xml已經被編譯過了,裡面很多內容改為二進制了。
其實用Android自帶工具即可,進入Android SDK目錄。
cd sdk\build-tools\android-4.4.2 這邊以4.4.2為例,可以參照自己的platform版本
aapt.exe list -a someapk.apk > apkversion.txt
然後用記事本之類的應用打開apkversion.txt搜索
minSdkVersion,以我這邊為例,可以看到這便是0xf,即15
E: uses-sdk (line=8)
A: android:minSdkVersion(0x0101020c)=(type 0x10)0xf
15對應的Android版本可以從這邊查閱:
Android版本和API Level對應關系
❸ android 中編譯版本,最小版本,目標版本都有什麼區別
SDK 最低版本
以最低版本設置值為標准,操作系統會拒絕將應用安裝在系統版本低於標準的設備上。
SDK 目標版本
目標版本的設定值告知Android:應用是為哪個API級別設計的。大多數情況下,目標版本即最新發布的Android版本。
SDK 編譯版本
SDK最低版本和目標版本會通知給操作系統,而SDK編譯版本只是你和編譯器之間的私有信息。
Android的特色功能是通過SDK中的類和方法展現的。在編譯代碼時, SDK編譯版本(即編譯目標) 指定具體要使用的系統版本。 Android Studio在尋找類包導入語句中的類和方法時,編譯目標確定具體的基準系統版本。
❹ 編譯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協議發布
❺ Haxe MacBookPro M1晶元 OpenFL編譯Android版本
如何使用OpenFL在MacBookPro M1晶元編譯Android版本,M1晶元Mac系統自帶的JDK基本都是17版本,編譯時會有不兼容的現象。該流程適用於OpenFL9.1.0。
結果參考(JVM是15.0.6版本、Gradle6.3環境編譯穩定):
當編譯出現這個錯誤時,一般是指JDK的版本沒有對應上,太高、或者太低等。如果按照上面的步驟正常處理,這個問題會直接消失。
無法找到該類型時,一般升級Gradle的編譯版本為6.3即可,請參考上方提及到的project.xml配置。
如果使用到queries的標簽時,會有編譯異常的情況,可以升級到對應補丁的gradle插件,版本對應:3.3.3、3.4.3、3.5.4、3.6.4、4.0.1
❻ 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
❼ 如何編譯ProA10 Android4.0-V1.5版本
使用gcc4.4.6版本進行編譯.
ubuntu 11.10的gcc版本是4.6.1,版本太高,編譯Android時出錯,要把gcc版本改為4.4.6, 4.5的版本據說可以
通 過gcc -v命令可以發現gcc庫在/usr/lib/gcc/i686-linux-gnu目錄下,該目錄下有當前系統支持的各種版本gcc庫 。在安裝gcc 4.4前該目錄下是沒有4.4目錄的,安裝gcc 4.4後該目錄下就會多出4.4這個目錄,且該4.4目錄下有各種相應庫文件。
ubuntu 32bit系統下安裝gcc 4.4的最好方法是僅用以下兩條命令,不需要其它命令,否則編譯時可能會出錯。
sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4
裝完後在/usr/bin目錄下
$ ls -l gcc*
lrwxrwxrwx 1 root root 7 2011-10-29 09:11 gcc -> gcc-4.6
-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 gcc-4.4
-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 gcc-4.6
發現gcc 鏈接到gcc-4.6, 需要將它改為鏈接到gcc-4.4 :
sudo mv gcc gcc.bak
sudo ln -s gcc-4.4 gcc
同理
ls -l g++*
lrwxrwxrwx 1 root root 7 2011-08-14 15:17 g++ -> g++-4.6
-rwxr-xr-x 1 root root 228640 2011-10-06 05:45 g++-4.4
-rwxr-xr-x 1 root root 306200 2011-09-17 05:39 g++-4.6
需要將g++鏈接改為g++-4.4:
/usr/bin$ sudo mv g++ g++.bak
/usr/bin$sudo ln -s g++-4.4 g++
再查看gcc和g++版本號:
gcc -v
g++ -v
均顯示gcc version 4.4.6 ,說明gcc 4.4安裝成功。
測試:
編譯android,從2011-10-29 23:58開始,到2011-10-30 01:42編譯完成,沒有錯誤。這驗證了gcc 4.4安裝正確,也驗證了android文件與高版本的gcc不兼容。
❽ Android 10 編譯完全root版本
安裝RootExplorer查看是否可以掛載系統區即可
無法讀寫系統分區:
❾ Android Studio中編譯aar release版本簡便方法
在Android Studio中編譯aar時,通常Build之後是Debug版本。
有網友提出添加了Release選項也無濟於事:
其實,在控制台中輸入gradlew assembleRelease指令即可生成,如下圖所示,Mac上,AS的Terminal中生成aar Release包。
❿ 反編譯修改Android apk的版本號
准備工作完畢後,開始反編譯apk。
1.將你要反編譯的apk放到apktoo.bat的同一文件夾下,然後cd到這個目錄,執行以下命令:
其中debug.apk為你要反編譯的apk的名字,替換一下即可
其中dst.apk為打包後生成的apk。
其中 debug.keystore 為你自己的簽名文件, debug 為簽名文件的 keyAlias 。
然後輸入密碼就行, dst_signed.apk 為簽名後生成的apk文件
執行完後,出現如下命令即代表成功