AS3针对SDK中悬浮窗的问题,或者说如何去降低targetSdkVersion
近日,在对接ANE的东西,不过用的是易接来接入渠道的SDK。
当一切准备,一切工作做完之后,发觉接入的渠道,在登录的时候都必须要求悬浮窗,但是这个时候在安卓8.0 或者 在7.1 上会出现一些问题,具体表现为要么不显示悬浮窗,要么调用之后直接奔溃。当然这个可能和渠道有关。总之也是咨询过渠道商以及易接,也走了不少怨路,最后个的答案基本是降低一下targetSdkVersion 到23以下。
然后尝试使用如下的方式去降低 在xx-app.xml里面的manifest 里面 加上
<uses-sdk
android:minSdkVersion=”8″
android:targetSdkVersion=”22″ />
然而并没有什么效果。依然会出现一样的问题。
最后在群里的大佬的指点下,让去修改adt.jar。不过遗憾的是解包然后修改里面的AndroidManifest.xml 的targetSdkVersion 然后在打包成jar 始终会报 没有主清单文件 之类的提示。然后将修改后的jar 解压确实能够发现里面的 Main-Class 并没有。尝试手动添加然后再打包依然出错。所以怀疑可能在打包成jar的过程中会修改掉。
所以修改这条路暂时好像没戏,不过本人并没有放弃,而是去降低了AIR SDK的版本号。出问题的是AIR 29 而targetSdkVersion = 27.
所以换成了 AIR SDK 22 targetSdkVersion = 21 结果成功调出 悬浮窗。不过问题在于 我不可能换成AIR 22 。所以事实证明,降低 targetSdkVersion是可行的。
不过,功夫不负有心人,通过查看jar的用法。找到一个巧妙的办法,那就是直接更新jar包里面的AndroidManifest.xml 而不是 解包 jar再打包,最后完美解决。
具体更新方法为:
将adt.jar包解压之后,去com\adobe\air\apk\ 下面找到AndroidManifest_template.xml 修改其targetSdkVersion 为22.
然后再按照这个同样的文件结构创建文件夹,并将上面的xml放进去。大概如下
com\adobe\air\apk\AndroidManifest_template.xml
最后把 AIR SDK 里面的adt.jar 复制过来 和 com文件夹在同一目录下。接着执行命令
jar uf adt.jar com
这样就把AndroidManifest_template.xml给更新了,最后打包,大功告成