手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表分类:Misc

android studio安装APK时出错:INSTALL_FAILED_NO_MATCHING_ABIS

记录一下,真机编译的时候没问题,用模拟器的时候报:INSTALL_FAILED_NO_MATCHING_ABIS,查了一下原因。就是因为为了提速用了、x86的模拟,所以。。。

还好stackoverflow有人解决了这些问题:

1、http://stackoverflow.com/questions/24572052/install-failed-no-matching-abis-when-install-apk

2、http://stackoverflow.com/questions/24751350/install-failed-no-matching-abis-how-to-overcome

解决起来还是比较简单的,在app/build.grade的android节点下增加:

XML/HTML代码
  1.     abi {  
  2.         enable true  
  3.         reset()  
  4.         include 'x86', 'armeabi-v7a'  
  5.         universalApk true  
  6.     }  
  7. }  

一切就OK了,再编译的时候就:

XML/HTML代码
  1. 01/14 09:36:59: Launching app  
  2. $ adb install-multiple -r /xxxxx/app/build/outputs/apk/app-x86-debug.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_5.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_6.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_9.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_2.apk /xxxxx/app/build/intermediates/split-apk/debug/dep/dependencies.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_8.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_7.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_3.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_4.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_0.apk /xxxxx/app/build/intermediates/split-apk/debug/slices/slice_1.apk   
  3. Split APKs installed  
  4. $ adb shell am start -n "com.xxxxx.app/com.xxxxx.app.activity.StartActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER  
  5. $ adb shell am startservice com.xxxxxx.app/com.android.tools.fd.runtime.InstantRunService  
  6. Connected to process 3689 on device emulator-5554  
居然切成了10个apk.....


旧贴:fck在chrome下能正常显示

 迁移的时候发现,后台的fck编辑器出不来。以前是用firefox的所以没问题,后来也是在使用chrome的时候才有注意(新版的fckEditor早就没有这个问题了,新版已经叫CKEditor了)

1、修改admin/editor/fckeditor_php5.php ,现在应该没有人用4了,直接改5,

同名方法覆盖一下
  1. function IsCompatible()  
  2.     {  
  3.         global $HTTP_USER_AGENT;  
  4.   
  5.         if(isset($HTTP_USER_AGENT)){  
  6.             $sAgent = $HTTP_USER_AGENT;  
  7.         } else{  
  8.             $sAgent = $_SERVER['HTTP_USER_AGENT'];  
  9.         }  
  10.   
  11.         if(strpos($sAgent'MSIE') !== false && strpos($sAgent'mac') === false && strpos($sAgent'Opera') === false){  
  12.             $iVersion = (float) substr($sAgentstrpos($sAgent'MSIE') + 5, 3);  
  13.             return ($iVersion >= 5.5);  
  14.         } else{  
  15.             if(strpos($sAgent'Gecko/') !== false){  
  16.                 $iVersion = (int) substr($sAgentstrpos($sAgent'Gecko/') + 6, 8);  
  17.                 return ($iVersion >= 20030210);  
  18.             } else{  
  19.                 if(strpos($sAgent'Opera/') !== false){  
  20.                     $fVersion = (float) substr($sAgentstrpos($sAgent'Opera/') + 6, 4);  
  21.                     return ($fVersion >= 9.5);  
  22.                 } else{  
  23.                     if(preg_match("|AppleWebKit/(\d+)|i"$sAgent$matches)){  
  24.                         $iVersion = $matches[1];  
  25.                         return ($matches[1] >= 522);  
  26.                     } else{  
  27.                         return false;  
  28.                     }  
  29.                 }  
  30.             }  
  31.         }  
  32.     }  

2、修改fckeditor.js,将两个配置的False改为true即可:

JavaScript代码
  1. this.EnableSafari   = true ;        // This is a temporary property, while Safari support is under development.  
  2. this.EnableOpera    = true ;  

这两个默认是false,改为true即可。

再打开sablog的后台,就OK了。

--------纯记录,下次再手贱的时候就不需要折腾N久了

 

Tags: fckeditor

折腾两小时,sablog基本迁移成功

 折腾了两个小时左右,sablog基本迁移成功(不过我是在全新代码下的,我线上的代码有过一部分改动,估计到时候还要折腾一下)

主要是几个地方:

1、db_mysql类。目前我凡是用到的地方,都已经判断过了。可能还有坑

