qt qml 中 可以把 c++对象注入 qml engine
reac native 自从收编 nitro 之后,也获得了这种能力
我已经用qt qml 在windows/linux/mac / embed linux中写gui, 但对于android和ios 一直没有实践
1是确实没有什么项目, 2是lgpl 和商城规则或多或少存在争议
所以在知道react native也可以这么说后,我打算开始玩一玩, 尝试把我自己写的c++ 静态反射库应用于其中
于是有此笔记,将和往常一样不定时整理更新
1 配置sdk版本,及兼容的最低版本
1.1 IOS
1.1.1 SDK版本选择
sdk向下兼容是有限制的,所以想开发兼容很旧的ios系统的程序,只能下载旧的xcode版本开发,且开发后上不了架,并且ios系统不一定能运行旧版本的xcode, 想开发不上架的ios app,有可能需要装虚拟机,安装旧的系统,再安装旧的xcode,再开发
xcode 版本支持的sdk版本支持参考这里
因为apple store要求sdk需要使用较新版本,所以想上架的话, 最好在apple store安装最新的xcode,更新最新的sdk
apple store 安装完的xcode 第一次打开时可能有弹出一个选择安装sdk的版本,如果有的话把ios sdk 打钩安装
下载的xcode.xip解压的好像没有这个弹窗 ,有的话也是把ios sdk打钩安装(这试了几次都没有)
选择了xcode就等于选择了sdk 版本了,想改只能切换xcode版本
附上一些在命令行中切换 xcode和sdk版本的方法
|
|
1.1.2 向下兼容至何种版本
向下兼容至何种版本,则需要开发者指定, 且只能在xcode 支持的版本范围中选 择参考这里
有几个位置需要修改 ,以xcode 16为例,它支持 ios 16.0 - 18.2的开发, 我想兼容到16.0
…/react_active_src/ios/Podfile中的
|
|
如果已经安装过pods了,需要删除一下,重新安装 删除Podfile.lock ,还有pods目录,重新安装依赖
|
|
xcode打开工程设置
如果是真机,直接选择,不用安装simulator, 如果是simulator, 提交安装想兼容的最低版本 , 最新版本的simualtor也需要安装,否则选择不了其他低版本的simulator , 图上图我选中iPhone 14 pro,但安装了simualtor 16.0和 18.2才可以选择16.0
general 页设置minimum deployments
build setting
显示为灰色的ios 18.2是目前的xcode最新的sdk, 不管选中的minimum deployments是什么版本, 都是用最新的sdk编译的
1.2 Andorid
react native 版本影响 JDK版本, 和 Gradle 包管理器的版本 , 它们只是参与了工程构建,不影响app 上架, 根据具体使用的react native版本按需要选择
1.2.1 SDK版本选择
指定版本需要修改
…/react_active_src/android/build.gradle
|
|
不同的目录层级可能会有多个build.gradle, 但版本相关的设置都会引用根目录的build.gradle中ext中指定的版本
|
|
和ios一样, 如果想上架的话,google play也sdk版本有要求
1.2.1 向下兼容至何种版本
andorid 版本, sdk版本, ndk版本, 搭配大致可以参照下表
compileSdkVersion |
Android API | 推荐 NDK 版本 | 支持的 NDK 功能 | 支持的架构 |
---|---|---|---|---|
34 | Android 14 | r26 ~ r27b | 64位架构,arm64-v8a,逐渐放弃旧架构 | arm64-v8a, armeabi-v7a, x86_64 |
33 | Android 13 | r23b ~ r26b | 优化的性能、稳定性支持,支持 Android 12 及以上 | arm64-v8a, armeabi-v7a, x86_64 |
32 | Android 12L | r22b ~ r25c | 支持 Android 12,API 30,逐渐加入新的功能 | arm64-v8a, armeabi-v7a, x86_64 |
31 | Android 12 | r21e ~ r23b | 启用 64 位架构支持,NDK 特性基本稳定 | arm64-v8a, armeabi-v7a |
30 | Android 11 | r20b ~ r22b | 完全支持 arm64-v8a , armeabi-v7a ,向下兼容 |
arm64-v8a, armeabi-v7a |
29 | Android 10 | r19c ~ r21b | 默认支持 armeabi-v7a , arm64-v8a , 32 位/64 位 |
armeabi-v7a, arm64-v8a |
28 | Android 9 | r18b ~ r20b | 启动 64 位架构支持,目标为 armeabi-v7a |
armeabi-v7a |
27 以下 | Android 8.x | r17b ~ r19b | 不支持新的架构,只支持 armeabi-v7a |
armeabi-v7a |
截止2025年5月3日 , react native 0.79.2 的模板版本配置为
|
|
如果不考虑ndk的话,这个版本已经覆盖市场上95%的手机了, 建议开发新的app就用这个配置
而使用24的ndk版本,则说明 使用android 12以下的系统api有不兼容的风险,尽量避免不稳定的api 的使用即可
由于我主要使用c++ 和 react native进行开发,所以kotlin版本我比较不在意,暂时不探索
>> Home
Comments