积累日常生活的点滴,开发过程的心得。

ubuntu上配置https

https://gist.github.com/cecilemuller/a26737699a7e70a7093d4dc115915de8

发现certbot相当牛逼,全自动配置https,http重定向, 自动更细证书.
只有一点要注意,nginx.conf必须是utf8编码的,否则可能会报错

linux下调试ffmpeg

现在只能用eclipse cdt调试了,因为clion只能调试cmake的工程, netbeans已经死掉了,重点是导入makefile的工程,编译设置要禁用asm,禁止优化

./configure --disable-stripping --enable-debug=3 --disable-optimizations --disable-asm

调试选择的应该是ffmpeg_g而不是剥离了调试信息的ffmpeg

cmake的交叉编译

win32.cmake

set(CMAKE_SYSTEM_NAME Windows)

编译命令
./configure --cmake-toolchain-file=./win32.cmake --TOOLCHAIN_PREFIX=i686-w64-mingw32-

linux下创建虚拟摄像头

https://superuser.com/questions/411897/using-desktop-as-fake-webcam-on-linux

fmx for linux相当稳健

这两天帮客户写webrtc for linux的程序,客户指定用fmx for linux,跑了一下,感觉编译很快,运行调试很流畅,比Mac 和IOS的调试要舒服很多.

算是一个相当靠谱的linux 桌面程序开发框架了.

undefined reference to typeinfo of XXX

编译webrtc遇到了这个错误,查了一下,因为有些virtual 方法,没有写实现,就会报告这个错误
解决办法是add_compile_options(-fno-rtti) ,去掉rtti
https://stackoverflow.com/questions/307352/g-undefined-reference-to-type...

手工签名Android apk

java -jar apksigner.jar sign --ks xxx.keystore --ks-key-alias key --ks-pass pass:password--key-pass pass:password--out output.apk input.apk

如何在IOS中用XCode调试Flutter的Plugin

打开plugin的Runner工程,注意这个时候你在工程中找不到plugin的Objective-C的代码,没法加断点,这时用sublime文本编辑器或者Android Studio打开*.m文件,随便添加一个编译错误的代码,用xcode点运行,它会报错并定位到错误的代码,这时你就可以添加断点了,修改掉错误的代码,点运行,就可以断在指定的位置上了
也可以用下面呢的自定义Sybolic Breakpoing的方法,但是非常不好用
https://stackoverflow.com/questions/52770209/how-to-debug-ios-native-code-in-a-flutter-plugin

Flutter里面更新git参照的pub

对于直接用git参照的pub来说

  1. flutter_vlc_player:
  2. git:
  3. url: git://github.com/chinshou/flutter_vlc_player.git

如果之前执行过pub get, 之后git更新过,需要执行pub upgrade才能得到最新的git变更,这是一个坑.

Android请求权限会导致application触发进入后台的事件

  1. PermissionsService.RequestPermissions(
  2. [
  3. JStringToString(TJManifest_permission.JavaClass.WAKE_LOCK),
  4. JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE),
  5. JStringToString(TJManifest_permission.JavaClass.RECORD_AUDIO),
  6. JStringToString(TJManifest_permission.JavaClass.CAMERA),
  7. JStringToString(TJManifest_permission.JavaClass.WRITE_EXTERNAL_STORAGE)
  8. ],
  9. procedure(const APermissions: TArray<string>;
  10. const AGrantResults: TArray<TPermissionStatus>)
  11. begin
  12.  
  13. end
  14. );

TApplicationEvent.EnteredBackground:非常奇怪

Syndicate content