VMware Fusion 12.1.0 使用 BootCamp Windows 时访问另一台局域网内 PC 主机共享文件夹显示错误

晚上心血来潮,想测试下 macOS 下虚拟机用 BootCamp 分区玩エロゲ的体验,于是下载安装了个 VMware Fusion Pro,体验版有 30 天时间,够自己折腾了。

跟着软件说明安装,导入 BootCamp 分区还是挺顺利的。不过在启动结束后,看虚拟机里的 Windows IP 为 192.168.54.X,感觉很奇怪,于是我将网络适配器调为了桥接模式(自动检测),之后再看 IP 就成了和局域网宿主机一样的 192.168.2.X。感觉看起来好多了,像新增了一台物理机器一样。

Vmware cmd ipconfig test1

不过在输入日常使用的 \\192.168.2.X 地址回车输入账户名密码之后,共享文件夹目录是显示出来了,但当我点进去一个文件夹后,没过几秒就出现 你可能没有权限使用网络资源 的错误。

经过一番搜索尝试更改组策略,更改空密码禁用选项,开启 Guest 访问,重启系统之后,发现输入正确的 用户名密码 居然弹出 无法连接到服务器……感觉不对,还是将组策略安全选项还原为原来的状态。

在调整组策略之后想到:既然 macOS 里访问没问题,BootCamp Windows 里用户密码是空密码不行,那我添加个密码也许就可以了啊。

由于原本装 BootCamp Windows 时不想记密码,偷懒设为了空密码,经过这一番折腾,最后还是加了个用户密码。添加密码后,重启系统,访问共享文件夹,还是不行。

在仔细阅读 Internet 共享网络适配器说明后,怀着尝试的心态切换到了这个选项。再见,桥接。

 

截屏2021 01 08 下午11 36 51875

在 cmd.exe 里使用 ipconfig 显示是 192.168.54.2,虽然看起来怪怪的,不过在访问局域网另一台机器的共享文件夹时,它终于不弹 你可能没有权限使用网络资源 的错误了。

至于为什么要通过 Windows 虚拟机来访问另一台游戏 PC 的共享文件夹,当然是为了直接从共享文件夹运行游戏,不能直接运行的就通过共享网络拷贝到虚拟机里运行。折腾了这么长时间,终于拷贝好了 2个游戏。

接下来先体验个周末,下周也许会写个感受。(放置高性能主机大屏幕显示器,居然使用笔记本来玩,有点问题!还不是为了感受高 PPI 便携屏幕下的エロゲ游戏体验,满足下自己那莫名其妙的欲望好了。)

Adobe Air Native Extension 开发笔记

这次 mission 的主要内容是将 Facebook 相关的库,Firebase 和 Google 登录的 SDK集成到 Adobe Air Native Extension (ANE)中去。

由于写这个笔记前后时间相差 1周多,中间经历了换电脑,换新开发环境,既有繁体文字又有简体文字。

開發環境

macOS Mojave 10.14.6
Xcode 11.2
IntelliJ IDEA 2019.2.4 Ultimate Edition
Adobe AIR SDK 32
Oracle JDK 8 Update 231

IntelliJ IDEA

如果要使用 IntelliJ IDEA 来开发 Adobe Air/Flex app 的话,需要 Ultimate 版本才能使用。

我已经订阅了很久 JetBrains Toolbox 了,不过使用频率高的只有 Rider,拿来开发正在制作的 Unity 游戏。

在和 Adobe Air 游戏开发者讨论过程中,谈到 Adobe Air 2020 年之后的 SDK 更新的时候,说是被三星的一个开发工作室接手了后续的开发工作,于是我就也去了后续新的官网上查了下,看到 Adobe Air SDK 33 的使用说明,里面有说使用 IDEA 开发 Adobe Air 应用的说明,搜索了一下,按照 IDEA 的文档进行了环境配置之后,就开始进行开发了。

目前 Air SDK 33 不支持 iOS,只支持 Android 打包,最终还是使用 Air SDK 32 进行开发了。

KeyRemap

个人习惯调成了 IntelliJ IDEA Classic

添加外部庫

Shift Shift 打開 Search Everywhere

輸入 Project Structure 打開項目配置

切換到 Modules 裏的 Dependencies

點擊 New 來進

更改最低 iOS linker 版本

更改 linker 中的 minimum ios 版本爲 9.0 之後打包顯示下列錯誤。

Undefined symbols for architecture arm64:

猜測是因爲第三方 Framework 還是沒有打包進去。

Facebook SDK Undefined symbols

Undefined symbols for architecture arm64:
  "___isOSVersionAtLeast", referenced from:
      -[FBSDKApplicationDelegate application:openURL:options:] in FBSDKCoreKit(FBSDKApplicationDelegate.o)
      -[FBSDKApplicationDelegate application:openURL:sourceApplication:annotation:] in FBSDKCoreKit(FBSDKApplicationDelegate.o)
      

看 Adobe 論壇裏討論,是這個樣子

AIR-4198557 @available keyword in ANE causes IPA build to fail

To do this without using a custom DEFINE ( and to use closed source Frameworks which use @available such as latest Firebase )

1. Copy this file /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/cl ang/9.1.0/lib/darwin/libclang_rt.ios.a
to
[AIRSDK_PATH]/lib/aot/lib/libclang_rt.ios.a

2. Add this to your linkerOptions in platform.xml
<linkerOptions>  
  <option>-lclang_rt.ios</option>  
</linkerOptions>  


Hopefully Adobe can add libclang_rt.ios.a to AIR SDK dist

*Credit to Eugene Petrenko @JetBrains
https://jonnyzzz.com/blog/2018/06/05/link-error-2/

Comment by Eoin L.

更換完 clang 編譯器之後可以自動編譯成功了。

ANE 使用 ThirdPartyLibrary 的總結

解決 Facebook 和 Firebase 最新版 SDK 集成的時候出現的編譯問題

  1. 在 Iphone-ARM 文件夾下新建 Frameworks 文件夾,將第三方庫都拷貝到裏面。
  2. 在 iOS 的 platformoptions.xml 里添加對應的 packagedDependency 定義。
<packagedDependencies>
    <!-- Facebook -->
    <packagedDependency>Frameworks/FBSDKLoginKit.framework</packagedDependency>
    <!-- ...示例中省略其它的必须的库配置 -->
</packagedDependencies>

3. 根據 AIR-4198557 @available keyword in ANE causes IPA build to fail 里的解決方法,將 Xcode 里的 clang 編譯器拷貝到 AIRSDK 文件夾對應的位置。

4. 在 linkerOptions 添加 clang 編譯器的 option

<linkerOptions>
    <option>-ios_version_min 9.0</option>
    <option>-lclang_rt.ios</option>
    <option>-rpath @executable_path/Frameworks</option>
</linkerOptions>

5. 打包 ANE,在項目中引用,啓動 app,應該就可以編譯通過了。(第三方庫已經在 packagedDependencies 里定義好了,編譯器會自動查找到 ANE 里面引用的庫進行 auto link,無須手動在 linkerOptions 里定義。)

6. 也可以尝试将第三方库拷贝到 AIRSDK 文件夹里(clang 编译器同级的位置),再尝试进行 ANE 打包。

参考链接:

  1. Adobe AIR SDK from HARMAN FAQ
  2. IntelliJ IDEA ActionScript and Flex
  3. Building a native extension for iOS and Android – Part 3: Building the iOS library | Adobe Developer Connection
  4. Adobe Flash Platform * Building the native library