1. Apk的安装和更新过程是怎样的呢?

Ref[1]

2. 在安装.apk程序包时, .so是如何选择并安装的?

这里的选择是指,是如何根据CPU_ABI和CPU_ABI2的值来选择合适的.so的。Ref [2]

最近遇到ZTE V975这款机型,它的CPU_ABI和CPU_ABI2值如下:

CPU_ABI=x86
CPU_ABI2=armeabi-v7a

而如果我们依赖的第三方库只支持armeabi (即只有armeabi/libxxx.so),这是在款机型上就会

因为loadlibrary失败,根据Ref[2]描述的确应该失败。在App Project中我们将armeabi/libxxx.so修改为

armeabi-v7a/libxxx.so,这样在这款机型就可以运行,.so库还是那个库,只不过armeabi改变为了armeabi-v7a。

但是armeabi-v7a的CPU_ABI是支持armeabi指令集的。在iOS上,armeabi-v7a的CPU_ABI就可以

运行armeabi架构的库。

回到Android,这样Android App中使用基于ndk开发的.so库,

就会有以下问题:

A:) CPU_ABI=x86 CPU_ABI2=armeabi-v7a

B:) CPU_ABI=armeabi-v7a CPU_ABI2=x86

C:) CPU_ABI=x86 CPU_ABI2=armeabi

D:) CPU_ABI=armeabi CPU_ABI2=x86

E:) CPU_ABI=armeabi CPU_ABI2=armeabi-v7a

F:) CPU_ABI=armeabi-v7a CPU_ABI2=armeabi

这样,我们so需要有lib/armeabi/libxxx.so和lib/x86/libxxx.so就可以支持以上6中组合。


Reference

1. http://java.dzone.com/articles/depth-android-package-manager

2. NDK的文档: CPU-ARCH-ABIS 中有讲根据ABI的值来选择合适的.so

https://github.com/sssemil/android-ndk/blob/master/docs/CPU-ARCH-ABIS.html

http://stackoverflow.com/questions/16105791/using-armv7-and-arm-library-in-the-same-android-app

http://stackoverflow.com/questions/17813300/in-which-path-so-file-will-be-copied-when-application-installed-from-apk-in-an

3. https://developer.android.com/tools/sdk/ndk/index.html

Android.PackageManager的更多相关文章

  1. Android PackageManager基础知识

    一.PackageManagerService启动过程 SystemServer首先启动,创建一个ServerThread线程来启动所有Android核心服务,其中PackageManagerServ ...

  2. Android PackageManager源码浅析以及静默安装实现方式

    Aandroid应用管理    >http://blog.csdn.net/sk719887916/article/details/50314017 skay整理.        >201 ...

  3. Android PackageManager packages.xml文件格式

    packages.xml文件存放在/data/system目录下    该文件记录了系统中所有应用程序的包管理相关信息    PmS根据该文件进行包管理的各种操作 标签名称 所包含的值举例 last- ...

  4. Android PackageManager:queryIntentActivities

    Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.setPackage(getPackageName()); intent.ad ...

  5. Android开发-API指南-<uses-feature>

    <uses-feature> 英文原文:http://developer.android.com/guide/topics/manifest/uses-feature-element.ht ...

  6. Android 免Root实现Apk静默安装,覆盖兼容市场主流的98%的机型

    地址:http://blog.csdn.net/sk719887916/article/details/46746991 作者: skay 最近在做apk自我静默更新,在获取内置情况下,或者已root ...

  7. Android随笔之——PackageManager详解

    参考:http://www.cnblogs.com/xingfuzzhd/p/3374504.html 今天要讲的是PackageManager.Android系统为我们提供了很多服务管理的类,包括A ...

  8. [转载] Android随笔之——PackageManager详解

    本文转载自: http://www.cnblogs.com/travellife/p/3932823.html 参考:http://www.cnblogs.com/xingfuzzhd/p/33745 ...

  9. [Android Pro] PackageManager#getPackageSizeInfo (hide)

    referce to : http://www.baidufe.com/item/8786bc2e95a042320bef.html 计算Android App所占用d的手机内存(RAM)大小.App ...

随机推荐

  1. maven 创建war类型项目

    1. 创建maven project时选择packaging为war 2. 在webapp文件夹下新建META-INF和WEB-INF/web.xml 3. 在pom.xml中添加web项目需要的ja ...

  2. 吴裕雄 python神经网络(8)

    # -*- coding=utf-8 -*-import numpy as npimport kerasfrom keras.models import Sequentialfrom keras.la ...

  3. workerman channel组件集群推送

    <?phpuse Workerman\Worker; require_once '../../web/Workerman/Autoloader.php';require_once '../../ ...

  4. JAVA语言 第二周

    放假第二周了,时间真快! 上一周配置好了环境变量,这一周就可以做一些测试了.对不同的内容分类进行了测试,包括写入.输出.变量·······还有很多.对于开学的试卷,在第一部分做的还行,第二部分就没什么 ...

  5. org注释包

    1.注释包 物种 OrgDB 按蚊(Anopheles) org.Ag.eg.db 拟南芥(Arabidopsis) org.At.tair.db 牛(Brovine) org.Bt.eg.db 蠕虫 ...

  6. 大型运输行业实战_day13_1_定时任务spring-quartz

    1.jar包 拷贝quartz-2.2.3.jar包到项目 2.编写定时任务类TicketQuart.java package com.day02.sation.task; import com.da ...

  7. 验货或VIP带尾续的半成品,不同客户对于相同编码,需要维护不同的尾续

    前提:验货或VIP带尾续的半成品 不同客户对于相同编码,需要维护不同的C开头的尾续. 例子: 以下验货客户编码102001001134CZ绑定了SO:5000144993,而且目前5000144993 ...

  8. thymeleaf 处理模板为字符串

    @Autowired private SpringTemplateEngine thymeleaf; public String aa() { Context context = new Contex ...

  9. SpringCloud报错:Caused by: org.springframework.context.ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

    今天启动用eureka的服务消费者时,一直出现问题. SpringCloud报错: Caused by: org.springframework.context.ApplicationContextE ...

  10. python中matplotlib 的简单使用

    1.简单折线图的画图,轴标签.图的颜色,风格,等等参数,本文只介绍最常用的几个参数: import matplotlib.pyplot as plt import numpy as np x = np ...