文件路径中存在"!"是什么意思?

Bowool_ 2019-10-12 10:13:49
将软件内置到system下时报错,jni库找不到,查找库的路径为
/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so
请问这个XXX.apk!代表的意思是什么?
...全文
1011 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_熊 2019-10-14
  • 打赏
  • 举报
回复
引用 6 楼 Bowool_ 的回复:
[quote=引用 5 楼 IT_熊 的回复:]
这个就不是路径问题了,看UnsatisfiedLinkError,百度搜下这个问题

但这个UnsatisfiedLinkError不是library "/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so" not found吗?从报错上来看就是这个jni没找到啊[/quote]
这个不一定,第三方app出现这个,可以参考下
https://blog.csdn.net/u014132820/article/details/83119059
https://blog.csdn.net/asla_1/article/details/80534589
系统app一般需要把so解压放到system/lib或者vendor/lib下
看你报错信息:"/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so"
你的app应该是想作为系统app运行。你尝试把lib/armeabi-v7a/XXX-jni.so 这个so push到system/lib或者vendor/lib下试试

Bowool_ 2019-10-14
  • 打赏
  • 举报
回复
引用 5 楼 IT_熊 的回复:
这个就不是路径问题了,看UnsatisfiedLinkError,百度搜下这个问题
但这个UnsatisfiedLinkError不是library "/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so" not found吗?从报错上来看就是这个jni没找到啊
IT_熊 2019-10-14
  • 打赏
  • 举报
回复
这个就不是路径问题了,看UnsatisfiedLinkError,百度搜下这个问题
Bowool_ 2019-10-14
  • 打赏
  • 举报
回复
引用 3 楼 IT_熊 的回复:
[quote=引用 2 楼 Bowool_ 的回复:] [quote=引用 1 楼 IT_熊 的回复:] 就是XXX.apk,无需太在意这个感叹号,这个感叹号意思是后面的路径不是实际存在的路径,可以理解是压缩的路径吧 /system/app/XXX/XXX.apk 感叹号后面的表示是apk里压缩路径。
在LoadedApk中的appendApkLibPathIfNeeded方法看到了这个写法,的确是第一次发现 但是比较困惑的是,解压XXX.apk是可以看到lib/armeabi-v7a/XXX-jni.so 这个路径的,但是用dlopen又的确没有打开,不知道是为什么[/quote] dlopen打开的应该是实际存在的路径。或者使用叹号这种[/quote] AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so" not found 报错就是XXX.apk!,但是这个apk内的确有打包jni,
IT_熊 2019-10-14
  • 打赏
  • 举报
回复
有些so是会出现这会错误,所以才会有将so抽取到system/lib下或者vendor/lib下
Bowool_ 2019-10-14
  • 打赏
  • 举报
回复
引用 7 楼 IT_熊 的回复:
[quote=引用 6 楼 Bowool_ 的回复:] [quote=引用 5 楼 IT_熊 的回复:] 这个就不是路径问题了,看UnsatisfiedLinkError,百度搜下这个问题
但这个UnsatisfiedLinkError不是library "/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so" not found吗?从报错上来看就是这个jni没找到啊[/quote] 这个不一定,第三方app出现这个,可以参考下 https://blog.csdn.net/u014132820/article/details/83119059 https://blog.csdn.net/asla_1/article/details/80534589 系统app一般需要把so解压放到system/lib或者vendor/lib下 看你报错信息:"/system/app/XXX/XXX.apk!/lib/armeabi-v7a/XXX-jni.so" 你的app应该是想作为系统app运行。你尝试把lib/armeabi-v7a/XXX-jni.so 这个so push到system/lib或者vendor/lib下试试 [/quote] 但是按照正常的逻辑,系统应该可以直接使用APP内部的lib库才对? 其他几个同样预制在system下的APK并没有对lib库进行特殊处理。system下也没有这几个APK的lib库文件,但是都可以正常调用lib库
IT_熊 2019-10-13
  • 打赏
  • 举报
回复
引用 2 楼 Bowool_ 的回复:
[quote=引用 1 楼 IT_熊 的回复:] 就是XXX.apk,无需太在意这个感叹号,这个感叹号意思是后面的路径不是实际存在的路径,可以理解是压缩的路径吧 /system/app/XXX/XXX.apk 感叹号后面的表示是apk里压缩路径。
在LoadedApk中的appendApkLibPathIfNeeded方法看到了这个写法,的确是第一次发现 但是比较困惑的是,解压XXX.apk是可以看到lib/armeabi-v7a/XXX-jni.so 这个路径的,但是用dlopen又的确没有打开,不知道是为什么[/quote] dlopen打开的应该是实际存在的路径。或者使用叹号这种
Bowool_ 2019-10-12
  • 打赏
  • 举报
回复
引用 1 楼 IT_熊 的回复:
就是XXX.apk,无需太在意这个感叹号,这个感叹号意思是后面的路径不是实际存在的路径,可以理解是压缩的路径吧 /system/app/XXX/XXX.apk 感叹号后面的表示是apk里压缩路径。
在LoadedApk中的appendApkLibPathIfNeeded方法看到了这个写法,的确是第一次发现 但是比较困惑的是,解压XXX.apk是可以看到lib/armeabi-v7a/XXX-jni.so 这个路径的,但是用dlopen又的确没有打开,不知道是为什么
IT_熊 2019-10-12
  • 打赏
  • 举报
回复
就是XXX.apk,无需太在意这个感叹号,这个感叹号意思是后面的路径不是实际存在的路径,可以理解是压缩的路径吧 /system/app/XXX/XXX.apk 感叹号后面的表示是apk里压缩路径。

80,492

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