mac编译android
㈠ 如何在Mac上面进行AndroidApk反编译
最新的反编译不用此方法, 有最新的一键自动反编译工具:
这段时间在学Android应用开发,在想既然是用java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。
在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。
注:本Android反编译教程,在Windows7-Ultimate-64bit操作系统上,测试通过!
下述所需的反编译工具包 下载
一、反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI
前者dex2jar是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:
dex2jar:
JD-GUI:
具体步骤:
首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录(在DOS命令下CD 目录)
运行
dex2jar.bat classes.dex
生成
classes.dex.dex2jar.jar
生成jar文件的截图如下:
运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了
HelloAndroid源码(编译前的apk源码对照)如下:
二、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
如果是汉化软件,这将特别有用。首先还是下载工具,这次用到的是apktool
下载地址:
下载:apktool1.4.1.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(两个包都下载)
具体步骤:
将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar
在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:\*.apk C:\*文件夹,如下图:
命令行解释:apktool d [apk文件 ] [输出文件夹]
反编译的文件如下(AndroidManifest.xml为例):
特别注意:你要反编译的文件一定要放在C盘的根目录里(其实不用放在C盘根目录也行)
例如:在D盘目录D:\apktool1.4.1
cd /d D:\apktool1.4.1 //切换到D盘目录,包含HelloAndroid.apk以及aapt.exe,apktool.bat,apktool.jar三个文件
apktool.bat d -f HelloAndroid.apk HelloAndroid // apktool反编译命令,注意 d和
-f 的写法
将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可,命令如下:这个主意你文件所在盘
打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:
build
dist
其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok
最后,再介绍一款刚出来的反编译工具 Androidfby ,它是一款对上述步骤进行了封装的图形界面工具,下载地址
但是,针对部分签名的apk,无法实现反编译,但本博客方法则仍然可以反编译成功!仅供参考使用
另外,作为应用开发者,肯定不希望自己的代码被反编译的,下一遍博客将讲述如何通过混淆代码防止被别人反编译
Android如何防止apk程序被反编译
作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。
Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹
proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。
下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容:
[html] view
plainprint?
1. -optimizationpasses 5
2. -dontusemixedcaseclassnames
3. -
4. -dontpreverify
5. -verbose
6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
7.
8. -keep public class * extends android.app.Activity
9. -keep public class * extends android.app.Application
10. -keep public class * extends android.app.Service
11. -keep public class * extends android.content.BroadcastReceiver
12. -keep public class * extends android.content.ContentProvider
13. -keep public class * extends android.app.backup.BackupAgentHelper
14. -keep public class * extends android.preference.Preference
15. -keep public class com.android.vending.licensing.ILicensingService
16.
17. -keepclasseswithmembernames class * {
18. native ;
19. }
20.
21. -keepclasseswithmembernames class * {
22. public (android.content.Context, android.util.AttributeSet);
23. }
24.
25. -keepclasseswithmembernames class * {
26. public (android.content.Context, android.util.AttributeSet, int);
27. }
28.
29. -keepclassmembers enum * {
30. public static **[] values();
31. public static ** valueOf(java.lang.String);
32. }
33.
34. -keep class * implements android.os.Parcelable {
35. public static final android.os.Parcelable$Creator *;
36. }
从脚本中可以看到,混淆中保留了继承自Activity、Service、
Application、BroadcastReceiver、ContentProvider等基本组件以及
com.android.vending.licensing.ILicensingService,
并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考/examples中的例子及注释。)
让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了
完整的default.properties文件应该如下:
[html] view
plainprint?
1. # This file is automatically generated by Android Tools.
2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
3. #
4. # This file must be checked in Version Control Systems.
5. #
6. # To customize properties used by the Ant build system use,
7. # "build.properties", and override values to adapt the script to your
8. # project structure.
9.
10. # Project target.
11. target=android-9
12. proguard.config=proguard.cfg
大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:
如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可
/
㈡ 如何在mac上搭建android开发环境
1.前言
由于去年年中准备专心搞iOS开发,但Android也不能放弃。然后就发现eclipse是跨平台,做android开发应该是没问题。仔细查了不少资料,最后终于咬牙买了rmbp,从此走上来了ios和android开发之路。
2.安装eclipse
因mac系统里自带jdk,所以不需要再下载,也不需要在eclipse里配置jdk。
在eclipse官网上就有mac版的下载。选择第一个Mac版的Eclipse IDE for Java EE Developers。我是64位的,大家可以根据自己实际情况选择。
3.安装adt
我选择的是在线安装adt插件,如果有同学网络不好,可以网上查下离线安装adt
打开eclipse - Help - Install New Software
[attachment=53799]
以上跟windows下是一样的,就不多说了。
以前的eclipse并不支持retina屏幕,但目前最新的已经解决了这个问题。如果有同学还发现eclipse显示模糊的问题,可以用试试以下两种方法
一、在Eclipse.app上点击右键 选择“显示包内容” 然后打开Contents文件夹 编辑 Info.plist。在dict的结尾标签上添加一行
<key>NSHighResolutionCapable</key>
<true/>
二、可以使用神器,把所有不支持retina的app的改成支持retina,可以在威锋网上搜索“Retinizer”
4.下载和安装mac版的android tool
打开网站 选择Mac OS X 的SDK版本进行下载。最好存放在英文目录下
剩下的都是跟windows一样的。启动后下载android各个版本的jar,并且在eclipse里配置
[attachment=53800]
则脊消5.模拟器
因为android自带的模拟器非常慢,所有有些windows上的同学会选择第三方的模拟器。很孙知不幸,mac上目前来说并没有第三方模拟器。
android自带模拟器因为是CPU是ARM的,所以才导致太慢。其实可以在android tools里下载Intel CPU的模拟器。
可以在android tools里选择Intel
[attachment=53801]
新建模拟器的时候,选择Intel的CPU
[attachment=53802]
实验下来,速度提升不少。基本已经满足日常开发(这一点也同样适应windows)
6.真机调试(关于驱动)
令人高兴的是,mac下的adt默认支持大部分的android手机,所以,一般手机连上mac,会自动在Device里显示。
[attachment=53803]
但一些不常见的,就不能显示出来。而且mac跟windows不一样,很难找到mac下的该手机的驱动。其实这不是驱动问题,而是adt不知道该手机的USB Vendor ID。可以通过另外一个方法解决
一、首先要下载一个app:IORegistryExplorer。通过这个app可以查看连接上的USB设备的信息。选择IOUSB,可以看到名为“xxx”的设
野冲备,找到idVendor
二、打开文件:~/.android/adb_usb.ini 。然后直接在最后一行加上idVendor的值
[attachment=53808]
最后重启adt,就可以在Devices里看到该手机的信息了。
7.一些工具的推荐
跟windows上一样,在mac上也会有各种各样的app可以提高我们的工作效率。这里列个表(以下app都可以在威锋网上找到)
一、Alfred。Alfred其实是一个app平台,他包含很多功能强大的app。比如,他可以替代系统的Spotlight,也可以作为搜索引擎的快捷入口,也可以作为多重黏贴板。
[attachment=53804]
[attachment=53805]
[attachment=53806]
二、BetterTouchTool.这是一个可以把快捷键绑定到触摸板上的app。
首先说下,mac上的触摸板非常强大,我现在已经完全抛弃鼠标,全部用触摸板替代。BTT这个app可以让触摸板的功能更加丰富。他可以添加单指,双指,三指,四指,五指的“轻按,点击,左右上下扫。四个角触摸”等组合的操作。而且他还分各种不同的app不同的配置。
[attachment=53807]
可能大家这样听起来有点迷糊,但我还是推荐大家玩下BTT,他会带你进入一个新的世界。
8.虚拟机的推荐
最后谈下虚拟机,mac毕竟不能代替主流系统windows,所以还是会有一些操作需要在windows上做。mac自带的 Boot Camp,虽然兼容windows,但切换系统的时候需要重启,非常繁琐。
在这里我推荐大家使用Parallels Desktop。这是一款mac上最优秀的虚拟机,配置简单,使用便捷。而且还有不少人写了视频教程。
9.最后总结
mac确实是非常优秀的操作系统,他的体验比windows要强大很多。不过在国内毕竟还是以windows为主,很多软件和游戏都没办法安装。但目前看来,办公和学习是没有任何问题。
㈢ mac android源码编译可以在移动硬盘上吗
1.Mac下安装Ubuntu双系统
(1)Ubuntu版本:Ubuntu 15.10
注:实际上一开始我是从Ubuntu 16.04 LTS开始的,但编译过程中出现提示需要OpenJDK1.7的情况,但是Ubuntu 16.04 LTS的软件包里只有OpenJDK1.8 和OpenJDK1.9.
于是我换成了Ubuntu 15.10,虽然它不是LTS版本,但是它的OpenJDK版本比较齐全。
当然后来编译时又提示需要OpenJDK1.8,所以这个选择还算明智。
㈣ 如何在mac系统上使用opencv for android
一、安装OpenCV for MAC
1. 首先下载opencv for mac安装源文件,解压缩
2. 安装cmake程序。下载cmake的dmg文件安装即可。
3. 通过终端进入存放解压后的opencv文件夹,编译安装opencv,使用命令如下:
>sudo cmake -G "Unix Makefiles"
>sudo make -j8
>sudo make install
4. 经过步骤3则OpenCV已经被Compile完成,并且相应的lib文件存放在“/usr/local/lib”文件夹,h文件存放在“/usr/local/include”。
至此,opencv for Mac 安装完毕。
二、在MAC下使用OpenCV
1. 使用终端编译。新建DisplayImage.cpp文件,代码如下
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main( int argc, char** argv )
{
Mat image;
image = imread( argv[1], 1 );
if( argc != 2 || !image.data )
{
printf( "No image data \n" );
return -1;
}
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(0);
return 0;
}
2. 新建CMakeLists.txt文件,代码如下:
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
3. 编译两个文件
cd <DisplayImage_directory>
cmake .
make
4. 运行编译好的结果
./DisplayImage lena.jpg
三、在XCode中使用OpenCV
1. 创建一个空的command line工程。
2. 在main.cpp中粘贴以下代码:
//
// main.cpp
// Created by Jason Yank on 13-05-08.
// Copyright (c) 2013年 Jason Yank. All rights reserved.
//
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv/cvaux.hpp>
#include <fstream>
using namespace std;
#define BYTE unsigned char
int main(int argc, const char * argv[])
{
// insert code here...
#if 1
//get the image from the directed path
IplImage* img = cvLoadImage("/Users/jasonyank/1.jpg", 1);
//NSLog(img);
//create a window to display the image
cvNamedWindow("picture", 1);
//show the image in the window
cvShowImage("picture", img);
//wait for the user to hit a key
cvWaitKey(0);
//delete the image and window
cvReleaseImage(&img);
cvDestroyWindow("picture");
#endif
//return
return 0;
}
3. 添加lib文件:右键点击工程名,选择“Add files to..”,在文件选择对话框弹出来时输入“/”,在弹出的路径框中输入:/usr/local/lib,全选该文件夹下的全部dylib文件,添加至工程。
5. 添加lib文件查找支持: 点击工程名文件,进入“Build Settings”选项卡,在“Library Search Paths”栏中输入“/usr/local/lib”
6. 添加头文件:点击工程名文件,进入“Build Settings”选项卡,在“Header Search Paths”栏中输入:“/usr/local/include /usr/local/include/opencv”
7. 编译运行整个工程,运行成功~~
四、在Eclipse中使用OpenCV
1. 按照正常的步骤,使用eclipse建立一个Mac C++工程,包含一个cpp文件,代码如xcode中的代码相同即可。
2. 右击工程名, 选择“Properties”,在属性配置页中选择,点击C/C++ Build, 在下拉选项中选择 Settings. 在右边的选项卡中选择 Tool Settings。
3. 在GCC C++ Compiler选项列表中选择Includes,在Include paths(-l)中添加安装好的opencv的头文件存放目录:/usr/local/include/
4. 在MacOS X C++Linker选项列表中选择Library,在Library search path (-L)中添加安装好的opencv Lib文件存放目录:/usr/local/lib/
5. 在MacOS X C++Linker选项列表中选择Library, 在Libraries(-l) 中依次点击“+”号,添加需要使用的Lib文件(通常情况下,使用前三个):
opencv_core opencv_imgproc opencv_highgui opencv_ml opencv_video opencv_features2d opencv_calib3d opencv_objdetect opencv_contrib opencv_legacy opencv_flann
6. 重新build all工程,大功告成~~*^_^*
㈤ 有一台macbook air ,想学习安卓开发,不知道怎么搭建开发环境
首先请了解一下安卓应用的开发语言。
安卓的开发工具分为 Android SDK 和 Android NDK 两种,目前都由谷歌在维护和更新。SDK 是开发所有安卓应用所必须使用的,使用 Java 作为编程语言。NDK 是开发应用的底层框架用的,适用于开发一些需要精确控制 CPU 使用效能的应用,比如游戏和物理引擎等。NDK 使用的是较底层的 C 语言和 C++ 语言。由于进行一般应用的开发使用的是Android SDK,所以题主主要应该学习的语言是 Java。
要绘制你的应用的界面,你还需要学习 XML 标记语言,因为安卓的界面元素使用 XML 来绘制。由于 XML 不是编程语言,所以相对比较简单,了解一下它的构成方法即可。
接下来请了解一下开发环境的配置。
首先请题主最好将你的 Mac 升级为最新的 OS X El Capitan 系统。这个系统可以在 Mac App Store 上免费下载。
这些内容准备好以后,就可以开始安卓应用的开发了。学习 Java 是一个基础,更重要的是学习 SDK 的使用方法。网上有大量的此方面帮助文档、论坛和教程,如果英语水平还可以,并且有方法访问海外网站的话,更推荐查找英文的第一手资源。谷歌的 Android 官方文档、StackOverflow 和 New Think Tank 等网站上有非常好的 Android 开发学习资料。
㈥ 在MACOX上的ANDROIDSTUDIO如何编译OPENSSL原生的C库成动态的.SO库
目前暂不支持开发工具编译C、c++代码生成so文件,应该后续版本会有的。
.so 为共享库,是shared object,用于动态连接的,和dll差不多,可以这样调用so文件:
调用 System.out.println(System.getProperty("java.library.path"));
得到/usr/java/jdk1.5.0_13/jre/lib/i386,将SO文件放在该目录下
运行java程序,输出了由C语言函数计算出的结果
㈦ Mac 系统上配置Android Studio开发环境
依据自己的需求选择对应的版本
安装(按照默认目录位置安装就行)安装完成后打开终端 Terminal 或 iTerm2
一般为 /Library/Java/JavaVirtualMachines/jdk版本.jdk/Contents/胡册Home/
打开文件后山册,添加 sdk 的安装路径,如果安装 Android Studio 而且没有手动去变换路径的话,直接复制下面两行命裤唯宏令后将 用户名 改为 自己电脑的名字 即可。如果自己修改了路径,则找到 /Android/sdk/platform-tools 和 /Android/sdk/tools 的路径,替换即可。
显示 adb版本号 和 安装路径 即为设置成功 如下