2、preg_replace_callback,点了很多页面,目前也基本上都已经OK了。

原程序用的是error_reporting(0),所以一些notice,warning都不会显示 。所以极大的可能是一出错就白屏。我改成error_reporting(7),大部分问题都解决了。

准备什么时候迁移的时候再试一下。(服务器上还有不少站点。还要备份数据库,太累了,升还是不升,这是个问题!)

M3U8文件简介

这两天一直在纠结视频相关。用MP4的话,直接video标签+mp4的话,默认缓冲至少要5M左右 。如果是移动端,5M 花的时间太长了。所以才尝试用m3u8来解决(嗯。ffmpeg直接支持将视频切成ts,同时生成m3u8文件。我这里就不写了。网上例子太多太多了)

以下内容来自:http://blog.sina.com.cn/s/blog_6cf7acdf0102v0xv.html

1.   M3U8文件概念
    M3U8文件是指UTF-8编码格式的M3U文件。M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

2.   M3U8文件举例

例如使用云图TV点播直播节目时,发送请求:

http://121.199.63.236:7613/m3u8/cckw1/szws.m3u8?from=bab&fun=yes&chk=y&chunk=xax&ppw=yuntutv&auth=yuntutvyuntutvyuntutv&auth=yuntutvyuntutvyuntutv&nwtime=1406515232&sign=033d5483609e6bc87987fc7d2f30a024

返回M3U8文件,文件内容如下:

XML/HTML代码
  1. #EXTM3U  
  2. #EXT-X-MEDIA-SEQUENCE:140651513  
  3. #EXT-X-TARGETDURATION:10  
  4.   
  5. #EXTINF:8,  
  6. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651513[140651513].ts  
  7.   
  8. #EXTINF:9,  
  9. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651514[140651514].ts  
  10.   
  11. #EXTINF:11,    
  12. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651515[140651515].ts  
  13.   
  14. #EXTINF:10,  
  15. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651516[140651516].ts  
  16.   
  17. #EXTINF:12,  
  18. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651517[140651517].ts  
  19.   
  20. #EXTINF:8,  
  21.   
  22. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651518[140651518].ts  
  23.   
  24. #EXTINF:12,  
  25. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651519[140651519].ts  
  26.   
  27. #EXTINF:8,  
  28. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651520[140651520].ts  
  29.   
  30. #EXTINF:9,  
  31. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651521[140651521].ts  
  32.   
  33. #EXTINF:13,  
  34. http://vapp1.fw.live.cntv.cn/cache/289_/seg0/index140651522[140651522].ts  

然后根据索引的中链接请求下载音视频并进行播放

3.   M3U文件标签及属性说明

M3U文件中可以包含多个tag,每个tag的功能和属性如下:

#EXTM3U

每个M3U文件第一行必须是这个tag,请标示作用

#EXT-X-MEDIA-SEQUENCE:140651513 

每一个media URI 在 PlayList中只有唯一的序号,相邻之间序号+1, 一个media URI并不是必须要包含的,如果没有,默认为0

#EXTINF:,

 duration 指定每个媒体段(ts)的持续时间(秒),仅对其后面的URI有效,title是下载资源的url

#EXT-X-TARGETDURATION

指定最大的媒体段时间长(秒)。所以#EXTINF中指定的时间长度必须小于或是等于这个最大值。这个tag在整个PlayList文件中只能出现一 次(在嵌套的情况下,一般有真正ts url的m3u8才会出现该tag)

#EXT-X-KEY

表示怎么对media segments进行解码。其作用范围是下次该tag出现前的所有media URI,属性为NONE 或者 AES-128。NONE表示 URI以及IV(Initialization Vector)属性必须不存在, AES-128(Advanced EncryptionStandard)表示URI必须存在,IV可以不存在。

  对于AES-128的情况,keytag和URI属性共同表示了一个key文件,通过URI可以获得这个key,如果没有IV(Initialization Vector),则使用序列号作为IV进行编解码,将序列号的高位赋到16个字节的buffer中,左边补0;如果有IV,则将改值当成16个字节的16进制数。

#EXT-X-PROGRAM-DATE-TIME

将一个绝对时间或是日期和一个媒体段中的第一个sample相关联,只对下一个meida URI有效,格式如#EXT-X-PROGRAM-DATE-TIME:

