android打成jar
⑴ 如何将一个完整的Android工程打包成jar包
今天我教大慎粗家如果将Android工程打成Jar包的形式
工具/原料
Eclipse SDK jdk
方法/步骤
1
将一个Android的工程打成Jar包。右键工程--->Export
2
点击java--->JAR file---->Next
步骤纤拿阅读
3
勾选src包即可,其他项不选
4
点击finishi即可,在D盘就可以看到library的jar包
5
其他应用程序引用就可以
END
注意事项
这个只是代码类的达成jar包,不包含res资宽竖镇源
⑵ android 项目如何打包成jar 使用
第一步,把普通的android project设置成库项目
库项目也是一个标准的android项目,因此你先创建一个普通的android项目。 这个项目可以起任何的名称,任何的报名,设置其他需要设置的字段等,如图1所示。
接着把项目设置成库项目,步骤如下
在Package Explorer中, 鼠标右键项目文件夹,点击 Properties.
在Properties 窗口, 选择"Android" ,Library属性显示在右下边.
把"is Library" 单选框选择上,再点击 Apply.(比如http://www.tiecou.com/)
点击 OK 关闭Properties 窗口.
这时,这个项目就变成库项目了。
当然,java项目也可以让其变成一个库项目,非常简单,执行上面的四步。其他程序项目就可以引用库项目了。
图 1.使一个项目为库项目
创建manifest文件
一个库项目的manifest文件也和标准的android应用程序一样,声明所有共享的组件。
比如APIDemo中的TicTacToeLib 这个例子,库项目声明了Activity GameActivity:
<manifest>
...
<application>
...
<activity android:name="GameActivity" />
...
</application>
</manifest>
第二步 引用库项目
如果你开发的应用程序想要包括库项目中的代码和资源,非常简单,引用步骤如下
在Package Explorer中, 鼠标右键项目文件夹,点击 Properties.
在Properties 窗口, 选择"Android" ,Library属性显示在右下边.
点击Add ,打开了Project Selection对话框.
从可用库项目列表选择一个项目,然后点击 OK.
对话框关闭之后点击 Apply (在Properties窗口).
点击 OK 关闭Properties 窗口.
完成以上六步,Eclipse 会重建项目,把库项目中的内容包含进去。 如图2所示
图 2.让项目引用一个库项目
如果你想增加多个库项目的引用,使用up和down可以设置他们的相对的优先级和合并顺序。工具在合并引用的库的时候顺序是从低优先级(列表的下面)到高优先级(列表的上面)。 如果不只一个库定义了相同的资源ID,这个工具选择资源时会选择高优先级的资源。应用程序自身拥有最高的优先级,自身的资源zThe application itself has highest priority and its resources are always used in preference to identical resource IDs defined in libraries.
在menifest文件中声明库中的组件
在manifest文件中必须增加对在当前程序中用到的库项目中的所有的组件。比如,你必须声明任何用到的 <activity>, <service>, <receiver>, <provider>等,<permission>, <uses-library>,和其他类似的元素。
声明库项目中的组件时,必须使用包含包名的类全名。
在TicTacToeMain例子中,声明库Activity GameActivity :
<manifest>
...
<application>
...
<activity android:name="com.example.android.tictactoe.library.GameActivity" />
...
</application>
</manifest>
⑶ 如何使用Android Studio打包混淆的Jar
使用AS打包混淆Jar包,网络一下,一片一片的,但是很多都是零零散散的写得不是很详细或是直接拷贝,按照他们的教程测试总不是很顺利,所以这里我就把我个人学习AS打包混淆Jar的成果总结出来,希望对大家有帮助。个人觉得写得还是比较详细的
使用gradle混淆打包Jar
使用AS开发项目,引入第三方库是非常方便的,我们只需要在build.gradle中配置一行代码就可以轻松引入我们需要的开发库。那么gradle可以帮我们混淆打包Jar吗?答案是当然可以!
那么我们如何打包Jar呢?其实我们在编译项目的时候,AS已经帮我们在目录build/intermediates/bundles/release/classes.jar打好了Jar。那么我们需要做的就是把Jar进行混淆的工作了。这里以个人项目bannerDemo为例,混淆步骤如下:
在你的library的build.gradle文件中加入如下代码:
task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
// 未混淆的jar路径
injars 'build/intermediates/bundles/release/classes.jar'
// 混淆后的jar输出路径
outjars 'build/outputs/cocolove2-banner-1.1.0.jar'
// 混淆协议
configuration 'proguard-rules.pro'}
配置混淆协议
1.我们先把AS自带的协议配置进来中文注释,笔者添加
# This is a configuration file for ProGuard.# http://proguard.sourceforge.net/index.html#manual/usage.html## Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer# versions are distributed with the plugin and unpacked at build time. Files in this directory are# no longer maintained.#表示混淆时不使用大小写混合类名-dontusemixedcaseclassnames#表示不跳过library中的非public的类-#打印混淆的详细信息-verbose# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own).-dontoptimize##表示不进行校验,这个校验作用 在java平台上的-dontpreverify# Note that if you want to enable optimization, you cannot just# include optimization flags in your own project configuration file;# instead you will need to point to the# "proguard-android-optimize.txt" file instead of this one from your# project.properties file.-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native-keepclasseswithmembernames class * {
native <methods>;
}# keep setters in Views so that animations can still work.# see http://proguard.sourceforge.net/manual/examples.html#beans-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}# We want to keep methods in Activity that could be used in the XML attribute onClick-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe.-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}
2.AS自带的配置文档还是不够的,我们还需要加入如下配置
这里只展示基本操作,在实际开发中可能需要更多依赖,要根据具体情况引入自己需要的依赖包
#下面代码中的xx是指我个人的配置路径,涉及个人信息,这里以xx代替
#引入依赖包rt.jar(jdk路径)
-libraryjars /xxx/xx/xx/jdk1.8.0_77.jdk/Contents/Home/jre/lib/rt.jar
#引入依赖包android.jar(android SDK路径)
-libraryjars /xx/xx/xx/Android/sdk/platforms/android-24/android.jar
#如果用到Appcompat包,需要引入
-libraryjars /xxx/xxx/xx/xxx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.1.1/jars/classes.jar
-libraryjars /xx/xx/xx/xx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/support-v4/24.1.1/jars/classes.jar
#忽略警告
-ignorewarnings
#保证是独立的jar,没有任何项目引用,如果不写就会认为我们所有的代码是无用的,从而把所有的代码压缩掉,导出一个空的jar
-dontshrink
#保护泛型
-keepattributes Signature
3.加入自己不想混淆的配置根据实际需求配置
-keep class com.cocolove2.library_banner.view.**{*;}
在命令行执行命令混淆Jar,提示BUILD SUCCESFUL表示成功!
//mac./gradlew makeJar//windowsgradlew makeJar
示例展示
我这里以混淆library-banner库为例
- #log提示缺少依赖Jar,或者路径不对
- 解决办法:乖乖的引入缺少的依赖jar和修改路径
- #提示如下异常[INFO] java.io.IOException: Can't read [D:Program
- FilesJavajdk1.8.0_91jrelib t.jar] (Can't process class [com/oracle/net/Sdp$1.class] (Unsupported class version number
- [52.0] (maximum 51.0, Java 1.7)))
- 解决办法:
- 下载最新proguard(支持Java 8的版本),然后将下载的文件解压。
- 将andorid sdk/tools/proguard/lib中的jar包,替换为刚下载解压文件中的lib包。
proguard5.2.1下载地址
1.首先我们要看看下我们的buildTool的配置,如下图:
混淆报错解决办法个人遇到的
阅读
⑷ AndroidStudio 打包生成Jar包
在开发当中,有一些功能我们是不依颂铅颤赖任何Res 资源的,这野败个时候我们就可以直接提供业务方jar 包,以避免当中出现一些冗余资源如AAR。下面就 AndroidStudio 3.5.2 版本生成jar 包方式作出笔记。
新建model 就不在此过多赘述。该model是Library 而不是 application。
大家注意 from('build/intermediates/packaged-classes/release/') 这个是 3.+ 版本激粗是这样。2.3 版本呢就不在是该目录了。这也是在实际测时当中遇到的错误问题。
最终执行 makeJar gradle 任务即可,生成jar 包。
⑸ 如何将AndroidStudio项目打包成jar包并使用
成功后:
在需要使用的工程中,添加jar包到libs目录中,右击 Add as Library 即可
可以看到这边可以正常使乱樱用之前创建迟陪冲的加法运算了
在创建jar的同时会生成一个 arr包 ,同码歼样也可以使用
⑹ 怎么将android代码打包成jar
高端cmd的方法我这里就不说了
我这里主要讲的是Eclipse的生成jar的方法。
在要打包的项目上右击,选择Export(点击项目 导出)
因为我的Eclipse导入了中文语言包。
(可以搜索 “Eclipse手动安装中文包(手动安装)”这个是我以前的经验)
生成包有两种
打包成一般的jar包 (jar文件)
打包成可运行的jar包
我说的是第一种。
下一步如图
要注意的地方
只勾选“导出生成的类文件和资源”
生成设置的其他选项(可以直接完成生成的)
生成完成。
如果代码中有警告,会弹出这个对话框。(其实jar还是生成成功了)