关于 Android App 在不同设备运行

本贴最后更新于 1216 天前,其中的信息可能已经事过景迁

起因:

开发一款 app,需要运行在手持设备和手机上。app 包含扫码功能,手持设备上运行需要使用手持设备生产商提供的 arr 包来调用扫码功能,因此造成了手机和手持设备需要使用不同方式调用扫码功能。

开发过程:

最初手持设备和手机分别建立了两个分支,分别进行开发。其中大部分代码相同,打包等需要进行两遍,较麻烦。

因此决定将两个分支合并,只需要一个安装包便可以运行在两个设备上。

问题 1:

描述:

手持设备依赖系统库”device.sdk“如果系统不存在该库,则安装软件时报错“INSTALL_FAILED_MISSING_SHARED_LIBRARY”,可手机上肯定是不存在该库的。

解决:

找到手持设备厂商提供的 aar 包,修改该包下 AndroidManifest.xml 文件。(在 application 节点下添加以下配置)

<uses-library
            android:name="device.sdk"
            android:required="true" />

声明该库非必须依赖,至此便可以安装在手机上了。

问题 2:

描述:

此时虽然软件可以强行安装在手机上,但手机调用到手持设备厂商提供的方法是会报错,故需要判断当前设备决定扫码方式。

解决:

此时可以通过设备型号来进行判断或根据是否存在依赖库来判断当前设备。
本次使用判断是否存在依赖库解决:(判断方法如下)

//判断系统是否存在某个依赖库
    public static boolean hasLib(Context context, String libName) {
        String[] sharedLibraryNames = context.getPackageManager().getSystemSharedLibraryNames();
        for (String sharedLibraryName : sharedLibraryNames) {
            if (sharedLibraryName.equals(libName)) {
                return true;
            }
        }
        return false;
    }

在 Activity 的 onCreate 方法内调用:

//获取是否存在依赖库
        hasDeviceSdk = LibUtil.hasLib(this, "device.sdk");
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8214 回帖
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...