- 浏览: 357792 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
驭乐MJ:
你好,我卸载rar后,按命令执行安装unrar或者是p7zip ...
Ubuntu rar 乱码问题 -
郭建雄:
不错,受用了,谢谢你的分享 !
java线程中的interrupt,isInterrupt,interrupted方法 -
zuosheng:
...
用ViewFlipper实现各种切换动画 -
lxtkong-029:
原来一直不是很清楚,看来你的文章明白了,太感谢了!
java线程中的interrupt,isInterrupt,interrupted方法 -
ihopethatwell:
嗯,看到了,要在项目中添加jni
Ubuntu 10.04安装android NDK
假设已有ADT创建的android项目HelloAndroid并且已经有可用的proguard混淆器(我用的proguard4.4)。
第一步要做的是为项目添加ant build支持。由于ADT插件并不直接支持proguard等混淆器,所以不能像j2me那样在有功能比较完善的插件(如EclipseME等)的基础上直接一键混淆一键打包,不过好在android sdk本身提供了比较完善的ant编译支持,可以通过类似命令行编译的方式,对android项目的整个编译、生成过程进行自定义,从而能够实现对编译中途生成的java bytecode进行插入proguard混淆操作然后再转android dex码生成apk。
进入命令行模式,并切换到项目目录,执行如下命令为ADT创建的项目添加ant build支持:
d:\android-sdk-windows\tools\android.bat update project -p . -t 3
结果如下:
Updated default.properties
Updated local.properties
Added file D:\Projects\HelloAndroid\build.xml
刷新eclipse项目文件夹,侦测出sdk工具添加的build.xml和local.properties文件。然后,修改项目属性,在Builders栏中新建一个Ant Builder(Ant在较新版本的Eclipse中已经内置,旧版本的话可能需要自己安装相关插件),对其中Buildfile选择生成的build.xml,Base Directory选择项目目录即可。如果希望在编译项目时自动执行ant build就在刚创建builder的地方给ant builder打上勾,不勾的话就得手动执行build.xml进行编译。
现在尝试编译项目的话,会在控制台内显示类似如下的信息:
Buildfile: D:\Projects\HelloAndroid\build.xml
[setup] Project Target: Android 2.1
[setup] API level: 7
help:
[echo] Android Ant Build. Available targets:
[echo] help: Displays this help.
[echo] clean: Removes output files created by other targets.
[echo] compile: Compiles project’s .java files into .class files.
[echo] debug: Builds the application and signs it with a debug key.
[echo] release: Builds the application. The generated apk file must be
[echo] signed before it is published.
[echo] install: Installs/reinstalls the debug package onto a running
[echo] emulator or device.
[echo] If the application was previously installed, the
[echo] signatures must match.
[echo] uninstall: Uninstalls the application from a running emulator or
[echo] device.
BUILD SUCCESSFUL
Total time: 375 milliseconds
这样就基本说明使用ant build的android项目已经ok了,build脚本默认target是help,所以会显示如上信息,修改target为debug或release就可以像无ant时一样编译、生成以及调试了。
接下来看这一部分:
view plaincopy to clipboardprint?
<!-- Execute the Android Setup task that will setup some properties specific to the target,
and import the build rules files.
The rules file is imported from
<SDK>/platforms/<target_platform>/templates/android_rules.xml
To customize some build steps for your project:
- copy the content of the main node <project> from android_rules.xml
- paste it in this build.xml below the <setup /> task.
- disable the import by changing the setup task below to <setup import="false" />
This will ensure that the properties are setup correctly but that your customized
build steps are used.
-->
上面提示的就是我们需要做的,自定义build过程,根据提示copy android_rules.xml里
节点的内容到下,然后修改setup属性,加入import=”false”。
完事后再次执行build.xml的话就已经用自己的build.xml覆盖了默认的整个build过程了。
如果在以上编译过程中控制台提示了编码问题,如中文注释等,可以对target compile中的
view plaincopy to clipboardprint?
<javac encoding="utf-8" target="1.6" debug="true" extdirs=""
destdir="${out.classes.absolute.dir}"
bootclasspathref="android.target.classpath"
verbose="${verbose}" classpath="${extensible.classpath}">
<src path="${source.absolute.dir}" />
<src path="${gen.absolute.dir}" />
<classpath>
<fileset dir="${external.libs.absolute.dir}" includes="*.jar" />
</classpath>
</javac>
中的encoding值进行修改,如改为GBK。
接下来,添加调用proguard混淆器的build targe:”optimize”
view plaincopy to clipboardprint?
<target name="optimize" depends="compile">
<jar basedir="${out.classes.absolute.dir}" destfile="temp.jar" />
<java jar="E:/android/proguard4.5.1/lib/proguard.jar" fork="true" failonerror="true">
<jvmarg value="-Dmaximum.inlined.code.length=32" />
<arg value="-injars temp.jar" />
<arg value="-outjars optimized.jar" />
<arg value="-libraryjars '${android.jar}'" />
<arg value="-dontpreverify" />
<arg value="-dontoptimize" />
<arg value="-dontusemixedcaseclassnames" />
<arg value="-repackageclasses" />
<arg value="-allowaccessmodification" />
<arg value="-keep public class * extends android.app.Activity" />
<arg value="-keep public class * extends android.app.Service" />
<arg value="-keep public class * extends android.content.BroadcastReceiver" />
<arg value="-keep public class * extends android.content.ContentProvider" />
<arg value="-keep public class * extends android.view.View" />
<arg value="-optimizationpasses 1" />
<arg value="-verbose" />
<arg value="-dontskipnonpubliclibraryclasses" />
<arg value="-dontskipnonpubliclibraryclassmembers" />
</java>
<delete file="temp.jar" />
<delete dir="${out.classes.absolute.dir}" />
<mkdir dir="${out.classes.absolute.dir}" />
<unzip src="optimized.jar" mce_src="optimized.jar" dest="${out.classes.absolute.dir}" />
<delete file="optimized.jar" />
</target>
其中需要修改java jar=”D:/Program Files/proguard4.4/lib/proguard.jar”中的proguard路径为对应路径,
<arg value=”-keep public class ............... /> 这部分中的class需要按照manifest中指定的类进行修改,同时,引用的外部lib也需要在这里指定,具体过程可以参考最后的几篇文章。
最后,修改-dex target的depends项,depends=”compile”加入optimize,为:depends=”compile,optimize”
再次执行编译,可看到optimize target的输出如下:
optimize:
[jar] Building jar: D:\Projects\HelloAndroid\temp.jar
[java] ProGuard, version 4.4
[java] Reading input…
[java] Reading program jar [D:\Projects\HelloAndroid\temp.jar]
[java] Reading library jar [D:\android-sdk-windows\platforms\android-2.1\android.jar]
[java] Initializing…
[java] Ignoring unused library classes…
[java] Original number of library classes: 2514
[java] Final number of library classes: 196
[java] Shrinking…
[java] Removing unused program classes and class elements…
[java] Original number of program classes: 13
[java] Final number of program classes: 5
[java] Obfuscating…
[java] Writing output…
[java] Preparing output jar [D:\Projects\HelloAndroid\optimized.jar]
[java] Copying resources from program jar [D:\Projects\HelloAndroid\temp.jar]
[delete] Deleting: D:\Projects\HelloAndroid\temp.jar
[delete] Deleting directory D:\Projects\HelloAndroid\bin\classes
[mkdir] Created dir: D:\Projects\HelloAndroid\bin\classes
[unzip] Expanding: D:\Projects\HelloAndroid\optimized.jar into D:\Projects\HelloAndroid\bin\classes
[delete] Deleting: D:\Projects\HelloAndroid\optimized.jar
表示proguard混淆已成功运作。
PS:如果在以上过程中提示javac不能找到这样类似的问题的话,可能的原因是创建的ant builder中的JRE项没有指定对,可以尝试修改为使用Separate JRE换换ant的JRE试试。
主要参考文章:
为android项目增加支持ant构建 http://marshal.easymorse.com/archives/1665
請為你的 Android 程式加上 obfuscation 吧! http://ysl-paradise.blogspot.com/2008/10/android-obfuscation.html
android混淆(Obfuscate) http://fonter.iteye.com/blog/489728
转载:http://blog.k-res.net/?p=711
发表评论
-
通过FutureTask设置超时,用于请求网络,执行任何异步超时任务
2013-10-10 15:53 0public class TestConnectTimeOu ... -
使用Eclipse调试Android Native Application
2013-07-08 21:31 0由于最近需要调试C++程序,以后都是暴力调试的,暴力调 ... -
Android新版NDK环境配置(免Cygwin)
2013-07-05 08:41 0前言:Android NDK r7及以上的版本已经集成 ... -
scroller 滚动效果
2013-04-25 14:22 0package com.testalaph; i ... -
点9 ondraw bitmap
2013-04-17 14:26 0private void init(Context ... -
点9 ondraw bitmap
2013-04-17 14:20 0点9图片ondraw画: private void ... -
通过activityGroup动态管理activity
2013-01-20 15:54 0// @Override // protected v ... -
scroller text view 滚动文字
2012-12-08 10:18 0package com.sc; import an ... -
android 截屏
2012-11-05 14:16 0//截屏2 private Bitmap jieping2 ... -
Android下Dialog及Activity屏蔽Home键详解
2011-12-13 11:53 0屏蔽其他键,重写onKeyDown Java代码 ... -
clipRect 介绍
2011-12-02 14:13 6662android的clip有以下两点疑问: Clip(剪切)的 ... -
android知识整理
2011-11-03 10:06 11. android单实例运行方 ... -
Android 使用junit测试
2011-08-05 16:18 912使用方式也非常的简单,只需要在AndroidManifest ... -
Android开发:调试工具集
2011-08-05 15:07 17841. 查看当前堆栈1) 功能:在程序中加入代码,使可以在log ... -
Android中attr自定义属性详解
2011-07-12 16:23 38635<LinearLayout xmlns:android= ... -
Drawable Mutations(Android Drawable 深入分析)
2011-07-11 11:08 1618Android's drawables对编写 ... -
检查系统是否安装某app
2011-07-11 10:45 917/** * Indicates whether th ... -
ImageView的scaletype属性
2011-07-07 13:21 808ImageView的属性android:scaleType ... -
Android UI --- 设置ProgressBar的颜色
2011-07-04 14:26 1238基本原理是在drawable目录中建立一个xml文件,描述一下 ... -
关于android的ListView优化
2011-06-24 16:58 10631.去除ListView的黑色间隔线 vie ...
相关推荐
1.Google已停止对ADT的支持,尤其是JDK8推出后,ADT已经...3.里面已经包含com.android.ide.eclipse.adt_24.2.0.20160729.jar修复支持了jdk8编译环境 4.里面已经包含了build-tools\25.0.3的dx.jar修改后文件 参考链接: ...
博客中用到的Eclipse ADT向Android Studio迁移用到的材料。blog地址:http://blog.csdn.net/guchuanhang/article/details/51392023
在eclipse中添加android ADT
安卓ADT必不可缺少的工具,主要为Eclipse插件,Eclipse扩展安卓应首先应当安装,必不可少
Eclipse ADT 24.2.0版本,可以解决Eclipse打不出log的问题
eclipse adt 24.0.2 终极版 谷歌不更新了,这个是最终版本ADT
Eclipse ADT Plugin For Android 15.0.1.zip
以图文并茂的方式手把手教你如何下载jdk8.11,安装jdk,下载eclipse,安装eclipse,下载ADT,安装ADT;下载Android sdk,安装Android SDK---最终帮你完成Eclipse+Android开发环境的安装。 安装完毕教你如何验证JDK...
Eclipse ADT 离线安装包,用于Eclipse安装ADT进行安卓程序开发
由于 eclipse ADT-23.0.0.zip文件太大,我将其拆分进行压缩,使用时需要下载 eclipse ADT-23.0.0.zip(1)和eclipse ADT-23.0.0.zip(2);同时将eclipse ADT- 23.0.0.zip(2)文件解压到ADT-23.0.0.zip(1)的plugins...
这个汉化补丁是eclipse 3.7的版本的汉化补丁,所以eclipse ADT3.7以下的都能汉化,把两个压缩包全部解压,把里面的两个文件夹复制到你的eclipse ADT目录下覆盖就OK,注意不是把压缩包解压后的eclipse文件夹直接就复制...
Eclipse插件ADT安装教程,翻译版。
android+eclipse+ADT-24.2.0-20160729。android开发 eclipse中的adt最新,ADT-24.2.0-20160729。百度网盘下载。
本人使用的是ADT是Version 23.0.2,支持Android 6.0之后的系统环境,最高版本23,在创建Android项目的时候,每次创建项目选择“Compile With”低于6.0版本的时候,都无法自动生成R文件,这个时候MainActivity文件...
Google已停止对ADT的支持,尤其是JDK8推出后,ADT已经不能使用,报unsupported class file version 52.0等问题 该ADT版本已去除限制,可继续使用Eclipse开发
Android eclipse adt bundle 安卓eclipse软件开发IDE 开发工具
eclipse开发安卓对应开发安卓的SDK版本
将 AAR 转换为 Eclipse Android 库项目这是一个独立的 Python 脚本,可将转换Eclipse 能够导入的 Android 库项目。 这允许仍在使用 Eclipse ADT 的现有项目引用在*.aar分发的新库而不会遇到太多麻烦。 注意在 ...
android开发eclipse adt10
mac_eclipse+adt 需要自己搭建eclipse安卓环境的同学,可以下载啦!