編譯:
1. 初始化:
source build/envsetup.sh
2. 選擇target
lunch
然後選擇aosp_arm
3.
make -j4
等待大概2個小時,就可以順利編譯完成。
模擬器運行
直接運行emulator,會出現如下錯誤:
emulator: ERROR: You did not specify a virtual device name, and the system
directory could not be found.
原因是文件路徑沒有設置,解決辦法添加絕對路徑:
out/host/linux-x86/bin/emulator -kernel prebuilts/qemu-kernel/arm/kernel-qemu -sysdir out/target/proct/generic/ -system out/target/proct/generic/system.img -ramdisk out/target/proct/generic/ramdisk.img -data out/target/proct/generic/userdata.img -sdcard sdcard.img -scale 0.7 -memory 512 -partition-size 1024
然後運行模擬器
『貳』 安卓程序一般用什麼軟體進行編譯用什麼軟體可以編輯程序
java語言 編譯軟體eclipse(需要插件)
『叄』 安卓是不是實時操作系統linux呢
我記得不是。
Linux 的實時系統需要單獨有套 patch 。我記得叫做 RT-Linux 。
實時系統提供的響應速度一般消費電子用不到。
『肆』 如何編譯android 可執行的二進制文件
Android由於其代碼是放在dalvik虛擬機上的託管代碼,所以能夠很容易的將其反編譯為我們可以識別的代碼。 之前我寫過一篇文章反編譯Android的apk包到smali文件 然後再重新編譯簽名後打包實現篡改apk的功能。 最近又有一種新的方法來實現直接從Android apk包里的classes.dex文件,把dex碼反編譯到java的.class二進制碼,然後從.class二進制碼反編譯到java源碼想必就不用我來多說了吧。 首先我們需要的工具是dex2jar和jd-gui 其中第一個工具dex2jar是用來把classex.dex文件也就是dex二進制碼轉化為java的標准.class二進制碼,然後jd-gui是把標準的.class二進制碼再反編譯為java源碼。 首先從apk包裡面提取出classes.dex 放到dex2jar目錄下 然後在命令行下執行 dex2jar.bat classes.dex 這時執行成功後會生成一個classes.dex.dex2jar.jar文件 這個文件再用jd-gui打開,如下圖 幾乎跟我自己寫的這個程序的源碼一樣 提供這個反編譯方法主要用於大家學習與研究,有問題可以與我郵件討論。 希望大家不要用這個方法從事惡意的活動,畢竟,別人辛辛苦苦寫程序也不容易,用這個方法可以大致的學習到別人寫的程序的邏輯,架構,希望對大家有所幫助。 Android 逆向apk程序的心得 本文主要介紹如何逆向一個Android的APK應用程序,本文提供的方法僅供研究學習之用。 本文需要用到的工具有 jdk 這個用於搭建java運行環境 AXMLPrinter2.jar 這個用於逆向.xml文件 baksmali.jar 這個用於逆向classex.dex文件 由於Android的.apk文件實際上就是一個zip文件 可以直接用winrar打開
『伍』 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的特有實現。
源碼目錄為:
『陸』 原生安卓比ios還要流暢,為什麼到了國內之後國產手機一年就卡
盡管Android旗艦手機在核心硬體搭配方面已經不比iPhone差了,甚至在很多數據上面還要強於iPhone,尤其是在處理器核心數量、運行內存大小都要好過iPhone,不過Android手機還是沒能改變用了一段時間之後就會很卡的常態,這到底是什麼原因呢?原生Android當然會好很多,當然Android本身還是存在一些問題的,Android選擇Java作為核心開發語言,而Java本身是一個虛擬機語言,加上Java語言確實也比較臃腫,加上Java語言的一些機制導致了Android的卡頓。
Android的問題是多方面,有本身技術選型的問題,也有生態管理上的問題,這兩個問題非常棘手,不然這問題不早就解決了么,就看Google未來的長期戰略是怎麼規劃的吧,是開發生態逐步規范化還是直接替代Android,就看Google自己的選擇了。
『柒』 android怎麼把混淆的代碼完全編譯出來
工具:
apktool,作用:資源文件獲取,可以提取出圖片文件和布局文件進行使用查看
dex2jar,作用:將apk反編譯成java源碼(classes.dex轉化成jar文件)
jd-gui,作用:查看APK中classes.dex轉化成出的jar文件,即源碼文件
反編譯流程:
一、apk反編譯得到程序的源代碼、圖片、XML配置、語言資源等文件
下載上述工具中的apktool,解壓得到3個文件:aapt.exe,apktool.bat,apktool.jar ,將需要反編譯的APK文件放到該目錄下,
打開命令行界面(運行-CMD) ,定位到apktool文件夾,輸入以下命令:apktool.bat d -f test.apk test
(命令中test.apk指的是要反編譯的APK文件全名,test為反編譯後資源文件存放的目錄名稱,即為:apktool.bat d -f [apk文件 ] [輸出文件夾])
獲取成功之後,發現在文件夾下多了個test文件,點擊便可以查看該應用的所有資源文件了。
如果你想將反編譯完的文件重新打包成apk,那你可以:輸入apktool.bat b test(你編譯出來文件夾)便可
之後在之前的test文件下便可以發現多了2個文件夾:
build
dist(裡面存放著打包出來的APK文件)
二、Apk反編譯得到Java源代碼
下載上述工具中的dex2jar和jd-gui ,解壓
將要反編譯的APK後綴名改為.rar或則 .zip,並解壓,得到其中的額classes.dex文件(它就是java文件編譯再通過dx工具打包而成的),將獲取到的classes.dex放到之前解壓出來的工具dex2jar-0.0.9.15 文件夾內,
在命令行下定位到dex2jar.bat所在目錄,輸入dex2jar.bat classes.dex,
在改目錄下會生成一個classes_dex2jar.jar的文件,然後打開工具jd-gui文件夾里的jd-gui.exe,之後用該工具打開之前生成的classes_dex2jar.jar文件,便可以看到源碼了
『捌』 安卓手機運行環境art什麼意思
Android運行環境ART
安卓之前的版本運行機制是Dalvik,這個導致安卓卡慢,安卓4.4之後推出了ART,在5.0上完全使用了ART模式。
ART 的機制與 Dalvik 不同。在Dalvik下,應用每次運行的時候,位元組碼都需要通過即時編譯器轉換為機器碼,這會拖慢應用的運行效率,而在ART 環境中,應用在第一次安裝的時候,位元組碼就會預先編譯成機器碼,使其成為真正的本地應用。這個過程叫做預編譯(AOT,Ahead-Of-Time)。這樣的話,應用的啟動(首次)和執行都會變得更加快速。
通俗一點就是,ART增加APK安裝容量,實現了流暢度。
『玖』 如何消除間接呼叫 Method 在 Android Studio 中的編譯警告
如果有使用過 DI (Dependency Injection) Framework 像是 butterknife,或是 Bus 一類的 Framework 像是 Otto 或 EventBus,一定會撰寫出 Method 是沒有被自己開發的源代碼直接呼叫的。這時在 Android Studio 的即時編譯檢查就會出現警告:
Method 『...』 is never used
就像這篇文章里提到,警告的出現會形成一定程度上的困擾,最好是能夠消除掉,畢竟這是一個無法避免的寫法,但又不應該被看成是個問題。
照「調整 Android Studio 編譯檢查規則」中的方法把檢查規則整個取消掉,是個一勞永逸的方法。但是也把其可能的錯誤也抑制掉了,徒增程序質量上的風險,並非上策。
另外一個可行的選項是在方法上宣告 SuppressWarnings 的 Annotation,像是 @SuppressWarnings("unused")、@SuppressWarnings({"UnusedDeclaration"})、@SuppressWarnings({"UnusedParameters」})。跟前一個方案一樣,應該顯示的警告也同時被遮蔽掉了,不是最佳的方式。
所幸 Android Studio 也不是沒有提供對策,在有問題的源代碼上按下「alt+enter」,會跳出 Menu 並可以選擇 Suppress for methods annotated by 『...』 項目。以 greenrobot 的 EventBus 為例,所有以 org.greenrobot.eventbus.Subscribe 為 Annotation 的 Method 都不會再顯示警告,所以問題順利地解決了。
以上的解決方法應該已經很多人都知道了,只是還有一個衍生的問題。如果使用的 Framework 提供的 Annotation 不只一個,還是得要一個一個地重覆相同的動作,不能一次搞定嗎?
這時可以開啟「調整 Android Studio 編譯檢查規則」中提到的 Inspections 選項畫面,切換到「Java->Declaration rendancy->Unused declaration」項目。畫面右方的 Options Frame 最下方有一個【Configure annotations...】的按鈕,點下去之後會再跳出另一個小視窗。接著就可以在視窗的最下方新增【Add Annotation Class】或【Add Annotations Pattern】,前一個是新增單一個 Class,另一個則是使用萬用字元來增加一整組的 Class。
以上說明的這些資訊都被存在 .idea/misc.xml 的文件中,打開後會看到類似以下的內容:
<component name="EntryPointsManager">
<entry_points version="2.0" />
<list size="1">
<item index="0" class="java.lang.String" itemvalue="org.greenrobot.eventbus.Subscribe" />
</list>
</component>
如果你有莫名的控制欲,想要凡事都掌握在手中,可以直接修改文件的內容,也會達到一樣的效果。