不使用assets目录能否将非标准文件打包至APK的lib目录中
非标准文件嵌入APK lib目录实现方案
无插件原生实现方案
无需额外引入插件,直接修改Android项目模块级build.gradle配置即可实现需求:
- 把目标Python目录加入jniLibs的源路径配置,打包工具会自动将路径下所有文件按照原有目录结构,直接打包进APK的
lib目录下,逻辑和jni库打包完全一致:
android { // 保留你原有android块内的所有配置 sourceSets { main { jniLibs { // 添加你的Python目录作为jniLibs的源目录 srcDirs += "/somewhere/lib/python3.x" } } } // 若打包时触发非.so文件的过滤拦截,添加以下配置放开限制 packagingOptions { jniLibs { // 按需调整保留规则,`**/*`代表保留目录下所有格式的文件 keep("**/*") } } }
- 若不需要按CPU架构拆分Python文件,可直接在
/somewhere/lib/python3.x下创建自定义子目录(比如命名为python_runtime)存放所有.py、.pyc等文件,打包后访问路径为lib/python_runtime/,安装后可直接通过App的nativeLibraryDir拼接路径读取,不需要额外解压操作。
可选插件方案
如果需要更复杂的定制化打包逻辑,可使用业内常用的Packer-NG等打包插件,通过配置自定义资源映射规则,即可将任意路径的非标准文件批量导入APK的lib目录,全程不需要操作assets目录。
内容的提问来源于stack exchange,提问作者Holmes Conan
相关产品推荐
相关产品推荐

