聚合sdk打包问题
来源:互联网 发布:淘宝装修免费模板 编辑:程序博客网 时间:2024/05/29 07:10
聚合打包使用的工具为apktool +dex2jar
问题1:
乐视渠道出现找不到资源问题,原因在于apktool在合并res资源的attrs时, 并不能插入到attrs资源中,
导致apktool生成不了R
解决:
手动把 资源复制到attrs中,再使用aapt命令生成R.java文件,然后把java文件转换成smali文件,复制所有的smali文件覆盖掉原有同名的smali文件(在package目录下),重新打包即可
问题2:
A站渠道出现R文件资源问题,因为渠道资源索引R文件导致
解决:
1.生成smali文件夹
使用打包脚本生成一个合并ACfunSDK后的无签名apk包,使用apktool d xx.apk解压apk,生成smali文件夹
2.生成R文件
把步骤1获得的AndroidManifest.xml文件和res文件夹复制到一个新建的文件夹里,使用aapt命令生成R.java文件,命令如下:
aapt package -f -m -J /Users/laiying/Desktop/ -S res -I /Users/laiying/Library/Android/sdk/platforms/android-19/android.jar-M AndroidManifest.xml
红色部分为需要修改的地方:
第一个红色部分:R文件生成后存放路径(R文件会自动保存在游戏包名目录下)
第一个红色部分:使用的SDK编译版本
出现问题总结:
1.如drawable-mdpi与drawable-mdpi-v4中同时存在相同文件名的文件,需要删除drawable-mdpi中的文件
2.如果游戏的AndroidManifest.xml文件中存在android:isGame=”true”属性,需要把它去除
3.如提示values-v21中存在不支持的样式,去除即可
3.编译R.java文件
javac -source 1.6 -target 1.6 R.java)
4.生成的R文件的jar
把R文件所在的目录生成为JAR
命令 jar cvf all.jar com
5.生成 dex文件
把R文件生成的JAR编译为dex文件
命令: dx –dex –output=classes.dex all.jar
*如果出现下面错误需要下载dx.jar(把dx.bat文件拷贝到android-sdk\build-tools\23.0.2\lib目录下
):
java.lang.RuntimeException: Exceptionparsing classes
atcom.android.dx.command.dexer.Main.processClass(Main.java:752)
atcom.android.dx.command.dexer.Main.processFileBytes(Main.java:718) atcom.android.dx.command.dexer.Main.access$1200(Main.java:85) atcom.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
6、生成smali文件
使用baksmali-2.0.3.jar把获得的dex文件转换为smali文件
命令:java -jar baksmali-2.0.3.jar classes.dex
7.替换smali文件
把生成的smali文件替换到步骤1中相同的目录下
如:生成的smali文件路径为:com.test,即需要替换到步骤1中的com.test
8、重新打包签名即可
问题3:
在汇编时出现找不到类,或者类不匹配问题,某些jar的包下存在的类数目超过26个,导致有大小写的类名出现,因为系统不区分大小写,所以解压出来的某些类被覆盖
解决:
1.不解压jar,直接合并成dex文件 dx –dex –output=classes.dex all.jar test.jar(可以合并多个jar)
2、解压成smali文件,再把smali文件合并成dex(需要用到baksmali.jar / smali.jar)
命令如下:
dex转smali: java -jar baksmail.jar -o out/ classes.dex
smail转dex: java -jar smali.jar out/ -o class.dex
问题4:
apktool修改versionCode/versionName:
运行apktool命令进行解包会生成一个apktool.yml打开该文件可以看到这两个值,直接修改汇编就可以
versionCode: ‘8’
versionName: 1.0.7.9
包名的修改需要在AndroidManifest.xml修改
问题5:
apktool汇编失败:
at brut.util.OS.exec(OS.java:97)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:435)
… 6 more
Caused by: java.io.IOException: Cannot run program “C:\Users\ADMINI~1\AppData\Local\Temp\brut_util_Jar_5992000255534415667.tmp”: CreateProcess error=206, 文件名或扩展名太长。
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at brut.util.OS.exec(OS.java:90)
… 7 more
Caused by: java.io.IOException: CreateProcess error=206, 文件名或扩展名太长。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
… 8 more
原因:
apktool中对资源文件进行了检索,导致一些自定义的文件不能被解释
解决:
1、修改apktool 2.0.0版本
2、或者直接把解包出来生成的apktool.yml中的doNotCompress:下的内容删除,例如把下面的红框内容删除
更多问题后续更新
- 聚合sdk打包问题
- Unity 打包 SDK 问题合集
- 聚合SDK开发思想
- 使用Ant打包apk,SDK不同造成的问题
- jdk版本和sdk版本不一致问题导致无法打包
- 广告聚合SDK和广告平台所暴露出的一些问题
- android打包SDK方法
- android sdk 打包混淆
- sdk tar打包
- unity多渠道sdk打包.
- maven聚合工程的创建和聚合工程的打包
- maven聚合工程的创建和聚合工程的打包
- maven聚合工程的创建和聚合工程的打包
- maven聚合工程的创建和聚合工程的打包
- maven聚合工程的创建和聚合工程的打包
- maven聚合工程的创建和聚合工程的打包
- COM SDK 聚合组件的调试
- Cocos2d 中使用聚合广告SDK
- Program Commonly Used Skill
- 前后台分离思想
- 通过代码调用并发请求
- Digit Counting
- Java JDBC事务与JTA分布式事务
- 聚合sdk打包问题
- OpenGL 入门教程(五) -- 模型视图投影矩阵
- Android 自定义倒计时,支持listview多item一起倒计时
- Android SDK开发(一)
- 转一篇Yahoo关于网站性能优化的文章,兼谈本站要做的优化
- [ZOJ]3209 Treasure Map 跳舞链 精确覆盖
- 数据挖掘导论完整版pdf中文
- Android项目使用私有maven仓库配置
- SQL获取所有数据库名、表名、储存过程以及参数列表