Ⅰ android中用ANT打包如何将内容复制到AndroidManifest文件中
看这么的行不行。分析下
首先。android是支持自动构建的对吧。也就有一套逻辑自持把你的工程目录下的那些所有文件打包成apk文件。就是sdk\tools\ant目录下那个build.xml的作用。他有一个主文件是公共的一般只是引入即可。还有作为辅助的ant.properties 保存本地信息内容的
其中这个主文件他是通过路径的方法找到项目的AndroidManifest文件的
名字的引用(build.xml中的一段)
<property name="manifest.file" value="AndroidManifest.xml" />
目标的指向
<!-- get the project manifest package -->
<xpath input="${manifest.abs.file}"
expression="/manifest/@package" output="project.app.package" />
这样就能知道ant的工作原理和步骤。
-》定位项目跟目录。-》找到AndroidManifest文件等等。-》根据自己的逻辑去组织编译代码还有打包混淆等等操作。
其中可以从“找到AndroidManifest文件”这一步出手。想办法控制这个引用是你能分配的。以任务的形式来管理。
其中一个方法是,准备n个版本的AndroidManifest文件 然后通过target任务来决定某次编译具体使用你做的N个中的哪一个。这是简洁算是取巧方法
另外一个方法是。你把所有的ant编译过程通过调试(xml代码也可以调试,断点跟踪)来弄明白每个任务的具体含义。然后通过改写的手段来diy你自己的build 这是最彻底最有知识量的方法。也就不用那么多n版本的AndroidManifest,通过replace某个字段值即可
Ⅱ 如何混淆android工程打成的jar包
混淆android工程打成的jar包方式如下:
从SDK2.3开始、在android-sdk-windows ools下面多了一个proguard文件夹让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以,如下图:
Ⅲ android混淆打包 功能不能用
ProGuard来进行混淆打包,大大的优化Apk包的大小。但是注意ProGuard对文件路径的名名很有讲究,不支持括号,也不支持空格。在混淆过后,可以在工程目录的proguard中的mapping.txt看到混淆后的类名,方法名,变量名和混淆前的类名,方法名,变量名。
在使用Eclipse新建一个工程,都会在工程目录下生产配置project.properties和proguard-project.tx。
#
To
enable
ProGuard
to
shrink
and
obfuscate
your
code,
uncomment
this
(available
properties:
sdk.dir,
user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
#
Project
target.
target=android-10
project.properties用于配置Android工程的一些属性,#号的话表示当前行是注释,这里的proguard.config就用于指定ProGuard的混淆配置文件,并对使用release方式打包应用程序时开启代码混淆功能。对于是否是使用release方式打包,和AndroidManifest.xml中application的android:debuggable属性有很多关系。如果该值为android:debuggable="true",那么最终就是debug方式打包。最明智的方式就是在AndroidManifest.xml并不显示的指定它,而是是打包工具在打包时来决定它最终的值。对于ant就是ant
release或ant
debug。而对于直接在Eclipse中使用run
或debgu来打包的话就是debug,使用export的话就是release.
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
这里的话指定了混淆的基本配置文件proguard-android.txt,和混淆的个性化配置文件proguard-project.txt。
Ⅳ android ant混淆编译打包生成jar文件,如何将jni生成的lib**.so库文件同时打包
在混淆配置文件中添加这句
-keepclasseswithmembernames class * {
native <methods>;
}
Ⅳ Android怎么把一个现有工程打包成sdk
方法一
使用eclipse导出jar包:我们知道一个java项目是可以用eclipse导出jar包的,安卓工程也一样,只要按普通的方法export就可以了。不过,export出来的包是没有混淆过的,如果你要混淆,还需要单独对你的jar包执行一次proguard程序,可参考proguard使用指南。
方法二
使用脚本打包:我个人比较喜欢该方法,因为android工程项目并不是只有JAVA代码,有的资源也需要提供出来,而使脚本可以更加定制化一些。
android的SDK默认提供了一个ant打包的脚本,具体使用方法,可参考之前的BLOG,使用ant打包APK及依赖包最佳解决办法
我们可以看出,打包,最终调用的其实是android sdk下的ant脚本,既然安卓已经帮我们写好了ant脚本,我们就好好利用。
使用上面的BLOG中介绍的方法,先在工程目录中生成你的build.xml,然后自己写一个target
<target name="sdk"
depends="-set-release-mode, -release-obfuscation-check, -compile, -post-compile, -obfuscate">
</target>
这段target代码,就是只执行到了混淆的脚本。然后我们在build.xml中选择右键,run as, 第二个ant Build,然后选择要执行的target为我们加上的sdk。
等执行完成后,就会在project/bin/proguard/obfuscated.jar找到你所要的jar包。
Ⅵ android混淆脚本 怎么去掉logger包
一、理论知识
ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段(field)、方法和属性值(attribute)。它也能优化字节码并删除无用的指令。最后,它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小,并很难进行逆向工程。
二、基本使用
在Android应用程序也可以使用ProGuard来进行混洗打包,大大的优化Apk包的大小。但是注意ProGuard对文件路径的名名很有讲究,不支持括号,也不支持空格。在混淆过后,可以在工程目录的proguard中的mapping.txt看到混淆后的类名,方法名,变量名和混淆前的类名,方法名,变量名。
在使用Eclipse或Ant打包应用程序时,都是使用Android工程目录的project.properties文件来指定配置。关于Android中如何使用ant打包请参考《Android中使用Ant编译打包》
在使用Eclipse新建一个工程,都会在工程目录下生产配置project.properties和proguard-project.tx。
文件如下所示:
例1
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
target=android-10
Ⅶ android 加入library如何混淆
android工程会看到项目有
project.properties这个文件就是用来开启项目是否混淆
proguard-project.txt 这个文件就是记录了代码混淆的属性
要开启混淆,只需要将project.properties 文件中的
# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了。
关于proguard-project.tx混淆的属性:
通常情况下,我们只需要作以上几步操作就能满足需求,如果有一些特殊要求,某些类或者jar包不需要混淆,这个时候就需要修改proguard-project.txt文件了。以下是网上搜索的网友分享的经验:
1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包
这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错。还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆。
2.另外还有其他一些经验:
-optimizationpasses 5压缩等级
-dontusemixedcaseclassnames 【混淆时不会产生形形色色的类名 】
- 【指定不去忽略非公共的库类。 】
-dontpreverify 【不预校验】
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 【优化】
-keep public class * extends android.app.Activity【不进行混淆保持原样】
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keep public abstract interface com.asqw.android.Listener{
public protected <methods>;【所有方法不进行混淆】
}
-keep public class com.asqw.android{
public void Start(java.lang.String); 【对该方法不进行混淆】
}
-keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)】
native <methods>;
}
-keepclasseswithmembers class * { 【保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。】
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity {【保护指定类的成员,如果此类受到保护他们会保护的更好 】
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {【保护指定的类文件和类的成员】
public static final android.os.Parcelable$Creator *;
}
Ⅷ 如何使用Android Studio打包混淆的Jar
可以尝试把"-libraryjars"都去掉,因为gradle的Proguard默认会去libs里面添加库依赖。
所以导致类重复了。
Eclipse迁移到Android studio步骤如下:
一、从Eclipse中导出:
1、将你的ADT插件版本升级到22.0以上。
2、在Eclipse中,选择File-->Export。
3、在弹出的导出窗口中,打开Android的文件夹,选择“Generate Gradle Build Files”。
4、选中你想要导入到Android Studio中的项目,Finish。
注意:导出的项目将会和原来的项目在同一目录,覆盖原来的同时,会新增一个叫build.gradle的文件,导入Android Studio时将首先读取这个文件。
二、导入到Android Studio:
1、在Android Studio 中,首先关掉你当前的打开的项目。
2、在欢迎界面,点击Import Project(注:也是可以直接在菜单选择Import project的)。
3、选中你在Eclipse中导出的项目,展开目录,点击build.gradle文件,然后OK。
4、在之后的弹出对话框中,会要求你选择Gradle的配置,选中Use gradle wrapper.(注:也可以自定义你本机装的Gradle)。
注意:如果没有Grade build文件,也是可以将普通的安卓项目导入到Android Studio中,它会用现有的Ant build.但为了更好地使用之后的功能和充分使用构建变量,还是强烈地建议先从ADT插件中生成Gradle文件再导入Android Studio。
Ⅸ 如何混淆android代码以及注意事项
2.3SDK的两个新特点:
1.刚安装上2.3时,查看sdk目录,发现在 ools下新增了一文件夹“proguard”,如下图,我就在想是不是Google终于官方对proguard考虑进去了。理论上,对java的混淆都是可以的,但关键在于如何编写proguard的混淆脚本。
注意要点:
1.混淆以后的包会比混淆前的包小一点,一定要注意这点.
如果混淆不成功,请在第2步,将proguard.config=proguard.cfg修改为proguard.config=E:Mobile_DevelopGoogle_AndroidpublicGoldenBeach_newproguard.cfg这种类似的用绝对路径,请注意绝对路径中的文件夹名不能含有空格,如果有空格请替换为"_".
2.android在用proguard混淆时,一般情况下使用系统自带的配置文件就可以保持大部分外部需要引用的类,比如Activity,view扩展等等,但是有些情况下一些引入的外部lib,如果被混淆也会出现各种各样的问题,如果不想混淆这些包,就要加上
-keep class packagename.** {*;}
这样就能完整保持原有class了