apk入口在哪里

apk入口在哪里,第1张

android应用程序(apk)没有固定的入口点,系统会根据各个程序的manifest设定,在发生指定事件的时候调用程序的指定位置。

如果你说的入口点是传统上认为的main函数,那么在android应用程序里面,相对应的就是在manifest里面用intent-filter设定了会处理main action的那个activity。

扩展资料:

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文件,程序的保密性和可靠性不是很高,通过dexdump命令可以反编译它,但这种架构符合发展规律,微软的WindowsGadgets(WPF)也采用了这种架构方式。在Android平台中,dalvikvm的执行文件被打包为apk格式,最终运行时加载器会先解压,然后获取编译后的androidmanifest.xml文件中的permission声明对安全访问的限制,要知道仍然存在很多安全限制,但将apk文件传到/system/app文件夹下会发现执行是不受限制的。也许我们平时安装都不会选用这个文件夹,但在androidrom中,系统的apk文件默认会放入这个文件夹,它们拥有root权限。

以前一直都说Activity的人口是onCreate方法。

其实android上一个应用的入口,应该是ActivityThread。

和普通的java类一样,入口是一个main方法。

public static void main(String[] args) {

SamplingProfilerIntegration.start()

// CloseGuard defaults to true and can be quite spammy. We

// disable it here, but selectively enable it later (via

// StrictMode) on debug builds, but using DropBox, not logs.

CloseGuard.setEnabled(false)

Environment.initForCurrentUser()

// Set the reporter for event logging in libcore

EventLogger.setReporter(new EventLoggingReporter())

Security.addProvider(new AndroidKeyStoreProvider())

Process.setArgV0("<pre-initialized>")

Looper.prepareMainLooper()

ActivityThread thread = new ActivityThread()

thread.attach(false)

if (sMainThreadHandler == null) {

sMainThreadHandler = thread.getHandler()

}

AsyncTask.init()

if (false) {

Looper.myLooper().setMessageLogging(new

LogPrinter(Log.DEBUG, "ActivityThread"))

}

Looper.loop()

throw new RuntimeException("Main thread loop unexpectedly exited")

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12121205.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存