修改APP:车来了

修改内容:首次启动引导页,中间的点素材修改、样式修改

修改前:未选中为白色,选中为蓝色,间距为5dip

修改后:未选中为红色,选中为黑色,间距为0

前后截图如下:

修改过程:

一、使用apktool反编译apk

apktool安装根据官网进行:https://ibotpeaches.github.io/Apktool/install/

具体操作:

0.首先确保使用java 1.8或以上

1.下载运行脚本并重命名为apktool.bat,下载地址(官网):https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/windows/apktool.bat

2.下载最新的apktool并重命名为apktool.jar,下载地址:https://bitbucket.org/iBotPeaches/apktool/downloads/

3.放在一个文件夹,双击运行apktool.bat,会输出用法

4.反编译apk,命令格式:apktool d [ apk文件名 ]

Apktool v2.4.0 - a tool for reengineering Android apk fileswith smali v2.2.6 and baksmali v2.2.6

Copyright 2014 Ryszard Wiśniewski

Updated by Connor Tumbleson

usage: apktool

-advance,--advanced prints advance information.

-version,--version prints the version then exits

usage: apktool if|install-framework [options]

-p,--frame-path

-t,--tag Tag frameworks using .

usage: apktool d[ecode] [options]

-f,--force Force delete destination directory.

-o,--output

t

-p,--frame-path

-r,--no-res Do not decode resources.

-s,--no-src Do not decode sources.

-t,--frame-tag Uses framework files tagged by .

usage: apktool b[uild] [options]

-f,--force-all Skip changes detection and build all files.

-o,--output

.apk

-p,--frame-path

For additional info, see: http://ibotpeaches.github.io/Apktool/

For smali/baksmali info, see: https://github.com/JesusFreke/smali

C:UsersAdministrator>cd C:Usersapk所在文件夹

C:Usersapk所在文件夹>apktool d chelaile.apk

I: Using Apktool 2.4.0 on chelaile.apk

I: Loading resource table...

I: Decoding AndroidManifest.xml with resources...

S: WARNING: Could not write to (C:UsersAdministratorAppDataLocalapktoolframework), using C:UsersAdministratorAppDataLocalTemp instead...

S: Please be aware this is a volatile directory and frameworks could go missing, please utilize --frame-path if the default storage directory is unavailable

I: Loading resource table from file: C:UsersAdministratorAppDataLocalTemp1.apk

I: Regular manifest package...

I: Decoding file-resources...

