adobe air类app 接入腾讯开放平台移动游戏使用带tencent包名前缀的问题

作者:Panda Fang

出处:http://www.cnblogs.com/lonkiss/p/4209159.html

原创文章,转载请注明作者和出处,未经允许不可用于商业营利活动

---------- 2016-09-16 更新 -------------------------------

不同的商店市场渠道对包名有不同的要求,一般cp的包名最后面加上他们渠道的名称标识,比如 xx.yy.zz.uc , xx.yy.zz.huawei  而腾讯比较奇葩, 要求加前缀。 但是adobe air sdk 打包apk后 总是自己在包名加上 air 前缀, 那就不合腾讯的要求了, 分割线下面是原来的解决办法。非常麻烦!

其实有更好的解决方法, 参见 解决adobe air sdk打包 apk后自动在包名前面加上air. (有个点)前缀的问题

---------- 以下是 2015-01-07 发布的 -----------------------

各个平台渠道都要求apk包名带上自己的,显然为每个平台去弄一个不同包的项目代价太大。对于原生android app(应用)可以在AndroidManifest.xml 改package的值, 然后其他类activity service等类名指定的时候改成用完整包名就解决了。 但是用adobe air 平台的android app (应用) 却比较特殊和麻烦,资料也少。

用apktool 解包

修改AndroidManifest.xml

1 、package="air.app-xml中定义的id"  改为  package="com.tencent.tmgp.在腾讯平台注册的名称"

2、android:name=".AppEntry" 改为 android:name="air.app-xml中定义的id.AppEntry"

红色内容根据每个项目的情况具体而定

从新打包, 签名。

-------------------- 问题是如何解决的分割线 -----------------

做过android,知道在AndroidManifest中,package 是指定相对包路径的基准, 在activity中指定类名时用 ".XxxActivity", 则运行时加载类会自动加上基准路径, 但是如果指定 "com.xx.oo.XxxActivity" 则是使用绝对路径。 开发时用的包名不同,而上传腾讯平台解析包名是解析package, package要指定为带腾讯前缀的。 修改了package, 则配置文件中其他所有组件应该用自己工程中的绝对完整路径保证类加载正确。

刚开始只改了 package,logcat报错 AppEntry 因为包路径错误找不到类,无法实例化。 后来在AppEntry 又加上腾讯的包名,以为全路径就能解决,还是同样报错。

突然想到 既然 AppEntry 是自动生成的 那么生成swf时,它的包路径是不是默认就根据app-xml 的 id 就生成好了,就是AndroidManifest原来的包名, 后期manifest xml  package 改了, 但是appentry 的完整包名路径应该还是原来的, 所以就指定原来的

改配置文件 从新打包 果然就好了

上一篇:Adobe AIR 中为不同尺寸和分辨率屏幕适配


下一篇:解决adobe air sdk打包 apk后自动在包名前面加上air. (有个点)前缀的问题