mac 软件连续两个版本都被 apple store 以
Guideline 2.5.1 - Performance - Software Requirements Your app uses or references the following non-public or deprecated APIs:
Info
• Contents/Resources/app.asar.unpacked/node_modules/bigint-buffer/build/node_gyp_bins/python3/_Py_Initialize
• Contents/Resources/app.asar.unpacked/node_modules/electron-deeplink/build/node_gyp_bins/python3/_Py_Initialize
这个理由驳回了,说是编译出来的包被他们检测用到了 _Py_Initialize 这个方法不符合规范
目前我有这几个问题: 1.我在代码包括 node modules 里完全搜索不到这些方法的使用,不知道为何会被审核反馈使用
2.很多提示有问题的依赖都是一些其他依赖的内部依赖,我没办法直接去升级或者替换
3.还有几个依赖是十分核心的依赖,几乎没有办法去替换
4.我们已经发布了至少十几个版本,直到这个版本才被告知有这些问题
求教万能的 v2 童鞋有没有类似的经验,如果能给到帮助,愿意有偿求助!
1
ChrisFreeMan 2022-12-17 20:30:56 +08:00 1
看起来是 node 的编译工具 https://github.com/nodejs/node-gyp 的问题,调用了系统的 python3 ?
|
2
spikedingo OP @ChrisFreeMan 我们的 mac 包是在 github actions 上进行编译的,请问这个有办法改善吗
|
3
ChrisFreeMan 2022-12-17 20:45:02 +08:00
我就不负责任的猜一下,你们的应用应该是违反了 App Store 的沙盒应用( App sandbox )的规范,解决的办法应该是检查一下 electron app 是否正确打包,以及替换掉那些调用外部接口的包,现在 electron 的官方打包工具应该是 electron-forge. 顺便看一下官方文档的 https://www.electronjs.org/docs/latest/tutorial/mac-app-store-submission-guide 这个说明,里面有 app sandbox 规范的链接.详细的我就不清楚了,等一下其他的大佬吧。
|
4
showme1121 2022-12-17 21:42:29 +08:00 1
_Py_Initialize 这个符号, 在针对产物进行字段检索的时候, 应该是可以检索出来的吧? 能否想办法把写歌字段替换掉。
另外你列的第四点, 已经正常迭代了 N 个版本之后被审核 ban 掉这在苹果这边还是一个比较普遍的事情 |
5
wdlth 2022-12-17 22:53:11 +08:00 1
你用的 bigint-buffer 和 electron-deeplink 两个组件都依赖了 node-bindings ,应该是把 node 用的动态库也打包进去了……
https://github.com/nodejs/node-gyp/issues/2713 我看有人通过把文件删除来解决 |
6
spikedingo OP @wdlth 请问删文件是对打包出来的 package 再做删文件操作吗?这块不是很理解,感谢指教
|
7
spikedingo OP @showme1121 谢谢回复,写字段替换掉是针对最终产物?请问有没有相关的文章或者案例可以指导如何这样做?
|
8
wdlth 2022-12-18 19:33:40 +08:00 1
@spikedingo 可以参考页面下面几个的解决方式,比如这个:
https://github.com/siphomateke/deezer/pull/23/files 就是在封装 asar 前把那两个组件里面的 build/node_gyp_bins/python3 这个目录删掉。 |
9
x250881478 2023-03-07 11:36:58 +08:00
参照你们的回复, 自己弄了个方法, 去除 node-pty 生成的 node_gyp_bins 文件夹
electron-builder 配置项里的 afterPack: afterPack: async (pack) => { const dir = join(pack.appOutDir, 'PhpWebStudy.app/Contents/Resources') const optdefault = { env: process.env, cwd: dir } if (!optdefault.env['PATH']) { optdefault.env['PATH'] = '/opt:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin' } else { optdefault.env[ 'PATH' ] = `/opt:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${optdefault.env['PATH']}` } execSync('asar e app.asar app', optdefault) execSync('rm -rf app/node_modules/node-pty/build/node_gyp_bins', optdefault) execSync('rm -rf app.asar', optdefault) execSync('asar pack app app.asar', optdefault) execSync('rm -rf app', optdefault) console.log('afterPack handle end !!!!!!') return true } 里面的 PhpWebStudy 换成自己的 app 名字 |