前缀:
关于什么是ANE,如果您都能搜索到这篇文章的话 相信已经不用我过多介绍了。但是还是会发一篇基础教程:点我传送
项目进行到了接入运营商的阶段。而国内除了91等几家声名显赫的运营商会提供已经做好的ANE给ADOBE 的移动开发者之外。其他的运营商一般只会提供IOS封装库 或者是Android 的JAR 封装库。这对于Air For Android 开发的移动应用来说。接入这些运营商就需要应用开发者自己实现ANE。
这几天一直在做android运营商的接入。这里就先把这几天的心得先发上来。大概下一次就会把Air For IOS Of ANE 的心得一并发在这里。
针对Android的ANE打包:
配置JAVA android开发环境 配置各自系统变量等略过。
首先说说我这次拿到运营商提供的JAR库的结构。(如果你拿到的SDK组成和我这次的大同小异,那你可以看完省很多弯路 如果你拿到的SDK比我拿到的复杂 那你仅仅可以参考其中的一些资源打包等方法。很多情况还是有不同的)
我这次运营商提供的有 :
A.JAR库文件一个;
B.还有布局文件库(res文件夹下的一堆UI布局文件);
C.原生android写的DEMO一个;
D.开发文档若干;
接下来说说我从拿到SDK到实现ANE登录接入的过程(由于打包ANE主意事项非常非常的多,稍微错一步 如果没有及时发现,就会郁闷一整天):
1>这里我们需要动手术的只有 A,B ;C只是作为我们实现AS接口的时候的JAVA端编码结构参考DEMO;拿到手后 提醒下大家 应该把D 开发文档仔细研读,我今天就因为这个问题差点和运营商接头的CODER打了一架。淡定淡定。脾气还是不够好。(因为我问一个资源的路径 都说了整整一个下午 对方才知道我要的是什么。。也许是我的表达能力实在不行,好吧 )。
2>把开发文档仔细又仔细的读过一遍之后 我整理了一下思路,我的思路是:自己写一个JAR实现和AS的拓展接口,在自己写的JAR中调用运营商提供的第三方库。从自己写的这一个JAR为跳板 实现接入的最终目的。我相信大家的思路基本都是一样的。
3>分析第三方JAR 和布局文件。把第三方JAR解压发现里面含有图片等资源,(我对android原生开发不太了解,不过据我搞原生开发的朋友说 在JAR中打入资源图片 是一种不可取的方式。),我们都知道 ANE打包的大部分都是源码,是针对源码的拓展。网上很多教程的打包ANE 其实导出自己写的JAR方式都是有误的,其实正确的方法是 取在BIN文件夹中 的那个自动生成的JAR,这个JAR最纯粹 不包含其他杂质。如果是用ECLIPSE直接右键项目打包出来的JAR的话 也是可以用的,但是这个包包含了太多太多没有用到的东西。这样根本是不利于维护的,如果下一位开发者要对你做的ANE进行维护(平台SDK更新 ANE同步更新等情况),解压出来你的一堆东西 会困惑不已的。
所以打包JAR 这里推荐直接 是拿ECLIPSE自动生成的那个 纯代码无杂质的JAR。注意即使是对于有资源的第三方JAR,取的自生成JAR 依然是去BIN文件夹下自动生成的那个,不要去导出JAR 那会大很多,针对移动设备来说 APK大小 和用户的下载量是能构成正比的。
自己构建的连接AS的JAR库编码结构直接找开头的传送门去看入门教程。这里全部都略过。
4>打包成最后的一个JAR,可能很多人疑惑,不是已经自动写了一个JAR么 怎么还要打包成最后一个JAR,原因是这和ANDROID开发的机制有关,这和我们AIR开发不一样,我们AIR开发使用那个SWC 在打包APK的时候 这个SWC都会自动会加进去,但是这里android调用JAR 仅仅是保留调用而已。也就是说 我们的JAR 调用了 运营商的第三方JAR 之后 生成的JAR 仅仅是几个源码文件而已,并没有包含这个第三方JAR。
这里把 我们写的JAR 第三方JAR 打包成最后一个JAR 就是这个ANE 生成的最需要注重的部分。在几天的摸索之后,发现天地会某兄台的方式可以拓展并使用。原帖传送,使用这里方法提供的命令行如下:
[cc lang=”java”]@echo off
::转到当前盘符
%~d0
::打开当前目录
cd %~dp0
::你做的主JAR包的路径
set MainJar=MYANEJavaLib.jar
::第三方JAR包的路径
set ExternalJar=3rdApiLib.jar
::第三方JAR包顶级包名称
set packageName=com
echo =========== start combin ==============
::解压第三方包
jar -xf %ExternalJar%
::合并主JAR包
jar -uf %MainJar% %packageName%
::如果还有别的顶级包可以接着合并,例如:
::jar -uf %MainJar% %packageName2%
::jar -uf %MainJar% org
::jar -uf %MainJar% cn
echo =========== over ==============
echo 再点一下就结束了–小Q
pause
[/cc]
我们就在最后的合并中拓展下。最后的合并顶级包中,在我解压出来的运营商的JAR中 是有好几个顶级包的,如图
其中ASSETS 就是所包含的资源文件夹,我们不需要打进去,其中另外的两个 也是源码文件夹。一并打进去。只要修改打包命令行就可以了。现在把资源文件夹提出来。接下来说资源的处理
5>打包ANE重中之重之 打包资源。
打包资源是我搜索的所有朋友都会遇到的问题。在ADOBE的官方教程中 提到的也 只是只言片语。毫无教程可言。但是对于这个问题是不是没有办法了呢。其实并不是。接下来是我总结的资源图片 和布局文件的处理方式。说是打包 其实也不算是打包。其实有方法可以避免资源问题,那就是和运营商沟通,使用动态路径取资源。在初始化SDK的时候 传入资源文件路径 等 是最完美的解决方式。但是但是但是但是。。有那个运营商会听你说呢?答案是根本没有。
我们总是不能让运营商听我们的话。而只能选择自己的方法解决问题,因为老大的期限摆在那里。你拖一分 挨骂的几率就大一分。
打包资源文件 分为两种:
A,这一种在ADOBE的官方文档中有一句话提到了。就是关于RES文件夹下的文件,处理方式是在打包ANE的时候 把RES文件夹全部复制到响应平台的文件夹下,例如Android-ARM,Android-x86,Windows-x86 ,下(不要告诉我 你不知道这几个文件夹怎么来的。。如果实在不知道 请点开文章开头的传送门。)
就像这样:
这是91的打包方式,91的接入把资源全部放到res文件夹下,这种情况下即使91不提供ane 实现91的ane也是最最简单的;
B,如我这次遇到的情况,资源在外面。在ASSETS文件夹下。我们都知道ASSETS是android项目默认的资源文件夹?(不知道真假 但是我看过的几个项目都是这样的),这种情况下的解决方式是(感谢A闪提醒)把ASSETS下的文件或者文件夹(注意注意注意!!并不是连同ASSETS文件夹 而是ASSETS文件夹下的所有文件 文件夹)复制到你的AIR项目的src文件夹下 就是源文件文件夹下(注意注意注意注意!!是你的项目的src文件夹 不是ane文件夹)。这样打包APK的时候 会把资源放在你ane可以调用的地方。
总结的来说就是:打包ANE的时候 资源如果是ASSETS的话 就放在ane外部 并不是打包进去ane。
OK 总结完毕。
附打包ane命令:
大哥~我最近在弄支付宝的ane搞了几天没搞好,希望能指点一下啊,能加qq么 308203080 谢谢了
稍后写一个详细的教程
大哥教程在哪里哇 !我想看看
http://www.shadowkong.com/archives/tag/ane
遇到的棘手问题都找到了解决方案,感谢~
除了91,还有哪些运营山有提供ane?
91 点金 UC 会提供。小米ANE源码我给他们官方了 不知道他们会不会开放。。另外 我把我写的ANE源码全部分享了。。项目地址:希望能帮到你。https://github.com/platformanes
您好,想请教一个问题:我最近做MM android接入的时候,发现MM的接入jar包中有一部分资源在jar下(不再res和assets下),请问你有没有遇到这种情况,怎么样解决?。。。上次遇到一个人使用了先打包apk,然后解压,把资源放入,再打包成apk的解决方案,他成功了,我试了下,擦,失败了。这中间不知道什么地方错了。请问你有其他的打包方法么?
1.如果jar的资源 是在res文件夹下把jar的资源取出来放到 android-ARM文件夹下和res合并 打包进去ANE
2.如果是在assets文件夹下 则取出来打包进APK
3.是MM内付费么?www.shadowkong.com/platformanes 我做了一个测试版的MM内付费 你可以参考下。
你好我上github上看了你们那个项目,好像就是按正常ane打包一样的(没有看到对这三个资源有处理的部分),或许是我还没看明白么,请指教下,给下qq@Rect
这篇教程里面专门有讲处理assets资源 处理res资源的部分。注意红色的字体,github的ANE资源是我已经处理好了的。@忧小小
我试了一下你项目的\androidMM-master\androidMM-master\aneTest 下的mm.apk(这个是项目最终打成的apk吧?),其实它是没有初始化成功的,没有回调或是回调是null,看android logcat 提示failed to find resource file(mmiap.xml) apk中缺少mmiap.xml、VERSION、CopyrightDeclaration.xml这三个文件(我在上面说的那三个资源,它们在mmbilling.2.1.0.jar里面,但不在assets或是res目录下,所以我才那样问啊)。
@Rect
嗯 我注意到了这个问题 我研究下。如果是解压复制进去肯定不完美。 可以尝试下反编译@忧小小
使用apktool么,我不太会,试了几次,这几个文件都没有打包到apk….哎。。。@Rect
搞定了。哈哈@忧小小
我也遇到这个问题了,请问下你是怎么解决的@忧小小
我提供一种方案 你试试:
1.按照我github上的方式 打包APK
2.用压缩工具把三个文件 (两个XML 一个VERSION)放进包跟目录
3.重新签名
4.我这种方法并没有成功 由于我没接过这个平台 不知道CopyrightDeclaration.xml中的key是否是平台方单独给的。
5.其实这个问题还有一个一劳永逸的方式,就是修改SDK代码,把获取这三个文件的路径给它改到资源文件目录。但是这对技术要求比较高,需要能读懂反编译代码。@忧小小 @浪客剑心
有一个问题不太清楚,打包jar的最优方案是不是把bin里的jar和libs里用到的库合并为一个jar,然后和res一起生成ane?
没有最优方案 只有对于你最适合的方案。我个人比较喜欢把东西都细化 所以我的ANE源码中都是一步一步来的,例如zrong兄就讲究高效,把ane的生成简化到修改一点点java代码然后就一键生成的水平了。@airycanon
呃,可能我表述有点问题,在你文中提到的,推荐直接从jar项目的bin文件夹中拿jar来打包ANE,但是我把bin中的jar和导出的jar比较发现,前者没有libs文件夹,里面包含了android.jar和FlashRuntimeExtensions.jar,是否需要把这两个库与bin中的jar合并,才是一个完整的jar?
A.直接去bin文件夹去jar 比较好,这个jar只包含你写的代码,最干净。你可以把两个方式取的jar反编译看看。B.不需要合并 不需要管android.jar和FlashRuntimeExtensions.jar @airycanon
昨晚测试ANE,用bin中的jar打包,最终生成的ANE没有作用,而用导出的jar打包的ANE则功能正常,对比一下,两者的区别主要是后者包含了android-support-v4.jar及FlashRuntimeExtensions.jar这两个库,跟你确认过不需要这两个文件的,现在百思不得其解,可否帮忙看看是什么原因?
非常确定,我的所有ANE都是取的bin文件夹下的jar。FlashRuntimeExtensions.jar这个类的函数本身在打包APK的时候AIRSDK给会加上,具体你我建议你详细看看我写的教程 其中有一步是讲合并jar的 @airycanon
哥 求指点, 为什么把资源放在android—arm下 就发布不了了 是资源的问题么
请问报什么错误?你看看这篇文章看看是否能解决您遇到的问题。http://www.shadowkong.com/archives/1132 @兜来都去
@Rect
哥你 qq好多 我被这个搞闷了 就是 机锋支付平台sdk 打包ane 我再怎么搞都没成功不知怎么回事,你能不能帮我解决下
如果不涉及商业机密的话,请把SDK发到我的邮箱。我晚上写一份通用的ANE。rectvv[at]gmail[dot]com.(涉及你项目的key注意去掉) @兜来都去
上面的那个问题 你是说写法有问题 我改了 它又抱错
哎 我给你描述下 gfansdk_pay.jar 这个就是机锋sdk提供的jar
res 里面有很多资源,布局文件, 图片,应用的字符等,问题就是 air所生成的app 他要用到很多这个gfansdk_pay.jar 所提供的activity,我在怎么搞都整不出来,就比如说你没登陆,它会弹出登陆界面,等很多,我晕额… 我也把 jar合成了 就是看你提供的那个发法,res也放在了android-arm 里面,
我给你说嘛, 原声里面它就一句话就可以实现 支付了如下:public FREObject call(final FREContext ctx, FREObject[] obj) {
// TODO Auto-generated method stub
if(RectContext.pay!=null){
pay();
}
return null;
}
public void pay() {
// TODO Auto-generated method stub
Order order = new Order(“product name”, “product description”, 10,”order” + System.currentTimeMillis());
RectContext.pay.pay(order, new GfanPayCallback() {
@Override
public void onSuccess(User arg0, Order arg1) {
// TODO Auto-generated method stub
}
@Override
public void onError(User arg0) {
// TODO Auto-generated method stub
}
});
}
我真的晕啦
行我发给你
哥你邮箱好多 我怎么没看到
http://dev.gfan.com/ 已找到下载地址。我按照官方的打包好了。@兜来都去
我的 qq 1623326939, 邮箱1623326939@qq.com 求份ane呀 就是它的整个过程求哥详细指点呀 我很笨呀
哥 求全过程 你弄好了发给我吗 非常感激呀
稍等 弄好我会上传到github到时候你去pull就OK @兜来都去
我才毕业呀 你发下我qq嘛 哥你可以建个你不用的qq嘛 1623326939@qq.com 哎都还不知道有
github这玩意
弄好打包发你邮箱。淡定撒。@兜来都去
淡定不了呀
你弄好了说一声嘛 我去看
ANE源码已发,请查收,另Github地址:传送门。@兜来都去
哥你能不能直接给我个ane 直接打包好的 和一个测试ane的 还是有错,晕
给你源码了啊,我机器编译的你不一定适用撒。ANE源码 测试DEMO源码都给你了。@兜来都去
res 是放在 android-arm下嘛 然后和并 gf的jar和你写的那个jar嘛,我发给你你看下怎么回事
哈哈 主要是太笨了
师兄 求ane呀 我晕 不然没发弄呀,
报这个错 创建文件出错 error: this attribute must be localized(at text with value)
参考这篇文章。传送门 @兜来都去
哥 就是给力
我编译的ANE生成文件 DEMO 包括 APK文件 全部已发。你现在完全可以只拿ANE来用。希望可以帮到你。@兜来都去
还是不行呀
麻烦你花一点点时间认真看看我的教程吧。传送门 @兜来都去
师兄 果然ane有问题 能打包apk了 你给我的正常运行
师兄 为什么我用你给我的jar 给我的res 打包ane不能运行 而你的ane运行,是不是版本问题
您是否能认真的,仔细的,详细的,稍微花一点点时间,去看我写的ANE完全教程。你问的问题那里我全写出来了。如果再有问题我们在往下讨论,你看是否可行。传送门:http://www.shadowkong.com/archives/1090 @兜来都去
师兄的教程我完全看了 真的呀 它就是点不出来
如果你看了我写的教程,你就应该知道你的res之所以不能用,是由于A.没有android文字国际化,B.资源ID取不正确。这两个原因。而这两个问题的解决方式我也分析出来了。显然你没仔细看嘛。@兜来都去
哎 总与搞出来了 师兄就是给力 为期5天的ane也就到一段落了,感谢哥呀
师兄 你呢个工具类怎么用不了
师兄 就是最后的app.xml直接复制原生demo 的嘛
楼主,请问,我在打飞流的ANE时,打入RES资源后,打包APK就报错
aapt tool failed: (skipping index file ‘C:\Documents and Settings\Administrator\Local Settings\Temp\f328009e-a228-4eb3-9eb8-8852f8dc81ad\res\drawable-hdpi\Thumbs.db’)
Warning: AndroidManifest.xml already defines versionCode (in http://schemas.android.com/apk/res/android); using existing value in manifest.
Warning: AndroidManifest.xml already defines versionName (in http://schemas.android.com/apk/res/android); using existing value in manifest.
Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.
Warning: AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.
是怎么回事啊?
这次发现了一个问题 师兄,我现在在做 有米广告ane 者的很神奇, LinearLayout adLayout = (LinearLayout) findViewById(R.id.adLayout);
AdView adView = new AdView(this, AdSize.SIZE_320x50);
(adLayout.addView(adView);)加了这句就不行了
就报错了 上面那个已经能独立做了
仅仅这几句?没包ERROR啊 只是警告。Warning直接无视就OK@不朽尸王
ane 也打包了 但是一进去就秒退
是这么回事,主activity 要启动别的 activity 在启动的activity用到广告sdk的内容,以前你写的那个如何启动别的activity我看了 也实现了,但是在启动的activity中用到sdk后, 一点击启动的activity的按钮后,程序报错 说意外出错,爱这种东西没哥指点,死都做不出来
师兄真的问你呀 以前那个弄出来了 现在这个怎么回事吗
A.意外退出,B.秒退,C.NullPoint 等情况一般都是由于程序取不到资源ID或者资源ID错乱导致的,android程序和很多OS的程序都有一个共同点,就是在操作系统载入它运行的时候 会特定给给一块内存让它访问,(如果您有兴趣 可以仔细研究一下被解剖得非常详细了的PE文件结构和XP的PE载入器原理)如果它试图访问没权限的内存 系统就会直接把程序Kill掉。你的这些问题不够详细我无从解答。PS:程序员周末要多多户外运动 无论你是师弟还是老油条。@兜来都去
请问兄弟打包时出现
C:\Documents and Settings\Administrator\Local Settings\Temp\e15e65ca-a229-422a-8928-07039baf4b07\res\layout\activity_main.xml:14: error: Error: This attribute must be localized. (at ‘text’ with value ‘ 返回’).
C:\Documents and Settings\Administrator\Local Settings\Temp\e15e65ca-a229-422a-8928-07039baf4b07\res\layout\activity_main.xml:64: error: Error: This attribute must be localized. (at ‘text’ with value ‘账号管理 ‘).
错误怎么回事?
请详细阅读这篇教程。里面分析了这个错误的原因和提供了解决方式。传送门@不朽尸王
@Rect
没有任何提示就退啦 , 就是多写了一句有米广告的语句 就有这玩意,如果只是启动biedeacyivity没有问题前提是没有有米sdk的语句。怎么解决这玩意,我一周上六天班,师兄好幸福呀
http://www.youmi.net这地址可以下它的广告师兄帮我弄一下,
怎么说还是资源出问题了。
资源 师兄,这资源不只是布局文件的资源,我可以保证布局资源没问题,我没加有米sdk语句,他就能正常显示,加了就不行了
请问我在打包APK时遇到
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cec4c0dd-6c9e-471e-bfc5-64ed10a2b546\AndroidManifest.xml:58: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Transparent’).
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cec4c0dd-6c9e-471e-bfc5-64ed10a2b546\AndroidManifest.xml:63: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Transparent’).
C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\cec4c0dd-6c9e-471e-bfc5-64ed10a2b546\AndroidManifest.xml:68: error: Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Transparent’).
错误,看起来不像是编码问题,好象是找不到资源,兄弟遇到过吗
No resource found.显然资源没打包进ANE。@不朽尸王
额,多谢提醒,确实是资源没有打进去@Rect
请问,兄弟遇到过打包APK时要打入一个lib文件夹在,res同级目录吗?
@浪客剑心 @Rect
抱歉,好久以后才看到。我把这类在使用fb打包时不见的资源称为第三类资源,MM,小米,360的接入的时候都会有这种资源需要打包到apk(就是直接项目路径下,或是jar目录下的文件),是不能打包到ane(res)和放在air项目下(assets)就能成功的。以下是我的步骤(我上面说的三个渠道使用这种方法都已经成功)
1.先使用fb打包出apk.
2.a.使用jar命令解压apk
b.把这类资源放入到解压的目录中(删除签名相关)
c.使用jarsigner命令重新打包签名
bat命令:
set pa=%cd%
echo %pa%
cd %pa%
cd oyp
jar -xf 123.apk
del META-INF\CERT.RSA
del META-INF\CERT.SF
copy ..\libcasdkjni.so lib\armeabi-v7a\libcasdkjni.so
copy ..\libidentifyapp.so lib\armeabi-v7a\libidentifyapp.so
copy ..\CopyrightDeclaration.xml CopyrightDeclaration.xml
copy ..\mmiap.xml mmiap.xml
copy ..\VERSION VERSION
del 123.apk
jar -cf 1234.apk .
jarsigner -verbose -keystore ..\**.keystore -storepass ****-keypass ****-signedjar oyp-sign.apk 1234.apk android.keystore
echo =========== over ==============
echo 再点一下就结束了–小Q
pause
你好 我想请问一下,我现在手上有个叫做mimigigi平台的SDK,里面有相应mimigigi的jar文件,这个jar文件中提供了通过facebook提登录后获取的openId来注册他的平台的账户的功能,而我们游戏需要接入mimigigi平台,这种情况是否需要将facebook的jar和res资源一起打包到ane中。
应该有给demo的 把demo里面连接的jar打包即可@kanontang
你好 我的ane打包后无法使用,想请教一下可能的原因和解决方案。我们的情况是 有3个jar包合并成1个jar包,2个jar中都有res资源,我在合并jar包后把 2个res目录合并成了一个res目录,layout 配置文件里中文和英文我也替换过了。
打包ane后 我们打印出来的log发现,sdk中的View loginBeanfun = loginUI.findViewById(R.id.ib_login_beanfun); loginBeanfun返回为null。我们想把findViewById取资源的方式改成_context.getResourceId(“R.id.ib_login_beanfun”);但是发现这是平台sdk内部的方法且封装到sdk主文件内调用的。所以这个_context是无法获取。
求指点。。
资源没合并好.检查是否有遗漏,更详细的请查看我关于RES资源处理的文章,and 假期愉快@kanontang
大哥,https://github.com/platformanes/,这个网站为什么唯独没有91的,哥,亲哥啊,上传一下吧
91的官方有提供ane。@大哥我爱你
@Rect
我用你们的小米ane,但是一直报 登录失败 -2 这是什么原因
朋友,请问像那种他给的jar包里面包含asset的怎么处理呢
解压出来,打包到项目中。@毛腊肉
抱歉现在才看到,小米的SDK应该早就更新了。把SDK源码和资源替换成最新的吧@小齐
您好.首先感谢您上述攻略的分享, 其次 想请教,关于 第三方SDK 需要传递activity 该如何操作.
直接传递 context.getActivity()便可,用法例如这个类的 第59行。@yen
@Rect
搞定了,谢谢,原来不是activity的问题, 是我meta-data没取到第三方的配置..是我粗心写错地方了.
@yen
您好,还有个问题..在把res打包进Android-ARM,这是打包的路径game.ane\META-INF\ANE\Android-ARM\res..然后再打包apk报下面错误..
打包应用程序时出错:
aapt tool failed:Warning: AndroidManifest.xml already defines versionCode (in http://schemas.android.com/apk/res/android); using existing value in manifest.
Warning: AndroidManifest.xml already defines versionName (in http://schemas.android.com/apk/res/android); using existing value in manifest.
Warning: AndroidManifest.xml already defines minSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.
Warning: AndroidManifest.xml already defines targetSdkVersion (in http://schemas.android.com/apk/res/android); using existing value in manifest.
C:\Users\Administrator\AppData\Local\Temp\9b63dabf-76e8-4052-9025-466a57272cfa\res\layout\ggod_main.xml:7: error: Error: This attribute must be localized. (at ‘text’ with value ‘notland’).
C:\Users\Administrator\AppData\Local\Temp\9b63dabf-76e8-4052-9025-466a57272cfa\res\layout\ggod_main_land.xml:7: error: Error: This attribute must be localized. (at ‘text’ with value ‘land’).
C:\Users\Administrator\AppData\Local\Temp\9b63dabf-76e8-4052-9025-466a57272cfa\res\layout\loading.xml:18: error: Error: This attribute must be localized. (at ‘text’ with value ‘TextView’).
C:\Users\Administrator\AppData\Local\Temp\9b63dabf-76e8-4052-9025-466a57272cfa\res\layout\login.xml:63: error: Error: This attribute must be localized. (at ‘text’ with value ‘ 登陆 ‘).
C:\Users\Administrator\AppData\Local\Temp\9b63dabf-76e8-4052-9025-466a57272cfa\res\layout\login.xml:69: error: Error: This attribute must be localized. (at ‘text’ with value ‘ 注册 ‘).
C:\Users\Administrator\AppData\Local\Temp\9b63dabf-76e8-4052-9025-466a57272cfa\res\layout\login.xml:75: error: Error: This attribute must be localized. (at ‘text’ with value ‘快速开始’).
貌似找到方法了.
@yen
请问 是找到什么方法呢? 分享一下呢。这几天被折磨惨了
遇到这个问题 请使用我修改的RDT打包APK,我已经完全解决很久了..https://github.com/recter/Anti-ADT @JackQu
请教个问题。如果碰到某个sdk,指定必须继承他们的application,可以做到么?
请问是那个类继承呢?如果是其他类 可以在ANE的java端尝试,如果是主activity类的话也是可以的,但是技术难度比较大,方式有几种,A.修改默认activity代码,需要反编译ADT,B.打包好APK后 使用apktool反编译修改activity 相关字节码@叶叶
大哥,我按照你之前写的安智ane为模板来更新最新的SDK(之前的版本没有安智小球,登陆不能记住密码);可是遇到调用登陆方法login()时就提示“很抱歉,****已停止运行”(最新的SDK的登陆方法有了一点修改,多加了个boolean型的参数,不过官方说不影响没什么关系),怎么办?大神,有没有时间更新一下
Rect兄 想請教 FLASH端的AS該寫甚麼 或者用甚麼方式去與ANE或支付寶溝通呢?
@strike, 我之前写过支付宝的ANE,你去看看里面的源码就理解了.
传送门:https://github.com/platformanes/AlipayANE
@Rect, 喔喔找到了!!!太感謝了!!!我馬上研究看看~!!!
@Rect, 我有找到AS 但我該怎麼使用它呢?我使用import的方式導入了兩個as 發布卻出錯…希望大師能指點迷津!!
@strike, 把支付宝ANE导入你的AIR项目.
操作步骤:项目右键属性-构建路径-本机拓展-添加ANE-切换到构建打包-选择平台(android or IOS) – 本机拓展 – 勾选之前导入的ANE
我目前的步驟是….
新建檔案 > air for android > 編輯action script設定 > 導入ANE
然後我該怎麼做呢?
@strike, 我不清楚你用什么IDE工具,不过推荐改用命令行,用命令行生成swf,用命令行生成APK,
具体的命令行样式在这里可以查看:https://gist.github.com/recter
用IDE编译打包有个缺点 就是出现问题无法准确定位.
Rect 我合并jar的时候报错,也不懂是那里出了问题.
把A合并到B出错的话 试试把B合并到A
C:\Users\Administrator\Desktop\aa>jar -xf aliypc-api.jar
‘jar’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。
大哥 我这里还是包这个错
有把jar 这个工具配置到PC的环境变量里么?