NativeScript APP 开发备忘

张开发
2026/4/23 12:46:49 15 分钟阅读

分享文章

NativeScript APP 开发备忘
devtools 调试断开命令ns debug android可以开启浏览器的调试页面非常方便。一开始使用功能非常完整包括元素、日志、代码和网络后来用着用着发现元素和网络没了剩下日志和代码可用再后来用着用着连日志和代码都没了一进入 devtools 就提升已经断开。后来经同事提醒把devtools://devtools/bundled/inspector.html?wslocalhost:40000改为devtools://devtools/bundled/inspector.html?ws127.0.0.1:40000即可但是元素和网络还是没有回来不知哪里的问题。Mac OS 下安装Electorn 下载卡住了这跟 win 下安装 npm 依赖还是有点区别的。主要是这个 Electorn也不知道 ns 为什么会依赖它。下载时候无聊 npm 源还是国内的源都会遇到一个网络请求超时npm error RequestError: read ECONNRESET的问题有时还遇到RequestError: connect ETIMEDOUT 20.205.243.166:443总之就是网络问题但这在 win 上却却是没有的。后来没辙了从 win 拷贝 node_module 过来算了。幸好无论 win/macnode_module 都是一样的。启动模拟器问题先启动安卓模拟器发现报错Unable to apply changes on device: emulator-5554. Error is: spawn /Users/zhangxin/code/xxx/xxx-app/platforms/android/gradlew EACCES.原来是没权限进入目录/Users/zhangxin/code/xxx/xxx-app/platforms/执行下面命令即可chmod755android/gradlewMarketplace 市场https://market.nativescript.org模拟器黑屏在 Android Studio 里面把模拟器还原才行。真机调试安卓真机调试首先开启你手机的“开发者选项”–“USB 调试”。每个厂家的手机设置方式不尽相同这里不再赘述。设置成功之后通过 adb 命令可以查看是否连接成功adb devices使用 NativeScript 的命令亦可ns devices android原生代码调用 NativeScriptNativeScript 代码调用 Java/Kotlin/Swift/Obj-C 代码非常简单粗暴但是反过来呢Java/Kotlin/Swift/Obj-C 代码调用NativeScript 代码呢抱歉~这个没有直接支持可以说原生程序压根不知道有 ns 寄居于它上面生存没有一个接口可以让原生程序调用 ns。不过没有接口我们就提供一个呗。~这个思路是可行我们传入一个interface接口让 Java 执行便可。官网有介绍实现 Kotlin and Java 接口的方法。button.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewv){// Perform action on click}});ns 实现 Java 接口button.setOnClickListener(newandroid.view.View.OnClickListener({onClick(){// Perform action on click},}),)安卓编译打包减肥其实打包一种平台的即可就是arm64-v8a老掉牙的armeabi-v7a无须再支持x86 的份额太小。减肥后我的 app 从100M减小到37M修改build.gradle只保留arm64-v8a如果没效果就修改platforms\android\app\build.gradle。在NativeScript中接收仓库条码扫描枪的数据核心的解决方案就是使用Application.android.registerBroadcastReceiver要在 NativeScript 应用中接收 Android 设备扫描的条码数据你可以按照如下方式在Android应用程序实例上调用registerBroadcastReceiver方法constreceiverCallback(context:android.content.Context,intent:android.content.Intent){this.articleCode;this.articleCodeintent.getStringExtra(DATA);// 这里可以使用任何事件总线// 我只是用了自己创建的一个简单的系统设置this.$emit(barcodeScanned,{barcode:this.articleCode});};Application.android.registerBroadcastReceiver(com.android.serial.BARCODEPORT_RECEIVEDDATA_ACTION,receiverCallback);registerBroadcastReceiver的第一个参数是由设备厂商提供的intent过滤器。我开发的设备来自Seypos公司他们提供了com.android.serial.BARCODEPORT_RECEIVEDDATA_ACTION这个intent过滤器。第二个参数是一个回调函数用来获取扫描到的条码数据以便在应用程序的其他部分使用。https://blog.nativescript.org/receive-barcode-from-a-pda-in-ns/

更多文章