
有时难免要反编译一个APK,修改其中的若干关键判断点,然后再回编译成一个全新的可用的apk,这完全是可实现的。若要完成上述工作,需要以下工具,杂家后面会把下载链接也附上。这些软件截止本文发布时,经过杂家确认都是最新的版本。
1APK-Multi-Toolv1011zip 用它来反编译apk,得到smali类型的源码和资源文件。一般来讲,直接解压缩一个apk也可以看到其资源文件,但部分xml是不可阅读的,需用此工具反编译。网上流传较广的是一个经过高人汉化过的版本103,第一次使用这个工具可以用这个汉化的版本,熟悉其命令。但经过杂家测试,这个汉化的版本再回编译apk签名时已经出问题了,签不了,最终用的最新版才ok。
2dex2jar-00915zip 用于将一个apk文件转换成jar类型的文件,转换之后再利用下面的jd-gui工具才能看到其java代码。上面的apk-tool固然强大,但是反编译出来是smali文件,即dalvik字节码,类似汇编语言的一种代码,直接阅读如天书一样,为此我们需要使用dex2jar + jd-gui来得到其java代码,进行阅读找到要修改的关键点。
3jd-gui-036windowszip 可以打开一个jar类型的文件,看到java代码。并能将代码保存,保存后再弄到sourceinsight里就方便看了。最好使用本文所说的最新版本,使用老版本会发现一个BActivity,如果里面有内部类,则又多出一个BActivity$1java,类似这种文件。新版本没这个问题。
4Smali2Java100558zip 用于将smali文件转成java文件,这个工具仅仅是备用。因为用上面三个工具已经能够胜任本文的要求了。
如果第一次接触反编译,不了解smali语法,可以阅读链接1 链接2
下面杂家先上一个Android APK,用来简单模拟用户登录的情况,注意只能是模拟哈。因为正式的apk很少有在本地进行判断的。此apk要求用户输入用户名和密码,如果用户名为yanzi,密码为123,则认为合法,自动跳转到第二个Activity。否则提示用户名或密码不正确。
<span style="font-family:Comic Sans MS;font-size:18px;">package orgyanzidecomdemoactivity;
import orgyanzidecompiledemoR;
import androidappActivity;
import androidcontentIntent;
import androidosBundle;
import androidviewMenu;
import androidviewView;
import androidwidgetButton;
import androidwidgetEditText;
import androidwidgetToast;
public class LoginActivity extends Activity {
EditText loginName = null;
EditText loginPswd = null;
Button loginBtn = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_login);
initUI();
loginBtnsetOnClickListener(new ViewOnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isAllowLogin()){
Intent intent = new Intent(LoginActivitythis, SecondActivityclass);
startActivity(intent);
LoginActivitythisfinish();
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present
getMenuInflater()inflate(Rmenulogin, menu);
return true;
}
private void initUI(){
loginName = (EditText)findViewById(Ridedit_login_name);
loginPswd = (EditText)findViewById(Ridedit_login_pswd);
loginBtn = (Button)findViewById(Ridbtn_login);
}
private boolean isAllowLogin(){
String name = loginNamegetText()toString()trim();
String pswd = loginPswdgetText()toString()trim();
if(name != null && pswd != null){
if(nameequals("") || pswdequals("")){
ToastmakeText(this, "密码或用户名不能为空", ToastLENGTH_SHORT)show();
return false;
}
}
if(nameequals("yanzi") && pswdequals("123")){
return true;
}else{
ToastmakeText(getApplicationContext(), "用户名或密码不符", ToastLENGTH_SHORT)show();
}
return false;
}
}
</span>
附上出处链接:>
原发布者:长沙沙沙8
如何开发一个APP本篇文章从开发的角度来介绍如何开发一个AndroidAPP,需要说明一点是,这里只是提供一个如何开发一个APP的思路,并不会介绍很多技术上的细节,从整个大局去把握如何去构思一个APP的开发,让你对独立开发一款APP的时候有个理解,如果有说的不对的地方,欢迎大家拍砖留言讨论。Android应用层使用的开发语言是Java,自然需要用到Java运行环境,无论你在Window是系统还是Mac系统都需要安装JDK,并且配置它的环境变量,不懂什么叫环境变量的或者不知道怎么配的,请利用好自己的百度技能自行学习。
开发工具开发工具,Android因为历史原因,前面很长一段时间使用的是Eclipse,我们要开发Android应用的时候需要另外安装Google为它开发的插件ADT,Eclipse这个开源软件很优秀,也很专业,但仅仅只是使用它来开发Android就显得有点鸡肋了,如果没有对Eclipse进行优化的话,会很卡很卡,后面Google实在不愿意寄人篱下,就专门为我们开发者开发了目前很受广大开发者推崇的AndroidStudio,现在20预览版也出来啦,大伙赶紧去下吧。
模拟器Android自带的模拟器一直广受诟病,实在是太卡太慢了,对比人家IOS模拟器是那么的流畅,Android开发者直喊好苦逼啊,不过还好后面出了第三方比原生流畅n倍的模拟器Genymotion,大家可以去下一个个人版的够你平时开发测试用了。最好的办法还是使用真机测试,毕竟真机才是真实的环境。前面是准备工作,想开发一款AndroidAPP,你开发app软件一般分为2种情况。一种是只开发一个就行了,没有其他需求;另一种是长期的开发app,就是有多个软件开发需求。
只开发一款app的话,首先建议你找第三方外包服务公司,因为现在靠谱、专业的app开发公司会帮你搞定一大半的事情,如果前期需求沟通确认明确,那几乎不需要你再 *** 心别的。
还有一种方式是自己组建一个开发团队,按照目前情况,至少需要10名人员,包括UI设计师、研发工程师、测试工程师等等。现在技术人员工资相对较高,这部分的成本支出要考虑清楚,而且这个app项目开发结束,没有其他开发需求的话,这部分人的安置也比较棘手。比起找第三方服务商,自己组建团队开发一个app显然不够现实。
第二种情况是你想要开发多款app,并且有创业打算。这种情况优先选择自己组建团队,这里就要做好心理准备,招聘什么类型的人才已经怎样的薪水支出都有清楚。然后招聘专业人员组成团队,做app开发项目。这个时候就要做好长期吃苦的准备,因为创业本身并不容易。
这个团队至少需要一个iOS和一个安卓开发者;其次至少需要一个项目经理统筹全局;第三,你的想法要落地、实现,必须至少一个产品经理做保障;此外还包括UI设计、测试、服务器端开发人员;如果有网站,那么还需要前端开发者;当然如果你想赶个时髦,肯定还需要一个小程序开发者。所以要考虑好。
深圳圣马歌科技提示:如果你想省点心和省点钱,那还是建议你找专业的第三方外包公司,因为开发价格并不算高,而且速度快也有保障。手机上能用的就是aide,但是开发出来的程序很简单的那种,需要功能多得用电脑,用专用的编译器才能行的,可以用aide在安卓手机上用JAVA开发安卓APP一个好的app手机软件,需要的不仅仅是界面的美观设计实现,更重要的是基本功能、扩展功能的实现,以满足人们的体验娱乐需求。开发一个好的手机app软件,强调一下,app手机软件开发,必须要考虑用户体验,好的用户体验设计需要考虑下面4大用户要素:1、设置体验元素现在是一个注重个性化体验的时代,能为消费者提供独特的与产品及企业相关的各种体验将对促进销售与提高亲和力有积极的帮助,网站也可以作为顾客体验的重要部分,要让企业网站成为浏览者的体验场地,巧妙地把线上与线下接触结合起来,让浏览者参与进来。2、设置便捷按纽设置一些只要浏览者点击一下就可以完成 *** 作的便捷功能按纽,比如收藏本站、设为首页、推荐给朋友等。这些“举手之劳”可以有效增加自己网站再次被浏览和被推介的机会。3、视觉统一网站的视觉方面要和企业的vi视觉识别系统相统一,如果企业没有vi视觉识别系统,那么也要和企业或商品有视觉化的联系,这样可以增强浏览者对企业及产品的视觉化一致性认识及加深印象。4、网站功能切忌华而不实现在很多企业的网站做的非常大,且功能齐全,以为这样才能吸引人气,其实这样做不仅要花很多的钱在网站建设上,而且功能过多还会使浏览者眼花缭乱,不知所措。请检视一下你们企业的网站,是否有很多功能从没有人使用过呢?一定会有。
手机上的编程软件有c4droid、aide、CppDroid、QPython3、Termux。
相关介绍:
1、c4droid:
是款Android设备上的C/C++程序IDE。默认以tcc(tiny c compiler)为编译器,可以选择安装gcc插件(20mb,只有root用户可以使用),选用gcc后,可以用sdl(简单直控媒体层库,需安装sdl plugin for c4droid)和qt(nokia官方开发库。
2、aide:
aide是一个Android/Java等集成开发环境,可以在Android手机上进行Android软件和游戏的开发,而无需借助PC端。不仅仅是一个编辑器,而是支持编写-编译-调试的IDE,开发人员可以在Android手机或者平板机上创建新的项目,借助功能丰富的编辑器进行代码编写。
3、CppDroid:
CppDroid和c4droid一样,是一款手机上的c语言编译器。安卓上的C/C++编译环境,可以帮助你在手机上编写c/c++程序 ,和c4droid各有优点,cppdroid最大的优点就是可以即时报错。
4、QPython3:
主要用来在手机上写python3代码,主界面如下,主要分为“终端”、“编辑器”、“程序”、“QPYPI”、“课程”、“社区”这6个模块,终端类似IDLE,编辑器类似记事本,QPYPI是第三方包和工具。
5、Termux:
Termux是一个Android下一个高级的终端模拟器, 开源且不需要root, 支持apt管理软件包,十分方便安装软件包, 完美支持Python、PHP、Ruby、Go, Nodejs、MySQL等。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)