精华内容
下载资源
问答
  • 在使用android 64位系统时预置第方apk,而apk中使用的so库为32位,预置到系统中当使用到相应的32位库时报错:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/system/...

    1.预置第三方apk到系统中Android.mk, 关于32/64位so库兼容的问题

    在使用android 64位的系统时预置第三方apk,而apk中使用的so库为32位,预置到系统中当使用到相应的32位库时报错:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file “/system/app/xxxxx/xxxxx.apk”],nativeLibraryDirectories=[/vendor/lib64, /system/lib64]]] couldn’t find “libxxxx.so”

    解决方案:

    Android.mk配置

    LOCAL_PATH := $(call my-dir)
    
        include $(CLEAR_VARS)
    
        LOCAL_MODULE := xxxx
    
        LOCAL_MODULE_TAGS := optional
    
        LOCAL_SRC_FILES := xxxx.apk
    
        LOCAL_MODULE_CLASS :
    展开全文
  • 简单科普一下,安卓下的64位32位

    千次阅读 2021-06-06 06:35:45
    对操作系统略有了解的朋友就一定知道Windows 系统32位64位之分,而大部分对32位64位的区别并不清楚,可能只停留在最表面的“内存大于4G”就可以装64位系统了,这些了解都是片面的,下面为大家详细介绍下32位和...

    对操作系统略有了解的朋友就一定知道Windows 系统有32位和64位之分,而大部分对32位和64位的区别并不清楚,可能只停留在最表面的“内存大于4G”就可以装64位系统了,这些了解都是片面的,下面为大家详细介绍下32位和64位系统的区别,到底哪个好?

    1,32位和64位的区别其实质就是程序同时运行的位数变宽,使用一个比喻可能更好的解释这些:比如在2条限速100km/h 的高速公路上,一条有32米宽,一条有64米宽(比喻有点夸张),在以相同速度行使,显然64米宽的高速公路可以有高达两倍的车辆运行,同理,一个64位程序或者操作系统,可以同时处理更多的bit,但他们到达目的地的时间是一样的,因为它们的速度一样,都是在100km/h。而对于较大程序,由于同时处理的位数更多,64位的运行速度将会有所提高。

    2,64位的程序会比32位运行速度快两倍吗?

    答案是否定的,64位意味着操作系统和CPU将使用64位的指令集,但不意味着CPU将以两倍于32位的速度运行,64位最大的有点是操作系统可以管控更多的内存,默认情况下,32位的系统最多可以管控4GB的内存,但由于Windows 系统的限制,只能显示出3.25G,因为其还要有部分内存存储BIOS,各类接口,输入输出等设施的地址信息等,这些大概占了700M左右,但请放心,他们没有被浪费掉。

    而64位的系统可以管控高达192GB的内存,有更多的可用内存,系统和程序将运行的更快,因为更多频繁使用的数据可以加入内存缓存,这是决定计算机运行速度的重要因素之一。

    3,一个64位的程序会比一个32位的程序运行速度更快吗?

    这取决于程序和所处的环境。比如,一个程序需要使用超过4GB的内存,这时64位的操作系统将能提供更多的资源,包括增加高速缓存的能力。这在使用MySQL这一非常流行的数据库程序上就可以体现,MySQL可以同时运行在32位和64位系统上,较大型的数据库则需要运行在64位的系统上去获得更多的内存和缓存资源,但在32位系统上就局限的多,起可以让数据库的调用和查询方面更加的迅速。同时,很多64位的程序的编码的更有效率,也会提升起运行速度。而对于较小的64位程序,只需要较少的内存,其速度只能有着完全不明显的变化,这还要取决于程序的编码效率。

    4,64位系统适合我吗?

    如果你的计算机有着4G或者更多的内存,安装一个64位系统是十分合适的,但需要注意,64位的系统相当于32位的系统将会明显的占用更多的内存资源。内存的更多占用有着多方面的原因,包括存储器地址的占用,32位的存储器地址占用4个,64位的存储器地址要占用8个,此外,64位操作系统同时支持32位和64位的程序,因此起有这高达两倍的库文件(.dll文件),也将占用更多的内存。因为一个有着相同的作用的库文件也分为32位和64位两种,可能因为同时运行着32位和64位程序,而被同时调用,从而占用更多的内存。而在32位系统,这种情况是不存在的。

    因此我的建议是,不要盲目追求64位,4G以上的内存选择64位几乎是必然的,以避免造成硬件资源的浪费,对于电脑有4G内存的用户,则要根据自己经常运行的程序,如果大部分都是32位的,或者64位的程序比较小型,占用的资源较少,还是选择32位的操作系统较为合适!对于4G以下内存的用户,我更倾向于32位的操作系统,采用64位系统因为占用着更多的内存,会造成系统和程序运行速度变的很慢。

    展开全文
  • 角色:32位的会议室版本Apk,64位调试版Apk 原因分析: 前置知识: 不借助adb,不能直接在launcher里卸载系统应用,进入设置卸载覆盖安装的,可将app恢复成系统应用 系统应用如果短时间内反复crash,

    项目场景:

    二期会议室需要替换成OD20的会议平板,为了方便安装,给了framework的同事一个会议室版本的无线投屏APK,作为系统应用打包进去了。

    将无线投屏升级到现在调试的版本,启动后,底部通知栏就duang duang duang的弹,随之系统crash。

    环境:OD20会议平板
    角色:32位的会议室版本Apk,64位调试版Apk


    原因分析:

    前置知识:

    1. 不借助adb,不能直接在launcher里卸载系统应用,进入设置卸载覆盖安装的,可将app恢复成系统应用
    2. 系统应用如果短时间内反复crash,会导致系统崩溃
    3. 应用崩溃会重启的原因以及规避方案参考:Android 解决应用崩溃后重启的问题
    4. 项目中直接/间接引用到的第三方库,都会在 Android Studio 的 External Libraries 下找到
    5. 动态链接库要提供整套,不然会crash
    6. Service的标识:包(package)名}/{包名}.{服务(service)名称}

    Step 1

    开始分析,从报错堆栈:

    03-26 17:01:33.352 28825 28825 D AndroidRuntime: Shutting down VM
    03-26 17:01:33.353 28825 28825 E AndroidRuntime: FATAL EXCEPTION: main
    03-26 17:01:33.353 28825 28825 E AndroidRuntime: Process: com.hikvision.cast, PID: 28825
    03-26 17:01:33.353 28825 28825 E AndroidRuntime: java.lang.RuntimeException: Unable to get provider androidx.lifecycle.ProcessLifecycleOwnerInitializer:
     java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/system/app/i
    nstcast/instcast.apk"],nativeLibraryDirectories=[/system/app/instcast/lib/arm, /system/app/instcast/instcast.apk!/lib/armeabi-v7a, /system/lib, /vendor/
    lib]]
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread.installProvider(ActivityThread.java:6288)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread.installContentProviders(ActivityThread.java:5851)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5772)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread.-wrap1(Unknown Source:0)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:105)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:164)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6541)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime: Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwne
    rInitializer" on path: DexPathList[[zip file "/system/app/instcast/instcast.apk"],nativeLibraryDirectories=[/system/app/instcast/lib/arm, /system/app/in
    stcast/instcast.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib]]
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        at android.app.ActivityThread.installProvider(ActivityThread.java:6273)
    03-26 17:01:33.353 28825 28825 E AndroidRuntime:        ... 10 more
    03-26 17:01:33.357  2414  5634 W ActivityManager: Process com.hikvision.cast has crashed too many times: killing!
    

    结合缺陷表现来看,好的没谁了,就是它!

    开始分析为什么找不到 androidx.lifecycle.ProcessLifecycleOwnerInitializer
    混淆?分包?

    垂死病中惊坐, androidx.lifecycle:lifecycle-process:2.2.0 我都没用到!

    难道是LiveEventBus间接引用到了?但不应该啊,AS的 External Libraries 下也没找到(AS你病了吗?快醒醒)

    罢了罢了,先解决问题,把这个库引用上,防混淆,打入主dex,笑嘻嘻的恢复出厂设置,install,open…
    … … duang duang duang,系统crash

    佛祖心中坐,卧槽心中留

    Step 2

    不能轻易放弃,几经折腾,猜测有可能是前面的crash导致的,最终表现在这个Class没找到?就跟调试时经常出现的JNI的某方法没实现问题一样。往上一瞟:

    2021-03-29 18:12:30.487 3737-3737/? E/AndroidRuntime: FATAL EXCEPTION: main
        Process: com.hikvision.cast, PID: 3737
        java.lang.UnsatisfiedLinkError: dlopen failed: "/data/app/com.hikvision.cast-5Xy7PPXmWlo655vBQWul3Q==/lib/arm64/libmmkv.so" is 64-bit instead of 32-bit
            at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
            at java.lang.System.loadLibrary(System.java:1657)
            at com.tencent.mmkv.MMKV.n(SourceFile:2)
            at com.tencent.mmkv.MMKV.l(SourceFile:3)
            at com.hikvision.cast.basic.utils.f.h(SourceFile:1)
            at com.hikvision.cast.App.onCreate(SourceFile:4)
            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
            at android.app.LoadedApk.makeApplication(LoadedApk.java:981)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2725)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
            at android.app.ActivityThread.-wrap11(Unknown Source:0)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
            at android.os.Handler.dispatchMessage(Handler.java:105)
            at android.os.Looper.loop(Looper.java:164)
            at android.app.ActivityThread.main(ActivityThread.java:6541)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
    

    被腾讯坑了?MMKV拿了个32位的动态链接库,放到armv8a目录下?
    很快啊,打开Ubuntu虚拟机一看,是64位的没错。

    而且冷静下来一看,log提示是说拿64位的代替32位了。

    Step 3

    难道是链接库的CPU架构支持导致?一顿重启、重装、恢复出厂设置、覆盖安装后,得出以下结论:
    系统app不同CPU架构升级结果测试

    Step 4

    基本有个定论了,32位的系统apk只能升级到32位的。

    但是还有个小彩蛋,为什么有两个投屏码?而且杀死进程后,又出现系统崩溃的问题。
    尝试解决:重启试试?果然重启大法好。那多半是framework的缓存和策略问题了。

    再扩展思考下:
    和 install 和 install -r 有关系吗?
    —> 不加-r 都安装不上

    adb: failed to install G:\WorkSpace\Apps\InstCast-Project-2.2-Dev\app-s\build\outputs\apk\meeting\release\cast_1.4.7_meeting_2021_03_30_v7_release.apk: Failure [INSTALL_FAILED_ALREADY_EXISTS: Attempt to re-install com.hikvision.cast without first uninstalling.]
    

    Step 5

    1. 猜测是Service没有被替换的原因,使用老的分支(要被升的那个apk),将Service替换成新的com.hikvision.cast.service.InteractService,确实没覆盖上,但杀死新app后不会触发系统崩溃。
    2. 在新的分支,替换成display.interactive.cast.service.InteractService,投屏码显示****,并没有覆盖原来的Service

    分析新老分支:
    相同:package 都是 com.hikvision.cast
    不同:旧分支的代码目录是display.interactive.cast,新分支代码目录是com.hikvision.cast(看dex里的结构,确实是用的代码目录)

    但是!服务的标识,和代码的包名也是相关的。至此,应用层角度,能排查的和能试验的都完毕了,总结一下,去咨询一下Framework的专家们。

    整体排查历程如下所示:
    在这里插入图片描述


    整理总结

    出错现象:

    1. OD20设备,系统应用覆盖安装后崩溃,不断被系统恢复,然后系统crash

    现象总结:

    1. 使用32位动态链接库的系统应用不能直接升级到64位,只能从32位升级到32位(32+64位的都放在包里也不行)
    2. 预置系统应用的Service不能被覆盖(有两个投屏码),杀新app的进程,会导致系统crash

    可能能作为突破的点:

    1. 首次安装系统/恢复出厂设置会出现,restart后,恢复到预装(启动预装应用),再覆盖安装,启动不出错,杀进程也不出错
      (系统应用读取动态链接库的顺序?手动升级系统内置应用还是系统应用吗?为何会固步自封在被覆盖app支持的CPU架构上,有缓存还是没正确的解析新apk?)
    2. 如何才能正确的停止系统服务的Service
    3. 有没有类似手机厂商的,预装应用但不是系统应用的方案

    想要得到的结果:

    1. 系统应用能从32位正确的更新到64位
    2. 系统应用的Service正确的覆盖

    解决方案:

    经过Framework同事的答疑解惑后,覆盖安装的问题应该是系统应用动态链接库的读取策略有一些问题,Service的问题应该是系统应用的服务被替换后没有清理干净导致。
    —> 但可能不对,参考【拓展:2.Android 调用so库全过程】结合系统应用思考可得,64位机为了兼容32位系统,会跑一个兼容的32位的zygote来孵化应用进程,而系统应用主动拉起App导致ClassLoade根据CPU架构去apk里释放so的时候就出事了
    <可以通过ClassLoader打印nativeLib路径>

    采取如下方案:

    1. Crash:充分非系统应用测试后,非系统应用能较好的应对这些奇怪问题。分析无线投屏app的场景定位,后续采用集成到系统包,但不作为系统应用的方式
    2. Service:因为后期打入系统应用也不会再用这么老的版本,Service标识不变
    3. 继续跟进Framework从根本上解决该问题,完成闭环

    现存的风险点:

    1. 二期会议室的十几台试点OD20存在升级风险
    2. 早期领导办公室的把投屏打包为系统应用的版本存在升级风险

    拓展:
    1.Android动态链接库查找顺序
    2.Android 调用so库全过程


    思考总结

    1. 分析日志视野要广一些
    2. 升级迭代版本不宜过大

    根因定位

    Service重启恢复
    1.启动时,serviceDoneExecutingLocked调用onStartCommand的返回值设置ProcessRecord的stopIfKilled和deliveredStarts字段,构建重启数据
    2.Service挂掉后,触发AMS的Binder讣告机制,handleAppDiedLocked,最终调用ActivityServices.killServicesLocked负责清理和重启需要的Service
    3.限制:超过两次都失败,就不再重启Service,系统APP不受限制;像START_NOT_STICKY这种,登记会再次被取消
    4.最近任务列表中移除,也会触发Service重启,仅仅多了onTaskRemoved回调,若不需要重启,设置stopWithTask
    5.START_REDELIVER_INTENT重发所有Intent,且重启延时较大,START_STICK一般固定1s

    RescueParty救援程序
    1.触发 kill用户进程 和 恢复出厂设置
    2.分为5个救援优先级,system_server 在5分钟内重启5次以上调整一次级别,永久性系统应用在30秒内崩溃5次以上调整一次级别
    3.禁用场景:eng版本、userdebug版本、 persist.sys.disable_rescue为true

    Android的so文件加载机制
    1.通过primaryCpuAbi确定应用程序的abi,影响系统寻找so文件目录的流程(通过apk包里包含的so库的架构来决定app的primaryCpuAbi的值)
    2.nativeLibraryDir -> 32(vendor/lib,再system/lib)/64(vendor/lib64,再system/lib64)
    3.不同的cpu架构的so文件不能够混合使用
    4.应用运行64位进程,无法使用32位abi的so文件,反之亦然
    5.zygote根据primaryCpuAbi确定启动那个zygote,分为zygote32/zygote32_64/zygote64/zygote64_32

    综上所述,导致问题的根本原因是(以32位系统应用升级为64位为例):
    1.32位系统应用升级,非正常stopService,因设置了persistent,触发Binder讣告,AMS重启Service
    2.32位进程被拉起,但通过apk获取的primaryCpuAbi是64位(即使有32/64位也是优先64位),读取64位的so文件目录,但进程是32位的又crash
    3.短时间设置了persistent反复crash,触发RescueParty,并不断提高救援优先级,导致系统Recorvery

    至于换Service的路径,出现两个投屏码是很明确的,因为标识的一部分就是路径,一个是被AMS拉起的旧App的Service,一个是新App启动的Service。

    最终解决

    知道了导致问题的根本原因,最终解决方案也就灵光乍现:
    1.在无线投屏App还未形成一个稳定版本的时候,打成系统应用去掉persistent;但为了保活,附带一个保活App,20s周期检测无线投屏App是否运行中,挂掉的话拉起App,为了保证系统稳定性,重复拉起10次失败则退出保活。
    2.无线投屏App加入保活机制,且加入4分钟连续crash5次,则终止保活的熔断机制,避免导致系统的Recorvery。

    展开全文
  • 背景知识:关键点:JAVA编译不分32bit和64bit(APK,JAR)可执行文件,默认编译64位动态库和静态库,默认同时编译32bit和64bit版本通过LOCAL_MULTILIB可以指定特定模块编译32bit或64bit或都编译JAVA加载JNI库(so文件)...

    背景知识:

    关键点:

    JAVA编译不分32bit和64bit(APK,JAR)

    可执行文件,默认编译64位

    动态库和静态库,默认同时编译32bit和64bit版本

    通过LOCAL_MULTILIB可以指定特定模块编译32bit或64bit或都编译

    JAVA加载JNI库(so文件)的规则:

    如果APP需要加载的所有so都是32bit,则使用32bit方式加载so库;如果APP需要加载的so库中只要有一个so是64bit的,则必须以64bit方式加载so库;不能同时加载32bit和64bit的so库。

    实际工程中,我们通常会遇到下面这样的场景:

    A. APK有源码,SO库有源码 - 应用及so库我们都能自己编译出来

    B. APK有源码,SO库没有源码 - 我们开发的应用使用了第三方的so库,如ScanService

    C. APK和SO库都没有源码 - 预置第三方的应用(应用中包括so库)

    对于场景A:

    只要我们编译默认对应的APP和SO库(32bit+64bit)即可。

    此种场景最为普通,本文不做详细讲解。

    对于场景B:

    如果APK需要加载的库里面有64bit的,则需要全部的库都使用64bit。

    如果APK调用的第三方so库中有32bit的,则:要么让第三方提供64bit版本的so库,要么强制使所以的so库都使用32bit版本。

    对于场景C:

    使用特定的预置规则即可。

    场景A范例:

    APK的编译规则不需要设置LOCAL_MULTILIB

    SO库的编译规则也不需要设置LOCAL_MULTILIB

    所以,SO库就会同时编译出32bit和64bit版本,APK按照64bit方式调用so库

    场景B范例:

    APK的编译规则需要设置LOCAL_MULTILIB

    SO库的编译规则需要指定64bit或32bit(本地编译或预置的都需要)

    需要显示声明APK的JNI库

    如:

    LOCAL_PATH:= $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE_TAGS := optional

    LOCAL_CERTIFICATE := platform

    LOCAL_SRC_FILES := $(call all-subdir-java-files)

    LOCAL_JAVA_LIBRARIES := odm conscrypt sp

    LOCAL_PACKAGE_NAME := PosService

    # to support on 64-bit system

    LOCAL_JNI_SHARED_LIBRARIES := \

    libmiscjni \

    libttyjni \

    libIAL \

    libSDL \

    libbarcodereader \

    libHsmKil \

    libHHPScanInterface \

    libHSMDecoderAPI

    LOCAL_MULTILIB := 32

    include $(BUILD_PACKAGE)

    其中某个本地编译so的规则:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_SRC_FILES := \

    com_odm_tty.cpp

    LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)

    LOCAL_SHARED_LIBRARIES := \

    libcutils \

    libutils

    LOCAL_PRELINK_MODULE := false

    LOCAL_MODULE_TAGS := optional

    LOCAL_MODULE := libttyjni

    LOCAL_MULTILIB := 32

    include $(BUILD_SHARED_LIBRARY)

    某个第三方so的规则:

    LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE_TAGS := optional

    LOCAL_MODULE_CLASS := SHARED_LIBRARIES

    LOCAL_MODULE_SUFFIX := .so

    LOCAL_MODULE := libHHPScanInterface

    LOCAL_SRC_FILES := $(LOCAL_MODULE).so

    LOCAL_MODULE_PATH := $(TARGET_OUT)/lib

    LOCAL_MULTILIB := 32

    include $(BUILD_PREBUILT)

    场景C范例:

    APK使用典型的预置应用规则

    SO库不需要写预置规则

    需要显示声明APK调用的SO库

    如:

    LOCAL_PATH := $(my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE := BaiduIME

    LOCAL_MODULE_TAGS := optional

    LOCAL_SRC_FILES := baidu_input_for_xiaomiV5.apk

    LOCAL_MODULE_CLASS := APPS

    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

    LOCAL_CERTIFICATE := PRESIGNED

    LOCAL_MULTILIB := 32

    LOCAL_PREBUILT_JNI_LIBS := \

    @lib/armeabi/libBDVoiceRecognitionClient_V1.so \

    @lib/armeabi/libchiperencoder_v1_2_1.so \

    @lib/armeabi/librabjni-1.so \

    @lib/armeabi/libshare_v2.so

    include $(BUILD_PREBUILT)

    粗体部分是需要特别注意的地方。

    展开全文
  • android环境下搞开发工作,原来用的是32的(操作系统32位、Eclipse、JDK都是32)。...32环境下(操作系统32位、Eclipse、JDK都是32)更新过androidsdk,64位环境下(操作系统升级时,只换了C盘),Eclipse...
  • 满意答案t5858582017.01.25采纳率:46%等级:6已帮助:307人关键点:JAVA编译不分32bit和64bit(APK,JAR)可执行文件,默认编译64位动态库和静态库,默认同时编译32bit和64bit版本通过LOCAL_MULTILIB可以指定特定模块...
  • 在CentOS64位系统中,建立android虚拟机时是不会报错的,但是当你Launch这个虚拟机就会出现以下错误:Starting emulator for AVD 'android'Failed to start emulator: Cannot run program "/home/Kevin/Android/adt-...
  • android x86 6.0 iso系统镜像最新发布,rc1版修复了之前的问题,android-x86 6.0-rc1...小编已将32位64位安卓6.0 x86系统分网盘,欢迎下载使用。主要特点6.0-rc1版本是基于最新的Android marshmallow-mr2...
  • 前言首先要知道,64位的设备是兼容32位so文件的,目前很多主流app都是只在app中放置32位so,目的是减小apk的打包体积,弊端就是在64位设备上运行时不能充分发挥64位cpu的计算能力。但是我们项目没有这么做,而是在...
  • 我有一个Android应用程序,我用AOSP(Kitkat)编译为android系统应用程序,它运行正常.我的应用程序依赖于使用Android-NDK编译为32位库的本机代码.我在我的android应用程序li​​bs / armeabi文件夹中复制本机库,然后在...
  • Android系统用adb命令行判断CPU是32位还是64位 方法一 命令行中输入以下命令 adb shell getprop ro.product.cpu.abi 这样可以直接获取cpu处理器位数: armeabi-v7a(32位ARM设备) arm64-v8a(64位ARM设备) 方法...
  • 过去数月,多款新智能手机都把64位处理器作为卖点。...在用户购买首款64位Android手机(HTC Desire 510)前,或开始对将于今年秋季上市销售的64位手机“垂涎欲滴”前,本文将讨论64位计算技术的真正含义,以及用户需要...
  • 无论是移动端 Android 还是普通 PC 电脑,虽说如今智能设备的... 看完下面的科普帖子各位童鞋就明白了~为了避免混淆概念,首先需要知道的是(以 Windows 为例):64位CPU同时支持安装32位/64位的操作系统,但32位CP...
  • 如何检测Android应用是32位还是64位

    千次阅读 2021-04-14 11:36:44
    那么问题就来了,在一个64位系统Android手机上如何检测应用是运行在32位还是64位环境? 2、检测App 任何一个Android手机用户对APK文件肯定不会陌生,它是一个Android应用资源的封装文件。当你下载安装一个Ap..
  • 现在越来越多的android系统采用64位的kernel,我们
  • 32位JDK安装目录是D:\Java\32\jdk1.6.0_1364JDK安装目录是D:\Java\jdk1.7.0_06JAVA_HOME配置的是JAVA_HOME=D:\Java\32\jdk1.6.0_13然后启动64位的eclipse果断的报错了,报错信息:[Failed to load the JNI shared ...
  • {POJ}{3925}{Minimal Ratio Tree}{最小生成树} 题意:给定完全无向图,求其中m个子节点,要求Sum(edge)/Sum(node)最小. 思路:由于N很小,枚举所有可能的子节点可能情况,然后求MST,memset()在POJ ... android 圆角边框及图片
  • Android 64位架构适配
  • android源码编译64位改成32位的办法(转载)You are attempting to build on a 32-bit system.Only 64-bit build environments are supported beyond froyo/2.2.需要进行如下修改即可,将./external/clearsilver/cgi/...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼现在...我更改了文件中一个参数让程序把我的i686强行认成x86_64,结果又如下报错,难道只能重装系统了吗????不要吧/bin/bash: prebuilts/gcc/linux-x86/aarch64/aarc...
  • 我有类似这个问题:Android Studio 64-bit ERROR: 32-bit Linux Android emulator binaries are DEPRECATED我在Gentoo Linux / amd64上运行android studio 2.1.1,当我尝试运行android android studio的模拟器时给我...
  • Android L开始 APK 64bit 32bit 运行环境原理及决定运行环境的规则 正在上传…重新上传取消​WalkerXu发布于2018-04-03 ???????????? SegmentFault D-Day Online 开源开放与新技术创新,快来报名 >>> ...
  • 安卓APP升级64位架构

    千次阅读 2021-05-04 14:05:53
    2021年12月底:现有和新发布的应用/游戏,需上传包含64位包体的APK包(支持双包在架,和64位兼容32位的两个形式,不再接收仅支持32位的APK包) 2022年8月底:硬件支持64位系统,将仅接收含64位版本的APK包 2023年...
  • 友盟+ U-APM数据显示:市场上64位32位的设备占比为65%和35%,32位设备发生崩溃现象次数是64位设备的4.8倍,无论从用户体验上还是设备占比来看,应用支持64位系统必定是大势所趋 那么,开发者应该在何时支持64位...
  • 当其他移动操作系统多年来一直采用64位软件堆栈,并在逐步淘汰32位应用支持的过程中,Jolla正在庆祝Sailfish 4.1终于标志着他们第一个完全64位的Sailfish OS软件堆栈的到来,但它目前只可用于索尼Xperia 10 II智能...
  • Android adb安装时强制应用App以32位或者64位运行前言如果只想看结论,请跳转到最后,如果想看看这其中的曲折历程那就按照正常的流程就好了。不要问我为什么会写这么奇葩的博客问题,因为我这是被客户的应用给揉捏的...
  • 我试图在Win7 x64上运行.NET 3.5 WinForms应用程序。... Oracle客户端是32位的。启动应用程序时,出现以下错误消息Attempt to load Oracle client libraries threw BadImageFormatException.This pr...
  • 安卓x86 6.0 rc2下载

    2021-06-03 13:27:18
    android x86 6.0 rc2是一款能够运行在x86PC端上的安卓操作系统,6.0-rc2版本新增了许多功能,支持更多的驱动改程序和媒体文件,还可以自动挂载SD卡/usb等文件系统,让用户更好地在电脑上使用安卓系统,欢迎有需要的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 87,941
精华内容 35,176
关键字:

安卓系统32位64位