使用Android 4.2.2在XPeria Z上加载本机库

时间:2013-07-15 18:32:09

标签: android native sony

重现问题的步骤: 在使用本机(C ++)库的XPeria Z(型号C6602或C6603)上从Play商店安装(付费)应用程序。该应用程序将无法在启动时找到/加载本机库。当向客户发送上传到Play商店的完全相同的apk时,没有问题,一切正常。

这个错误出现在我的两个应用程序(Audio Evolution Mobile和USB Audio Recorder PRO)上,而且错误报告似乎只来自运行Android 4.2.2的XPeria Z用户。

我已将这两个应用的apk发送给购买应用的客户,安装后运行正常。使用其他设备的其他人不会发生此问题。

1 个答案:

答案 0 :(得分:0)

我不确定这是否与您的问题完全相同,但我们遇到的问题与未在xperia z上加载的本机库有关。问题是由于付费应用程序的前向锁定,导致.so文件位于不同的文件夹中:

/mnt/asec/package_name-1/lib/libmy.so

而不是:

/data/data/package_name/lib/libmy.so

所以,如果您加载本机库,如:

dlopen(lib_path, RTLD_LAZY);

使用第二条路径,然后在XPeria Z上失败。你必须尝试这第一条路径。

要在本地重现此问题:

adb install -l my.apk

实际上从java代码加载本机库工作正常,唯一的问题是libs是用本机代码加载的。我也想知道这个路径是否可以在代码中进行硬编码:package_name-1,看起来有一天可能是package_name-2:)