For example: #EXT-X-PROGRAM-DATE-TIME:2010-02-19T14:54:23.031+08:00

#EXT-X-ALLOW-CACHE

是否允许做cache,这个可以在PlayList文件中任意地方出现,并且最多出现一次,作用效果是所有的媒体段。格式如下:#EXT-X-ALLOW-CACHE:

#EXT-X-PLAYLIST-TYPE

提供关于PlayList的可变性的信息, 这个对整个PlayList文件有效,是可选的,格式如下:#EXT-X-PLAYLIST-TYPE::如果是VOD,则服务器不能改变PlayList 文件;如果是EVENT,则服务器不能改变或是删除PlayList文件中的任何部分,但是可以向该文件中增加新的一行内容。

#EXT-X-ENDLIST

表示PlayList的末尾了,它可以在PlayList中任意位置出现,但是只能出现一个,格式如下:#EXT-X-ENDLIST

#EXT-X-MEDIA

被用来在PlayList中表示相同内容的不用语种/译文的版本,比如可以通过使用3个这种tag表示3中不用语音的音频,或者用2个这个tag表示不同角度的video在PlayLists中。这个标签是独立存在的,属性包含:

  URI:如果没有,则表示这个tag描述的可选择版本在主PlayList的EXT-X-STREAM-INF中存在;

  TYPE:AUDIO and VIDEO;

  GROUP-ID:具有相同ID的MEDIAtag,组成一组样式;

  LANGUAGE:确定使用的主要语言

  NAME:人类可读的语言的翻译

  DEFAULT:YES或是NO,默认是No,如果是YES,则客户端会以这种选项来播放,除非用户自己进行选择。

  AUTOSELECT:YES或是NO,默认是No,如果是YES,则客户端会根据当前播放环境来进行选择(用户没有根据自己偏好进行选择的前提下)。

#EXT-X-STREAM-INF

指定一个包含多媒体信息的 media URI 作为PlayList,一般做M3U8的嵌套使用,它只对紧跟后面的URI有效,格式如下:#EXT-X-STREAM-INF:有以下属性:

BANDWIDTH:带宽,必须有。

PROGRAM-ID:该值是一个十进制整数,惟一地标识一个在PlayList文件范围内的特定的描述。一个PlayList 文件中可能包含多个有相同ID的此tag。

CODECS:不是必须的。

RESOLUTION:分辨率。

AUDIO:这个值必须和AUDIO类别的“EXT-X-MEDIA”标签中“GROUP-ID”属性值相匹配。

VIDEO:同上

参考文档:

http://blog.csdn.net/jwzhangjie/article/details/9744027

http://www.xuebuyuan.com/1726264.html

--------EOF--
上述的内容中有几个标签是必须 的
1、#EXTM3U
2、#EXT-X-TARGETDURATION:10,这个好象一定要是整型。否则可能会认不出
3、#EXTINF:8, 这个数字就是下面一行视频对应的时间长度,可以是浮点型
4、#EXT-X-ENDLIST ,如果是直播这个可以不要,否则还是留着吧
 
本来我是用PHP+Ngx_http_mp4_module来生成的。直接将视频处理成start=? &end =?,然而看起来很美,这些数据可能会破会源文件,导致在实际播放的时候会不正常,直接就卡住,看浏览器的网络管理中会发现,文件读取失败。
所以最终没办法,只有靠ffmpeg进行文件切割。这时候就相对能看得出了。即使你约定按20秒切分,切出来的文件也是不一样的大小的,而且时长还真不能保证都一样是20s,果然 所谓的无损分割是有讲究的。这里就不深究了。
换成m3u8后,配合ngx_http_accesskey_module可以做一些简单的鉴权。防盗链吧。
总算还好。最终还算是搞定了。做个笔记
 

Tags: m3u8

show一个Uber该死的BUG

自从升到IOS正式版后,Uber就再也不能用了。为咩?原来是这货的一个BUG(也可能不是,就纯粹是为了炫耀效果也未必)

 
如果你的手机性能不佳,你可能关闭了那个动态效果,然而uber的这个bug就是。。。你如果关了动态效果,你就不能叫车,因此如果你发现uber其他功能正常,但就是不能叫车。
这时候你进:设置->通用->辅助功能->将减弱动态效果关闭
 
再退出uber重进,你能发现又可以开始叫车了。