2 heshiweij heshiweij 于 2016.03.29 11:25 提问

Android应用程序打包时,会将SDK中类的代码一起打包到apk中么? 1C

比如,我程序中用到ListView这个类,ListView来自于对应编译版本的sdk,那么在打包应用apk时,会将sdk中的ListView一起打包到apk中么。

换句话说:安装在手机上的应用,应用中用到的ListView是依赖手机系统?

再换句话说:安装在手机上的应用,用到的ListView,这个SDK提供的api的内部的代码逻辑,是跟着系统变化,还是在应用打包的时候就已经确定?

另外:这和Android的编译版本,目标版本之间有什么的关系呢?

5个回答

qq_28919337
qq_28919337   2016.03.29 11:27

这貌似打包的是class文件吧,我觉得和更新服务器是一个原理

cxh269083073
cxh269083073   2016.03.29 12:01

是根据android的编译版本有关系.目标版本是应用安装的手机版本.
例如:有些app更新后,低版本的手机就已经安装不上了.

weixin_31033993
weixin_31033993   2016.03.29 21:28

随系统,打包只是声明

cckker
cckker   2016.03.30 18:59

不会带在apk里面,用的系统的,所谓系统定制,就包括这些标准组件的默认外观。

它的代码在/system/framework/framework.jar里面,它包含了所有系统自带的标准组件,包括View、Button。。以及你说的ListView等。

这是android标准组件,编译器在编译时只是引用一下,能编译通过就行,实际上你的apk里面并没有这些标准组件的实现代码。

apk在设备里面启动后默认会将framework.jar加载进来,所以你的的apk运行的时候会有这些代码。

另外,android-support-v4.jar或者v7里面的扩展组件是会编译到apk里面去的,因为它并不是android的标准组件。

** android.jar是你建工程的时候默认引进去设置为不编译代码到apk里面的,它对应系统里面的framework.jar**

最直接验证的方法,用jd-gui反编译看下,你会发现里面只有你自己的代码和第三方jar包的代码:

图片说明

包不包含代码和编译版本、目标版本没关系

编译版本即你编译时使用的api版本(android.jar版本)

目标版本,系统不会对该版本做兼容处理,对更高版本会按照该版本的处理方式做兼容处理

cckker
cckker   2016.03.30 18:58

不会带在apk里面,用的系统的,所谓系统定制,就包括这些标准组件的默认外观。

它的代码在/system/framework/framework.jar里面,它包含了所有系统自带的标准组件,包括View、Button。。以及你说的ListView等。

这是android标准组件,编译器在编译时只是引用一下,能编译通过就行,实际上你的apk里面并没有这些标准组件的实现代码。

apk在设备里面启动后默认会将framework.jar加载进来,所以你的的apk运行的时候会有这些代码。

另外,android-support-v4.jar或者v7里面的扩展组件是会编译到apk里面去的,因为它并不是android的标准组件。

** android.jar是你建工程的时候默认引进去设置为不编译代码到apk里面的,它对应系统里面的framework.jar**

最直接验证的方法,用jd-gui反编译看下,你会发现里面只有你自己的代码和第三方jar包的代码:

图片说明

包不包含代码和编译版本、目标版本没关系

编译版本即你编译时使用的api版本(android.jar版本)

目标版本,系统不会对该版本做兼容处理,对更高版本会按照该版本的处理方式做兼容处理

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android Apk打包过程概述_android是如何打包apk的
最近看了老罗关于android应用资源编译和打包过程的分析,过程比较复杂,这里结合其他资料,简要描述下打包过程,从整体上了解这个流程,感兴趣的再去详细研究过程。流程概述:1、打包资源文件,生成R.java文件2、处理aidl文件,生成相应java 文件3、编译工程源代码,生成相应class 文件4、转换所有class文件,生成classes.dex文件5、打包生成apk6、对apk文件进行签名7、
Android如何将大文件打包到APK中
开发程序时一般会将视频音频等文件放在assets、或raw下,但在2.3以前会有文件大小的限制,最大不能超过1M。如果在2.2的系统里想放超大文件该怎么办呢,,,我这有个方法(我也是在搜遍了整个互联网,啥也没找到的情况下自己摸索出来的)。可以将超大文件比如100M,放在src目录下,例如: 。 然后使用以下代码复制到SD卡下,就可以使用了(解压缩的代码网上一大堆,这里就不提供了), Stri
ANDROID开发:将数据库文件与项目包一起打包成APK文件
ANDROID开发:将数据库文件与项目包一起打包成APK文件 如题。我们做开发,使用SQLITE数据库。完成开发后发布应用软件前,需要将数据库文件的数据作为基础数据与项目一起打包成APK文件发布。要达成这个目标,有几步要走: 1. 开发时创建数据库和数据表; 2. 开发时给数据库存入数据; 3. 开发完后 发布应用软件前 将数据库拷贝到项目包里,当用户安装时即可使用软件自带的数
在Android源码中如何吧so库打包编译进入apk, 集成第三方库(jar和so库)
集成第三方so和jar包 include $(CLEAR_VARS) #jar包编译            LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES :=securitysdk:libs/hello.jar #64和32系统选择不同的库 ifeq (arm64, $(strip $(TARGET_ARCH)))     LOCAL_PREBUILT_
Android Studio打包.so到apk中
环境: Android Studio 项目是从Eclipse 中导入到 Android Studio 现象: Eclipse的项目中包含libs文件夹,转到Android Studio,路径有一定的变化,见下图: 在图一中的第2-5行,也就是Android Studio中这个文件夹jniLibs里的.so文件,在程序安装完后,被写到了手机的这个目录下/data/data/cn.hdnc.ar
Android开发中,取消打包某个jar包到APK中
开发中会遇到,引入一个jar包,只想编译的时候能通过,打包APK时不需要把该jar一起打包进去,因为可能在别的地方也有这个jar包,比如在插件开发过程中。宿主工程host里面使用了这个jar包,插件工程里面也需要用到这个jar包,而插件最终需要在宿主中使用,那么如果插件打包apk的时候把这个jar包打进去了,那么宿主运行插件apk的时候就会在内存中同时存在重复的类的情况,这样就会发生类链接错误。
关于Android项目中打包资源文件到apk的总结
关于Android项目中打包资源文件到apk的总结在开发中遇到了数据库方面的资源文件,想在打包的时候能够自动的装进apk中,并在运行的时候进行自动的复制文件到指定目录中,经过学习,现在总结如下,以便自己今后使用:可分为两个方法 检测数据库文件是否存在 进行复制数据库操作 对数据库资源文件进行检查代码如下:public boolean checkDataBase() { String
Android JNI以及打包so文件到apk中
Android JNI 的使用,之前很少使用这个,所以这次用到占用了很多时间搞,不熟悉C++好痛苦的说啊~ Android JNI如何用呢? 说说我知道的两种: 1. 在jni目录下放置你的.c等源文件,在Android.mk文件中标注好源文件,生成的lib文件名称等,然后在NDK中 ndb-build编译so文件,这种适合大多数的单独的第三方应用,就是在应用市场
android如何将图片资源打包进jar包中
网上有一种思路:把代码打包成
C#将dll打包到程序中技巧之一
废话就不多说了,直接进入主题吧 用VS2005建立一个windows项目,取名test 引用dll文件 编写代码,正常引用dll里的类库, 同时在test项目添加资源文件(该文件就是刚才引用的dll文件) VS2005会自动生成引用代码,我这里引用的是IrisSkin2.dll internal static byte[] IrisSkin2 {