我正在发布一个应用程序使用新的应用程序捆绑格式(aab)。该应用程序包括一些Armeabi-V7A的本地库。当我通过Google Play在arm64-v8a架构上安装应用程序时,它不包括没有arm64-v8a so文件的本地库。
根据https://stackoverflow.com/a/39622499/534471,armeabi-v7a库应该运行在arm64-v8a设备上(通过adb安装时运行良好,因此它确实可以工作)。
Google Play控制台根据体系结构、屏幕密度等显示了不同的apk,从apk大小我可以清楚地看出哪些apk不包括本机库。我还使用一个原生库监视器应用程序来分析安装的apk,它显然不包括我需要的原生库(如果应用程序有一个arm64-v8a so文件,它包括arm64-v8a原生库,但如果只有一个armeabi-v7a版本,它就不包括)。
我的gradle构建文件包含了一小段用于包配置的代码:
bundle {
language {
enableSplit = false
}
density {
enableSplit = true
}
abi {
enableSplit = true
// include 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
现在我的问题是:有没有一种方法告诉构建工具在每个apk中包含“下一个最好的”本机库,下一个最好的是运行在特定架构上的最接近的版本?
ps:如果我为abi设置enableSplit=false,那么它将包括本机库(正如预期的那样),但不幸的是,对于所有平台,包括x86,仅它就有20MB大...
没有必要告诉工具要为下一个最好的服务,这应该是自动完成的。如果设备报告也支持armeabi-v7a,它应该接收包含它的APK。
编辑:
根据您的屏幕截图,您的应用程序似乎为ARM64-V8A
架构提供了本机库,因此将提供ARM64-V8A
库,而不是ARMeabi-V7A
库。
还要注意,一台设备不能为同一应用程序加载不同体系结构的库,也就是说,您不能期望一些库以64位加载,而另一些库以32位加载。即使有一个包含所有ABI的“胖”APK,Android平台在安装应用程序时也只会选择一个ABI,而丢弃所有其他文件,因此,从您为ARM64-V8A
提供至少一个库起,任何ARMeABI-V7A
库都不会加载到ARM64-V8A
设备上。
编辑:
如果您不能为该体系结构提供所需的本机库,您应该考虑从应用程序中排除一些ABI。这可以使用gradle配置中的ABIFilters
块来实现:
NDK{abiFilters'armeabi-v7a','x86'}
所以...是真的需要还是我做错了什么? (当我提到应用程序链接不起作用时,我应该注意深度链接起作用,但Android仍然显示“默认应用程序选择对话框”) 更新1:我正在Android8.1上测试。我已经上传了文件。以下是我处理深层链接的活动:
这是关于PlayStore警告调试符号的 我已经成功地构建了Gradle,在添加了一行代码之后。格雷德尔(应用程序) 但是按照说明https://developer.android.com/studio/build/shrink-code当我建立一个应用程序时,我找不到native-debug-symbols.zip文件,所以我的问题是如何获得文件native-debug-symbols.zip文
我已经和这件事斗争了一天多,在SO和其他地方读了很多帖子,但我仍然有问题。 我需要在一个自包含的JavaFX应用程序包中包含我的应用程序图标。我使用的是JDK1.8.0_45及其包含的JavaFX包。我正在使用Maven构建.exe,除了我不能包含我的图标外,它都运行得很好。 下面是我的pom.xml: 使图标出现在标题栏中的是javapackager部署步骤的参数。这一行告诉inno安装程序使用
为了完整起见,我使用Oracle JDK 1.8.0_66 for Mac。
我已经编写了一个混合应用程序,它使用react原生svg在react原生视图中呈现svg图像。一切都很完美。今天,当我为我的应用程序创建release apk并将其部署到模拟器时,它崩溃了,出现了一个错误: 只有当我从proguard规则中注释时,我才会看到这个问题。专业文件。我想混淆我的apk代码(我无法控制)。我使用的proguard文件与本例中显示的类似,https://github.com
按照这里和这里的指示。我使用的是JDK7U9和NetBeans 7.2.1。我所做的是创建相对于我的项目根文件夹的整个路径(C:\users\administrator\desktop\icotest\package\windows\icotest.ico)。我同时尝试了48x48和256x256的大小。下面是我的项目Icotest的树状结构概述: 这就是build.xml的样子: