手机里面 显示"反编译apk加入广告sdkk2.0.apk"是什么玩意

大多用于App的破解、App的汉化、App植入广告,出于兴趣,我下班花了6个晚上终于嵌入了个有米广告然后又成功回编译回去,打包签名。
可下载打开看看效果,百度网盘下载地址:链接: /s/1mg2ygM8 密码: 551u,这个APP我本人也很喜欢,如果有喜欢的朋友可以下载看看那个广告平时点点广告下载下载,哥们后半辈子就靠它了。
植入代码的思路与方法。
其实思路很简单,
1、首先我们要反编译 targetapk.apk,得到源代码对应字节码。我们知道,如果我们要植入代码到其中,必须加入字节码然后重新编译打包。
2、怎么写字节码?其实我们只要新建一个Android工程,将我们需要加入的Android代码写入,然后打包成apk,比如sourceapk.apk;接着反编译它得到Android代码对应的字节码。
3、将需要植入的Android代码对应的字节码拷贝,粘贴到targetapk对应的字节码源文件中的合适位置。
4、重新编译targetapk对应的源文件,生成apk后进行签名即可安装使用。
反编译工具: 推荐两个:apktool和APK Multi-Tool v1.0.3:
apktool可以自己百度搜索下载,网上一大推。
APK Multi-Tool v1.0.3下载地址:http://download.csdn.net/detail/siyecao,这是个汉化版。
1.首先运行APK-Multi-Tool文件夹下的Setup.bat ,生成相应的文件夹。
2.需要将待反编译的apk放到place-apk-here-for-modding文件夹下,反编译后的源码在projects文件夹下。知道这就够用了
3.然后把apk拷到place-apk-here-for-modding文件夹下,然后运行Script.bat,首先映入眼帘的是一堆类似乱码的东西,不用管,按下enter后看到主界面:
解释一下有用的地方:
Simple Tasks Such As Image Editing(如果修改了图片资源或文字)就执行此模块的命令, Advanced Tasks Such As Code Editing(高级模式,如修改了源代码),一般我们破译apk需要的是这部分。
编号24 Set current project设置当前工程,选中对应的apk即可。然后按9 Decompile apk,反编译apk,注意看标题栏里的状态是:
Decompile : Sources and Resources Files即反编译源码和资源,我们需要的就是这种模式。反编译结束后再projects文件夹里找到输出结果:
Compile apk / Sign apk / Install apk
(Non-System Apps Only),这个可以直接将源码回编译成apk,并且添加签名再安装。但此处有个问题,这里的安装还是安装的原来的apk文件,选中此命令执行后,在刚才的place-apk-here-for-modding文件夹可以看到了。
具体的实现出来的魅力还是需要对反编译感兴趣的深入实践才能感受出来。就说到这。有需要讨论的地方可以留言讨论。
?↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓黑锐淘折扣重磅上线,快点击图片领取你的专属折扣!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
转载请注明: &如何在android应用中插入百度广告(附源码)
& &现在游戏中的广告基本上已经成为了游戏创作者的一个重要的收入来源。其实插入广告还是挺简单的,本文选择百度广告联盟作为案例(总觉得百度不会拖欠工资)。注:不过,插入广告程序会稍微卡一些,而且真的很耗流量。
(本文并不是照抄百度的文档,会很直白哦)
2.代码部分
& &首先肯定是注册百度广告联盟的账号,和下载sdk。地址:/
& & 第二步,打开eclipse,把里面的jar文件导入库中。 &. & &&
& & 将百度的jar包复制到您工程的Libs目录下,并按如下步骤将其导入:
& & & & & & & & & &右键点击你的工程,然后选择&Properties&;
& & & & & & & & & &在工程属性对话框左边选择& Build Path&;
& & & & & & & & & &在工程属性对话框主窗口选择&Libraries&;
& & & & & & & & & &点击&Add JARs&,添加百度推广jar包。
(其实我试了,直接复制那个jar粘贴到lib中也可以)
& & 第三步,在Mainfest.xml中进行权限修改等。(加注释的地方是填加的地方)
&?xml version=&1.0& encoding=&utf-8&?& &
&manifest xmlns:android=&/apk/res/android& &
& & package=&com.example.adtest& &
& & android:versionCode=&1& &
& & android:versionName=&1.0& & &
& & &uses-sdk &
& & & & android:minSdkVersion=&8& &
& & & & android:targetSdkVersion=&18& /& &
&span style=&color:#ff6666&&&uses-permission android:name=&android.permission.INTERNET& /& & & & & & & & & & &&/span&&span style=&color:#ff6666&& &
& & &uses-permission android:name=&android.permission.READ_PHONE_STATE& /& &
& & &uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /& &
& & &uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION& /& &
& & &uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /& &
& & &uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&&/span& &
& & &application &
& & & & android:allowBackup=&true& &
& & & & android:icon=&@drawable/ic_launcher& &
& & & & android:label=&@string/app_name& &
& & & & android:theme=&@style/AppTheme& & &
& & & & &span style=&color:#3366ff&&&meta-data android:name=&BaiduMobAd_APP_ID& android:value=&debug& /& &&
& & & & &meta-data android:name=&BaiduMobAd_APP_SEC& android:value=&debug& /& &
&/span& & & &span style=&color:#33ff33&&&activity android:name=&com.baidu.mobads.AppActivity& &&
& & & & & & android:configChanges=&keyboard|keyboardHidden|orientation& /& &
&/span& & & & & &
& & & & &activity &
& & & & & & android:name=&com.example.adtest.MainActivity& &
& & & & & & android:label=&@string/app_name& & &
& & & & & & &intent-filter& &
& & & & & & & & &action android:name=&android.intent.action.MAIN& /& &
& & & & & & & & &category android:name=&android.intent.category.LAUNCHER& /& &
& & & & & & &/intent-filter& &
& & & & &/activity& &
& & &/application& &
&/manifest& &
& permission区域是填加权限。meta-data是添加百度的账号,建议value填debug用于调试,调试完换成自己的。
&span style=&color:rgb(51,255,51)&&&activity android:name=&com.baidu.mobads.AppActivity& &&
& & & & & & android:configChanges=&keyboard|keyboardHidden|orientation& /&&/span& &
区域直接添加就可以。
& 获取APPSID和APPSEC。点击上图的&上传应用&,可以看到下图的&应用版本列表&
& 第四步,百度提供多种广告模式,这里选择轮盘状,感觉是最简单的一种。就是在creat()中修改。
@Override &
& & protected void onCreate(Bundle savedInstanceState) { &
& & & & super.onCreate(savedInstanceState); &
& & & & & & & & setContentView(R.layout.activity_main); &
& & & & RelativeLayout rlMain=new RelativeLayout(this); &
& & & & setContentView(rlMain); &
& & & & &&
& & & & IconsAd iconsAd=new IconsAd(this); &
& & & & iconsAd.loadAd(this); &
& & & & } &Android 开发之API兼容问题
鉴于ANDROID SDK 更新较快,很多新的特性和API在低版本中的可能没有。所以开发过程中尽量要保持对新功能接口的兼容。
一般开发过程中APP都会有一个最低版本的配置,例如如果要兼容到android 2.2系统,则可以设置minSdkVersion=8,这就表明能向下兼容到android 2.2版本,即APP能在android2.2版本上的手机也能正常运行,即使可能某些新特性的功能支持失效,但至少保证不会出现崩溃的问题,而避免此问题的方式就要求开发者在代码中做好兼容和适配。
一般选择APP的最低支持版本原则是尽量向下保持兼容,但也不是说越向下越好,主要的考虑因素有以下几点:
1.&&&&&&各个低版本手机的市场占有率,比如2013年android 2.2的手机还占用一定的市场份额,但到现在为止基本上该份额可以忽略不计了(目前android 最高的版本已达到android 5.1了)
2.&&&&&&APP的针对用户群体,比如是高端的用户群体,屌丝用户群体,还是中低端用户群体,根据不同的用户群体可以综合出来决定对最低版本的支持。
基于SDK高低开发优缺点
基于低版本的SDK开发
优点就是你可以支持的手机用户会更多,基本上各个版本的用户都可以用你的应用。
但缺点也是非常明显,特别是对开发者来说,需要做好每一个新特性功能的适配和开发,随着版本越来越高,这对开发者后期的维护会越来越困难,越来越多。
基于高版本的SDK开发
如果你用最新的版本的SDK, 优点就是你可以使用最新的功能的api,而且编译也不会出现任何问题。
但是缺点就是你需要时刻对你调用的api保持向下兼容性,因为很有可能你现有调用的某个api在低版本中根本就不存在。这时候你需要考虑低版本系统的用户的运行问题了。
如某个工程配置中的最低版本是android2.2,也就是正常来说开发过程中需要基于android SDK为8来做工程开发。但如果你没有基于adroid& 2.2 SDK版本开发,而是支持了一个更高的版本,比如android 4.0 SDK开发,那么很多高版本的功能特性(2.3—4.0)在4.0以下的手机中运行就可以存在问题,一般的结果就是直接crash。
下面是基于android2.2 SDK 开发环境编译的最新的工程,其中就有一些直接编译运行不过的错误。下面可以看几个实例:
SampleActivity.java有一处这样写的:
&&&&& if (savedInstanceState !=null) {
&&&&&&&& mOrderId =savedInstanceState.getString(EXTRA_ORDER_ID);
&&&&&&&& mPaySuccess =savedInstanceState.getString(EXTRA_PAY_SUCCESS,&&);
代码中使用Bundle对象在新版本中才提供的方法而没有加兼容处理,如下官方文档中解释,该方法在android 3.1后才有。
public&&getString&(&key,&&defaultValue)&Added
如果在低于android 3.0下机器运行和编译该代码,如果不做任何处理,会直接编译通不过。
解决方法:
1.&&&&&& 用android提供的注解 @TargetApi(11)+ 版本号控制做兼容
如果是基于高版本的SDK开发,则新的api肯定会有该方法,如果想让编译的版本在低版本中也能运行,则需要考虑到版本兼容的问题,可以用如下的方式:
&&&& * 该api版本兼容获取指定参数
&&&& * @param savedInstanceState
&&&& * @return
&&&@TargetApi(12)
&&&privateString getPaySucess(Bundle savedInstanceState) {
&&&&&&& if (Build.VERSION.SDK_INT &= 12) {
&&&&&&&&&&& mPaySuccess = savedInstanceState.getString(EXTRA_PAY_SUCCESS,&&);
&&&&&&& } else {
&&&&&&&&&&& mPaySuccess = savedInstanceState.getString(EXTRA_PAY_SUCCESS);
&&&&&&&&&&& if (mPaySuccess ==null){
&&&&&&&&&&&&&&& mPaySuccess =
&&&&&&&&&&& }
&&&&&&& returnmPaySuccess;
2.&&&&&& 用反射的方式调用高版本中的新功能接口进行调用。
如果是基于低版本SDK开发,那么新版本中的新接口肯定会编译不过,这时候可以考虑反射的方式先去查找是否存在这个方法,如果有就代表用户的手机支持该调用方法,如果没有则采用低版本的处理方式。
&&&& * 通过放射的方式来获取Bundle中的
&&&& * getString(String key,String value)方法
&&&& * @return
&&&privateStringgetPaySucessInvoke(Bundle savedInstanceState) {
&&&&&&& try {
&&&&&&&&&&& Class&?& c = Class.forName(&android.os.bundle&);
&&&&&&&&&&& Method mGetString2Params =c.getDeclaredMethod(&getString&, String.class,String.class);
&&&&&&&&&&& if (mGetString2Params !=null) {
&&&&&&&&&&&&&&& mPaySuccess = (String)mGetString2Params.invoke(null,EXTRA_PAY_SUCCESS,&&);
&&&&&&&&&&& } else {
&&&&&&&&&&&&&&& mPaySuccess = savedInstanceState.getString(EXTRA_PAY_SUCCESS);
&&&&&&&&&&&&&&& if (mPaySuccess ==null){
&&&&&&&&&&&&&&&&&&& mPaySuccess =&&;
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&& } catch (Exception e) {
&&&&&&&&&&& // TODO: handle exception
&&&&&&& returnmPaySuccess;
3.&&&&&& 分离代码,分别在不同的SDK上编译运行,最后ClassLoader动态加载高版本中的相关类接口
此方法应用场景如2,可以将高版本的api接口封装后在高版本的SDK中编译运行jar包,供旧版本的工程中动态加载。
SDK相关对应表
Platform Version
VERSION_CODE
Android 4.4W
KitKat for Wearables Only
<span style="color:#
Android 1.0
<span style="color:#
本文已收录于以下专栏:
相关文章推荐
android:minSdkVersion&#160;—— 此属性决定你的应用能兼容的最低的系统版本,一盘情况是必须设置此属性。
android:targetSdkVersion&#160;—— 此属性说明你当前的应用...
在Android开发中,我们一般都使用最新的api,这样在很大程度有利于我们的开发,并且也是google推荐的;
然而我们编写的应用在上线以后还要和市场上的设备进行匹配这就涉及到几个概念;
使用@TargetApi
annotaion, 使高版本API的代码在低版本SDK不报错
AsyncTask.THREAD_POOL_EXECUTOR, 这个静态变量是API11才有的...
Android适配之适配不同的系统版本前言新的Android版本会为你的app提供更棒的APIs,但你的app仍应该支持旧版本的Android,直到更多的设备升级到新版本为止。这节课程向你展示如何在利...
安卓开发中,在低版本SDK使用高版本的API会报错。一般处理方法是换一种实现方法,或者在高版本SDK中使用高版本API,低版本SDK中使用效果可能会差点的折衷方案;后者可以用如下技巧来实现。
Android 开发之API兼容问题
鉴于ANDROID SDK 更新较快,很多新的特性和API在低版本中的可能没有。所以开发过程中尽量要保持对新功能接口的兼容。
一般开发...
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[-]
Android 开发之API兼容问题
问题背景兼容原则基于SDK高低开发优缺点实战分析
Android 开发兼容问题汇总1. ImageView图片设置问题// 清空图片设置的图像问题
// holder.icon.setImageResource(0);//这句在奇酷手机报错
最近做的一个应用里有二维码扫描的功能,其中要求要对相册中
他的最新文章
讲师:韦玮
讲师:陈守元
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)查看: 186524|回复: 145
WeX5常见问题
主题帖子积分
1.初识WeX5(原X5)& &1.1 & &1.2 & &1.3
& &1.4 & &1.5 & &1.6 & &1.7 & &1.8 2.启动& &2.1& &2.2 & &2.3 & &2.4 & &2.5 & &2.6 & &2.7 & &2.8 & &2.9 & &2.10 3.开发
& &3.1 & &3.2 & &3.3 & &3.4 & &3.5 & &3.6 & &3.7 & &3.8 & &3.9 & &3.10 & &3.11 & &3.12 & &3.13 & &3.14 & &3.15 & &3.16 & &3.17 4. 打包、发布、部署、安装& &4.1 & &4.2 & &4.3 & &4.4 & &4.5 & &4.6 & &4.7 & &4.8 & &4.9 & &4.10 & &4.11 5.运行& &5.1 & &5.2 & &5.3 & &5.4 & &5.5 & &5.6
主题帖子积分
windows上下载版本后解压中文显示乱码(1)确认下载的是否是windows版本的,mac版本的在windows上解压会是乱码,mac版本的在压缩包上就带有mac (2)如果不是用的mac版本在windows上解决的显示乱码可以换一个解压工具
主题帖子积分
手机app中打开功能页面,为什么很慢?
(1) tomcat不能在studio中启动,要用“启动WeX5运行平台.bat”启动或直接到tomcat的bin目录下运行startup.bat(2) 创建app的时候要选择资源并编译UI资源
主题帖子积分
WeX5开发的APP是否需要tomcat服务?
是与你使用WeX5开发的APP是否需要访问服务器端有关的,如果说你的APP完全与服务端无关,那么就不需要访问tomcat服务,如果说你的APP需要从服务端提取资源或者数据,那么就需要有tomcat服务,当然别的服务也可以。
主题帖子积分
如何在mac系统上搭建开发环境?
下载mac版本(tar.gz后缀的压缩包),然后在mac系统中解压后就跟windows中的操作一样
主题帖子积分
在cmd命令行中执行“启动WeX5运行平台.bat”或者“启动WeX5运行平台(调试模式).bat”或者在studio中启动tomcat报错:Address already in use: JVM_Bind &null&:8080
tomcat的端口被占用(1)确认tomcat是否重复启动,如果没有重复启动,可以到任务管理器中把javaw.exe进程结束了,然后重新启动(2)如果你打算同时使用两个tomcat,并且可能同时启动两个tomcat服务,那么需要修改tomcat端口如果启动了studio,可以在studio的菜单中选择“窗口——首选项——Studio配置——Tomcat”配置页中修改端口如果没有启动studio可以打开\apache-tomcat\conf\server.xml文件搜下8080,然后修改
主题帖子积分
新手上路, 积分 38, 距离下一级还需 12 积分
新手上路, 积分 38, 距离下一级还需 12 积分
WeX5的app源码在哪儿?
根目录下的app-src目录下
找不到&&app-src 这个目录
我也是的!!
新第三书包网&
主题帖子积分
X5 V2.7版本能升级到X5EE V3.0版本吗,怎么升级?
X5.2.7升级至X5EE V3.0版本的用户,如需在X5EE V3.0版本上开发手机应用,请参考《入门培训-移动应用界面建模》视频。
【升级步骤】
1、将X5.2.7版本中Biz和UI目录下的应用目录(除system、sa、portal、portal2等版本自带目录)对应复制到X5EE V3.0版本的Biz和UI目录下。
2、数据库升级:根据数据库升级说明进行升级。
X5.2.7升级X5EE V3.0:
【X5EE V3.0版本手机应用开发注意事项】
X5EE V3版本需在UI2下进行移动应用的界面建模;
1、studio中刷新BIZ目录即会显示原有5.2版本上开发的BIZ资源。
2、需将5.2上开发的UI下的应用目录复制到UI2目录下,保留config目录,删除其他目录下的所有文件。
(就是要保证同一个功能PC端的界面和移动端界面设计的目录一致)
3、在UI2下新建相应的w文件开始进行手机应用的界面建模。
4、注意修改功能树配置文件,修改功能的URL中的路径文件后缀.w为.a。
(.a文件会找UI2下的资源运行)
【X5EE V3.0版本PC界面开发注意事项】
需打开解压目录中Studio5.2\studio.exe,在UI目录下即可开发原来的界面。
【X5.2.7原MobileUI】
目前手机直接访问,将会访问到UI2的移动资源,如果要使用原来的MobileUI,需直接访问这边的资源才可以。
正式版本发布的时候,将会支持,新的门户中,可同时使用UI2和MobileUI的资源。
主题帖子积分
WeX5是什么?能做什么?
WeX5是前端快速开发框架,可开发跨端运行应用。是移动App/微信/WebApp开发利器,一次开发多平台运行。
主题帖子积分
WeX5是免费的吗?
WeX5是完全免费开源的,打包和部署都没有任何费用。
BeX5是收费的,20用户128库表以内免费,超过该规格收费,价格请咨询商务人员。
主题帖子积分
WeX5能开发微信App吗?
可以,WeX5开发的应用,不仅可以在微信上运行,也可以直接手机浏览器运行,或者打包成App下载运行。对应微信服务号和企业号,起步分别有WeX5和BeX5这2个产品来对应。
& & 服务号运行效果可直接扫描官网二维码关注后体验,教程见视频:(微信服务号);
& & 企业号,BeX5已经将微信提供接口进行了封装,开发时可直接调用,且提供了组织、菜单等同步功能(企业号相关特性将在新版本中包括)
& &如果你要用WeX5开发微信企业号集成应用,那么你需要自己做组织机构同步,其他接口也都需自己开发调用。
主题帖子积分
WeX5 开发的App能发布到苹果AppStore吗?
可以,你需要有苹果账号才能上架苹果的AppStore,但是苹果审核比较严格,所以上架时间会长一些。
主题帖子积分
WeX5开发移动app可以用于商业吗,会不会弹广告或别的限制吗?
WeX5是完全免费开源的,打包等都没有任何费用,可以用于商业。
WeX5自身不会弹出任何广告,也没有任何限制。每一行代码都在你手上,就是给你自由,就是让你任性。
主题帖子积分
WeX5可以对接什么后端?
可以通过http(Ajax)、Websocket、Socket.io等连接各种后端中间件或云服务(java、node、php、.net等)
起步公司也提供了一个企业信息化所需要的强大数据和后端能力,包括工作流、组织、权限、图表、报表、文档、门户、业务规则等,如果你需要这些能力,请使用BeX5。
如何支持后端?资料从那边得到?&
主题帖子积分
WeX5开发的移动app最低支持android、ios什么版本?
Android4.0及以上;
iOS6及以上。
主题帖子积分
应用开发完成后,如何部署?
开发完成后,你可以通过各种打包方式,打包安卓和iOS安装包,手机下载即可使用;也可以发布为webapp,部署到你的服务中。
如果需要在微信使用,那么需发布为webapp的方式。
主题帖子积分
WeX5开发移动app打包模式有哪几种,有什么不同,怎么选择?/?p=11727
Powered by

我要回帖

更多关于 sdk与apk 的文章

 

随机推荐