• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android APK 在32bit 和64bit 的区别问题

Android APK 在32bit 和64bit 的区别问题

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了32bit和64bit的区别,32bit和64bit怎么看,64bit 32bit,32bit升级64bit,32bit和64bit哪个好等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android APK 在32bit 和64bit 的区别问题


目前64bitandroid系统也慢慢的多了,看到也有apk声称支持64bitsystem,然后就往里面打包搞了个arm64-v8a 目录,放了个64bit的so,但是apk代码里面却不按规范去load so ,导致一系列 file not found 异常。

 

 

apk lib目录:

 

先看下apk中的lib打包的目录:
lib
依次代表不同类型的cpu

PMS安装路径://blog.csdn.net/sergeycao

pms install 流程比较繁杂,只关注so相关的scanPackageDirtyLI函数中:


private PackageParser.Package scanPackageDirtyLI(PackageParser.Package pkg, int parseFlags,
            int scanFlags, long currentTime, UserHandle user) throws PackageManagerException {
            ...
             //invoke installer to do the actual installation  //作为外部apk 创建data目录相关项
             //\frameworks\native\cmds\installd\commands.c  install()中创建
                int ret = **createDataDirsLI**(pkgName, pkg.applicationInfo.uid,
                                           pkg.applicationInfo.seinfo);
            ...
    if (isSystemApp(pkg) && !isUpdatedSystemApp(pkg)) {
        ...

           setBundledAppAbisAndRoots(pkg, pkgSetting);

            ...

           setNativeLibraryPaths(pkg);  

    }
    else
    {
    setNativeLibraryPaths(pkg);
    ...
        if (isAsec) {
                        copyRet = NativeLibraryHelper.findSupportedAbi(handle, abiList);
                    } else {
                        copyRet = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
                                nativeLibraryRoot, abiList, useIsaSpecificSubdirs);
                    }
    setNativeLibraryPaths(pkg);
      if (DEBUG_INSTALL) Slog.i(TAG, "Linking native library dir for " + path);
            final int[] userIds = sUserManager.getUserIds();
            synchronized (mInstallLock) {
                // Create a native library symlink only if we have native libraries
                // and if the native libraries are 32 bit libraries. We do not provide
                // this symlink for 64 bit libraries.
                if (pkg.applicationInfo.primaryCpuAbi != null &&
                        **!VMRuntime.is64BitAbi(pkg.applicationInfo.primaryCpuAbi)**) {
                    final String nativeLibPath = pkg.applicationInfo.nativeLibraryDir;
                    for (int userId : userIds) {
if (mInstaller.linkNativeLibraryDirectory(pkg.packageName, nativeLibPath, userId) < 0)    {
                            throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR,
                                    "Failed linking native library dir (user=" + userId + ")");
                        }
                    }
                }
            }

    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android APK 在32bit 和64bit 的区别问题

相关文章

  • 2017-05-26设计五(六)大原则,设计原则
  • 2017-05-26Android之ViewPager 第一课,androidviewpager
  • 2017-05-26redis master-slave 切换演练
  • 2017-05-26android 所有焦点问题--Focus,android--focus
  • 2017-05-26AndroidStudio中如何使用Git和Github管理项目
  • 2017-05-222.5.7 Toast(吐司)的基本使用
  • 2017-05-26Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset,n7.1.1headset
  • 2017-05-26绘制视图,根据轴测图绘制三视图
  • 2017-05-26Android进阶--Acticivity的启动模式,acticvity启动模式
  • 2017-05-26xshell可以ping通但是不能远程服务器,putty可以远程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 安卓自定义view(简单折线图),安卓自定义view折线
    • android内核剖析,android内核
    • 菜单(Menu)的三中创建方式——Android开发之路2,menuandroid
    • viewPager使用时加载数据时显示IllegalStateException异常,解决不了。。。。,viewpager取消预加载
    • Android studio 百度地图开发(2)地图定位
    • Retrofit 实践,retrofit实践
    • Android框架设计模式(四)——Adapter Method
    • AsyncTask基础(笔记)
    • 关于Android项目隐藏标题栏的方法总结,android标题栏
    • 自定义水平进度条样式:黑色虚线,进度条虚线

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有