各个平台渠道都要求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 的完整包名路径应该还是原来的, 所以就指定原来的
改配置文件 从新打包 果然就好了