当前位置:  编程技术>移动开发
本页文章导读:
    ▪apk反编译和混淆及打包签名-keystore有关问题总结        apk反编译和混淆及打包签名-keystore问题总结 一、找到apk中的class.dex:把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。二、得到java源文件工具.........
    ▪ Drawable、Bitmap、byte[]其间的转换        Drawable、Bitmap、byte[]之间的转换 android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下: 1、Drawable → Bitmap 的简单方法 ((BitmapDrawable)res.getDrawable(R.drawable.youricon)).getBi.........
    ▪ QQ阅读器技术框架解析之4《代码预览和分析》       QQ阅读器技术框架解析之四《代码预览和分析》 本章主要介绍书架内部书城的实现书城分为 1. 中间的webview 2. 底部的gridview作为目录 3. menu键对应的弹出gridview目录。 1. webview对应的activity为.........

[1]apk反编译和混淆及打包签名-keystore有关问题总结
    来源: 互联网  发布时间: 2014-02-18
apk反编译和混淆及打包签名-keystore问题总结

一、找到apk中的class.dex:
把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。
二、得到java源文件
工具准备:
1、把dex文件反编译为jar文件的工具。(dex2jar)
http://code.google.com/p/dex2jar/downloads/list
2、把jar反编译为java的工具。(JD-GUI)
http://java.decompiler.free.fr/?q=jdgui
反编译步骤:
1、把class.dex拷贝到dex2jar.bat所在目录,直接拖动class.dex到dex2jar.bat,生成classes.dex.dex2jar.jar。
   或者:1.在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在D:\Android \apk_decode\dex2jar-0.0.7-SNAPSHOT路径下, classes.dex在D:\Android下,所以: 你进入dex2jar.bat路径下后,输入dex2jar.bat D:\Android\classes.dex,这样会生成一个jar文件。
2.用rar解压出jar文件中的class文件,然后用jad或DJ Java Decompiler反编译工具将.class文件反编译成.java文件
3、运行JD-GUI工具(它是绿色无须安装的),打开上面的jar文件,在File下有个Save JAR Source,它可以生成src源代码。
三、上面操作只能得到class文件,下面利用Google提供的apktool得到xml文件
1. 下载apktool,可以去Google的官方下载,地址:http://code.google.com/p/android-apktool/ 得,apktool- 1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。解压apktool- 1.0.0.tar.bz2得到apktool.jar放到 C:\Windows ,解压apktool-install-windows.zip到任意文件夹(例如E盘根目录)。(我是两个包解压后都放在C:\Windows下)
2. Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些帮助的话就成功了(解释d为加压 第一个路径为你的apk所在的位置。第二个是要输出的位置)
   在这一步中我碰到这样一个问题:
   Exception in thread "main" java.lang.UnsupportedClassVersionError: Bad version n
umber in .class file
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:12
4)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
版本问题,装了个jre6,在360中的软件管家可以找到的,记得装完后配置path路径,果然,ok。
继续:
apktool d e:\a.apk(apk路径)ABC(文件夹名称)
这时当前目录下生成 ABC文件夹,里面就是我们想要的东东了
四、将“二”中得到的java文件和“三”中得到的xml文件组合成一个android工程,即可得到完整的apk源码。
但是好像项目中用到的包没用弄进来,很是郁闷,希望哪位大侠弄懂之后教我,谢谢

 

扩展阅读:

http://bbs.zoopda.com/thread-60736-1-1.html

 

http://bbs.zoopda.com/thread-117350-1-1.html

 

 

 

-------------------------------------------

使用 Android 自带的 proguard 混淆源码

Eclipse+ADT进行Android应用程序的代码混淆和签名

 

Android 打包签名 从生成keystore到完成签名 -- 转

 


    
[2] Drawable、Bitmap、byte[]其间的转换
    来源: 互联网  发布时间: 2014-02-18
Drawable、Bitmap、byte[]之间的转换

android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下:

1、Drawable → Bitmap 的简单方法
((BitmapDrawable)res.getDrawable(R.drawable.youricon)).getBitmap();


2、Drawable → Bitmap
Java代码
public static Bitmap drawableToBitmap(Drawable drawable) {  
         
        Bitmap bitmap = Bitmap  
                        .createBitmap(  
                                        drawable.getIntrinsicWidth(),  
                                        drawable.getIntrinsicHeight(),  
                                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
                                                        : Bitmap.Config.RGB_565);  
        Canvas canvas = new Canvas(bitmap);  
        //canvas.setBitmap(bitmap);  
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());  
        drawable.draw(canvas);  
        return bitmap;  
}  


3.Bitmap→Drawable   的简单方法
BitmapDrawable bitmapDrawable = (BitmapDrawable)bitmap;     
Drawable drawable = (Drawable)bitmapDrawable;     
   
   
Bitmap bitmap = new Bitmap (...);     
Drawable drawable = new BitmapDrawable(bitmap);   


3、从资源中获取Bitmap
Java代码
Resources res=getResources();  
  
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  





4、Bitmap → byte[]
Java代码
private byte[] Bitmap2Bytes(Bitmap bm){  
    ByteArrayOutputStream baos = new ByteArrayOutputStream();    
    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);    
    return baos.toByteArray();  
}  


5、 byte[] → Bitmap
Java代码
private Bitmap Bytes2Bimap(byte[] b){  
            if(b.length!=0){  
                return BitmapFactory.decodeByteArray(b, 0, b.length);  
            }  
            else {  
                return null;  
            }  
      }


    
[3] QQ阅读器技术框架解析之4《代码预览和分析》
    来源: 互联网  发布时间: 2014-02-18
QQ阅读器技术框架解析之四《代码预览和分析》
本章主要介绍书架内部书城的实现

书城分为
1. 中间的webview
2. 底部的gridview作为目录
3. menu键对应的弹出gridview目录。


1. webview对应的activity为WebBrowser
1. 设置页面缩放比例:this.b.setInitialScale(25)
2. 将java代码注册成为js: this.b.addJavascriptInterface(new JSDownLoad(this), "downloadbook");
3. 设置自己重写的WebViewClient重写5个重要方法
      1. onLoadResource:设置底部菜单的展示
      2. onPageFinished:设置loading=false,表示加载完成,关闭进度条
      3. onPageStarted:设置loading=true,表示正在加载,展示进度条
      4. onReceivedError:首次重试一次,如果仍然出错,重定向到"file:///android_asset/web/error.html"
      5. shouldOverrideUrlLoading:无作用,自己可以在这里统一过滤url
4. 设置chrome客户端,重写onProgressChanged函数,用户限制进度条的进度
      onProgressChanged(WebView webView, int progress){
          mProgress.setProgress(progress)
      }
5. onResume添加解决部分rom cmwap无法联网的bug
	protected void onResume() {
		super.onResume();
		WebView.enablePlatformNotifications();
	}


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
c/c++ iis7站长之家
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3