I: Decoding values */* XMLs...

I: Baksmaling classes.dex...

I: Baksmaling classes2.dex...

I: Baksmaling classes3.dex...

I: Baksmaling classes4.dex...

I: Baksmaling assets/AdDex.3.1.0.dex...

I: Copying assets and libs...

I: Copying unknown files...

I: Copying original files...

得到了文件夹chelaile,里面有如下文件:

二、寻找和修改

这里是纯粹的凭感觉在搞了

AndroidManifesr.xml  找到

猜测启动页面应该是SplashActivity,将其作为本次修改的对象

=> SplashActivity.smali 找到sget p1, Ldev/xesam/chelaile/core/R$layout;->cll_act_splash:I

猜测对应布局文件为cll_act_splash

=> cll_act_splash.xml 发现用了自定义组件GuideView,而且默认设置为gone,在smali文件中有invoke-virtual {v0, v1}, Ldev/xesam/chelaile/app/module/func/GuideView;->setVisibility(I)V,进一步猜测是首次启动才会出现

=> GuideView.smali 找到sget p2, Ldev/xesam/chelaile/core/R$layout;->cll_act_guide:I,猜测对应布局文件为cll_act_guide.xml

=> cll_act_guide.xml里面三个ImageView,应该就是三个点,

根据android:src="@drawable/indicate_dot" 得到对应素材,直接做修改保存;

删除android:padding="5.0dip"(由于这里的修改引起了页面中其他元素在显示上也有变化)

三、重新打包

命令格式:apktool b [ 刚才得到的文件夹 ] -o [ 输出文件名 ]

C:Usersapk所在文件夹>apktool b chelaile -o newcll.apk

I: Using Apktool 2.4.0

I: Checking whether sources has changed...

I: Smaling smali folder into classes.dex...

I: Checking whether sources has changed...

I: Smaling smali_assets folder into assets.dex...

I: Checking whether sources has changed...

I: Smaling smali_classes2 folder into classes2.dex...

I: Checking whether sources has changed...

I: Smaling smali_classes3 folder into classes3.dex...

I: Checking whether sources has changed...

I: Smaling smali_classes4 folder into classes4.dex...

I: Checking whether resources has changed...

I: Building resources...

S: WARNING: Could not write to (C:UsersAdministratorAppDataLocalapktoolframework), using C:UsersAdministratorAppDataLocalTemp instead...

S: Please be aware this is a volatile directory and frameworks could go missing, please utilize --frame-path if the default storage directory is unavailable

W: warning: string 'cll_aboard_user_contribution_empty_desc' has no default translation.

W: warning: string 'rc_voice_dialog_cancel_send' has no default translation.

W: warning: string 'rc_voice_dialog_swipe' has no default translation.

W: warning: string 'rc_voice_dialog_time_short' has no default translation.

I: Copying libs... (/lib)

I: Building apk file...

I: Copying unknown files/dir...

I: Built apk...

出现了一些warning,但是问题不大,第一次使用,就不怎么纠结他了

到这里得到了一个apk,但是不能用,需要签名才能正常安装

四、重新签名

用Auto-sign重新签名,这里参考了一个博客,原文链接:https://blog.csdn.net/sxk874890728/article/details/80486223

下载解压Auto-sign,得到的auto-sign文件夹下有以下文件

将上一步得到的newcll.apk拷贝到解压好的auto-sign文件夹下,执行命令:

java -jar signapk.jar testkey.x509.pem testkey.pk8 newcll.apk cll_signed.apk

就得到了最终可安装使用的apk

apktool java_apktool 简单使用记录相关推荐

  1. 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。...

    语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程. 为了将本人的python培训提高一个层次,本人最近买了很多算法的书. 这个书上的代码基本都是c语言实现的,c语言很久 ...

  2. php记录网站访问,PHP简单实现记录网站访问量的功能

    这篇文章主要介绍了PHP简单实现记录网站访问量功能,涉及php针对文件加锁读写及日期时间转换等相关操作技巧,需要的朋友可以参考下 本文实例讲述了PHP简单实现记录网站访问量功能.分享给大家供大家参考, ...

  3. java util logging_简单日志记录,使用java.util.logging

    jsp+servlet+JavaBean模式下,可以做个简单的日志记录,日志文件保存在服务器.(Tomcat) package controller; import java.io.File; imp ...

  4. 简单的记录一下使用HAL库的SPI外挂W25Q32

    简单的记录一下使用HAL库的SPI外挂W25Q32 抽筋了,想记录一下. cubeMX配置SPI CS脚 spi.h 里添加 #define FLASH_ID 0XEF14//指令表#define W ...

  5. HTML简单学习记录

    文章目录 HTML简单学习记录 简介 HTML基本结构 网页基本标签 图像标签 链接标签 超链接 锚链接 功能性链接 行内元素和块元素 列表 表格 视频和音频 视频 音频 页面的简单布局 iframe ...

  6. python-pynput库用法 及 简单实现记录键盘

    pynput软件包说明文档 控制及监听鼠标 #测试pynput第三方库 #控制鼠标 import timefrom pynput.mouse import Button,Controller #导入控 ...

  7. 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。

    开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理:1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加:(文件所在的目录不同,文 ...

  8. php网站统计浏览量,PHP简单实现记录网站访问量功能示例

    本文实例讲述了PHP简单实现记录网站访问量功能.分享给大家供大家参考,具体如下: tongji/index.php文件: $file = dirname(__FILE__).'/tongji.db'; ...

  9. 超市购物打印小票的简单程序 记录下来

    做了2个版本的超市购物小票打印程序,做过记录 一.C/S样图如下:      其中 输入商品的编码 回车 将会调用该商品的信息,显示在下面的DataGridView中 ,DataGridView中数量 ...

  10. Rocksdb 的 MergeOperator 简单使用记录

    本篇仅仅是一个记录 MergeOperator 的使用方式. Rocksdb 使用MergeOperator 来代替Update 场景中的读改写操作,即用户的一个Update 操作需要调用rocksd ...

最新文章

  1. Struts2配置时报struts-default.xml:65:72异常的解决方法
  2. 作业帮、猿辅导、学而思们,正在经历自己的高考
  3. 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程
  4. 光伏发展路线图将发布 促产业优胜劣汰
  5. 基于 Roslyn 实现动态编译
  6. 查询网站web服务器,web服务器地址查询
  7. 软件工程第0次作业 | 热身
  8. postman websocket_postman的“替代者”postwoman的使用体验—从入门到放弃
  9. echarts 圆饼图空心中间加文字
  10. easyrecovery免费数据恢复工具操作简单一键恢复数据
  11. rto净化效率计算公式_rto废气处理原理
  12. Java用POI复制excel单元格条件格式规则
  13. 【HDU4622】Reincarnation-后缀自动机
  14. 敏捷专项练习题202207
  15. Python爬虫|豆瓣图书Top250
  16. 遇见你,是我幸福的开始
  17. 令人困惑的fitsSystemWindows
  18. html5 css 渐变背景,css渐变,css渐变色背景
  19. linux oracle 查看版本
  20. 2019年奥斯卡获奖电影绿皮书经典台词(中英文对照)

热门文章

  1. 多重共线性的产生原因、判别、检验、解决方法
  2. WOW!Illustrator CS6完全自学宝典pdf
  3. 计算机图形图像处理应用教程,计算机图形图像处理应用教程
  4. 坚果云 我的电脑图标_坚果云使用教程
  5. 车企销量“期中考”结束之后,新能源们下半年会持续高光吗?
  6. 工业读写器行业解决方案
  7. 安规X电容和Y电容的作用
  8. java rsa x509_Java使用RSA加密解密签名及校验
  9. Socket通讯--数据结构WSADATA
  10. Vue项目(Ant Design of Vue)踩坑记之——表格header可伸缩