① apk入口在哪裡
android應用程序(apk)沒有固定的入口點,系統會根據各個程序的manifest設定,在發生指定事件的時候調用程序的指定位置。
如果你說的入口點是傳統上認為的main函數,那麼在android應用程序裡面,相對應的就是在manifest裡面用intent-filter設定了會處理main action的那個activity。
(1)android入口文件擴展閱讀:
APK(全稱:Android application package,Android應用程序包)是Android操作系統使用的一種應用程序包文件格式,用於分發和安裝移動應用及中間件。一個Android應用程序的代碼想要在Android設備上運行,必須先進行編譯,然後被打包成為一個被Android系統所能識別的文件才可以被運行,而這種能被Android系統識別並運行的文件格式便是「APK」。 一個APK文件內包含被編譯的代碼文件(.dex 文件),文件資源(resources), 原生資源文件(assets),證書(certificates),和清單文件(manifest file)。
APK 文件基於 ZIP 文件格式,它與JAR文件的構造方式相似,互聯網媒體類型是:application/vnd.android.package-archive。
介紹
APK是Android application package的縮寫,即Android安裝包(apk)。APK是類似SymbianSis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。[2]
apk文件和sis一樣,把androidsdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但後綴名被修改為apk,通過UnZip解壓後,可以看到Dex文件,Dex是DalvikVM executes的簡稱,即Android Dalvik執行程序,並非Java ME的位元組碼而是Dalvik位元組碼。Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接,但不同於Windows mobile中的PE文件,程序的保密性和可靠性不是很高,通過dexmp命令可以反編譯它,但這種架構符合發展規律,微軟的WindowsGadgets(WPF)也採用了這種架構方式。在Android平台中,dalvikvm的執行文件被打包為apk格式,最終運行時載入器會先解壓,然後獲取編譯後的androidmanifest.xml文件中的permission聲明對安全訪問的限制,要知道仍然存在很多安全限制,但將apk文件傳到/system/app文件夾下會發現執行是不受限制的。也許我們平時安裝都不會選用這個文件夾,但在androidrom中,系統的apk文件默認會放入這個文件夾,它們擁有root許可權。
② 安卓開發,如何修改Androidmanifest文件,使應用程序的入口改成某個service
安卓組件是安卓應用程序最基本的組成單元。每種組件都可以作為系統進入安卓程序的入口。你可以在清單文件中直接把 <intent-filter>------MAIN 這句話寫在你的service下面。但是我想不通為什麼要通過service作為入口呢,service沒有界面。用戶就看不到你的應用
http://blog.csdn.net/wr751811032/article/details/51434387
③ 如何查看Android應用apk的包名和入口Activity名稱
Android開發過程中我們有時需要使用第三方apk資源,而啟動第三方apk在某些情況下需要指定相應的包名和啟動的Activity名,這個時候就需要獲取這兩個名稱,我們可以使用如下三種方法:
1、使用aapt //aapt是sdk自帶的一個工具,在你安裝的Eclipse路徑下的sdk\build-tools\中,如我的是D:\Eclipse\androidTools\sdk\build-tools\android-4.4.2,如果你下載有apk反編譯工具,也可以直接使用裡面的aapt
以「GO備份.apk」為例,先進入cmd命令行窗口,然後運行:D: -> Eclipse\androidTools\sdk\build-tools\android-4.4.2
-> aapt mp badging C:\Users\Administrator\Desktop\GO備份.apk,即可獲取到AndroidManifest.xml中我們需要的內容,如
package: name='com.jiubang.go.backup.ex'
launchable-activity: name='com.jiubang.go.backup.pro.StartupPageActivity'
2、查看AndroidManifest.xml
同樣是查看AndroidManifest.xml,這里我們可以採用反編譯方法來獲取信息,同樣是打開cmd命令行窗口,然後運行:E:
-> apk反編譯工具\apktool\apktool -> apktool.bat d -f C:\Users\Administrator\Desktop\GO備份.apk GO備份,然後打開「GO備份」文件夾,打開droidManifest.xml文件,找到manifest節點的package屬性值package="com.jiubang.go.backup.ex"語句即為包名,查找android.intent.action.MAIN和android.intent.category.LAUNCHER對應的activity,該activity對應的android:name屬性即為入口activity名稱,如<activity
android:name="com.jiubang.go.backup.pro.StartupPageActivity"。
3、使用uiautomatorviewer
可以直接在命令行輸入uiautomatorviewer,打開獲取屏幕截圖工具,連接手機,打開所要獲取包名的應用,然後獲取其截圖,根據截圖查看package即可,uiautomatorviewer的使用這里就不做介紹了。使用這個需要注意的是,該app必須是有界面的,否則無法獲取。
另外,
android.intent.action.MAIN 屬性決定應用程序最先啟動的Activity
android.intent.category.LAUNCHER屬性決定應用程序是否顯示在程序列表裡