Android jar包的导出和使用

一.工程打成JAR包。

1.       eclipse下有一工程JsnTxJar,右键工程名选择Export。

选择Java->JAR file

下图所示左边一栏只勾选src,右边一栏都不用勾选。(如果assets中有文件,assets选不选均可。如果不勾选,那么assets中的文件将不被打进JAR包,随后可将这些文件复制到使用这个JAR包的工程assets目录中。如果勾选,assets中的文件将被打进JAR包,如果使用这个JAR包的工程assets目录下还有相同的文件,在运行时就会报错文件重复)

然后设置一下导出路径即可完成。

二.引入JAR包。

现Eclipse下有一工程ReferJar。

1.      
把打好的JAR包复制到ReferJar下的libs文件夹中,刷新一下这个文件夹。

2.      
右键点击工程名,选择Build
Path->Configure Build Path.

在Libraries一栏中选择Add JARs

然后选择ReferJar下刚复制到lib中的JAR包即可

3.      
需要注意的几点。

?= 1 \* ROMAN I.如果JAR包中要用到图片、布局、字串等资源,将这些文件复制到ReferJar工程下的res相应的资源文件中,不要与ReferJar原有的资源文件重名。以这种方式处理jar包中的资源时,JAR包的代码中不能再使用R.layout.、R.string.等形式来引用资源,因为导出jar的时候里面的R.id已经替换为一个int常量,而在新的程序中资源id会重新生成,两者不匹配就会产生问题。可以通过字段名称动态获取资源id。可以封装一个类用于获取资源id。

publicclass Resource {

publicstaticint getLayoutId(Context context, String layoutName) {

return context.getResources().getIdentifier(layoutName, "layout",

context.getPackageName());

}

publicstaticint getStringId(Context
context, String stringName) {

return context.getResources().getIdentifier(stringName, "string",

context.getPackageName());

}

publicstaticint getDrawableId(Context context, String drawableName) {

return context.getResources().getIdentifier(drawableName,

"drawable", context.getPackageName());

}

publicstaticint getStyleId(Context context, String styleName) {

return context.getResources().getIdentifier(styleName, "style",

context.getPackageName());

}

publicstaticint getId(Context context, String idName) {

return context.getResources().getIdentifier(idName, "id",

context.getPackageName());

}

publicstaticint getColorId(Context context, String colorName) {

return context.getResources().getIdentifier(colorName, "color",

context.getPackageName());

}

publicstaticint getArrayId(Context context, String arrayName) {

return context.getResources().getIdentifier(arrayName, "array",

context.getPackageName());

}

}

?= 2 \* ROMAN II.JAR包用到的AndroidManifest.xml配置信息复制到ReferJar的AndroidManifest.xml中。

?=
3 \* ROMAN III.如果JAR包中叶引入了其他JAR包,把这些JAR包复制到ReferJar工程下的libs文件夹下。

三. 把资源文件打进JAR包

1.图片

JAR包中使用的图片在打包的时候可以打进assets中,在使用图片是可取为Drawable。

publicstatic
Drawable getDrawableFromAssets(Context context,String imageFileName) {

Drawable
result=null;

InputStream
is=null;

try {

is=context.getAssets().open(imageFileName);

result=Drawable.createFromStream(is, imageFileName);

is.close();

is=null;

} catch (IOException e) {

// TODO
Auto-generated catch block

e.printStackTrace();

}

return result;

}

2.布局

用动态布局取代.xml布局。

至于selecter.xml可用StateListDrawable取代。

public StateListDrawable getBgListDrawable(Context context, String
normalImgName, String pressedImgName) {

StateListDrawable
bgListDrawable = new
StateListDrawable();

Drawable
normal = getDrawableFromAssets(context,normalImgName);

Drawable
pressed = getDrawableFromAssets(context,pressedImgName);

//这里注意顺序,如果android.R.attr.state_enabled状态写到前面,则不会显示按钮的pressed效果,因为不论按钮是否被按下,都符合state_enabled状态

bgListDrawable.addState(newint[] { android.R.attr.state_pressed },

pressed);

bgListDrawable.addState(newint[] {
android.R.attr.state_enabled },

normal);

return bgListDrawable;

}

btn.setBackgroundDrawable(getBgListDrawable(context,
”img_normal”, ”img_pressed”));

3.字串

建议直接使用字符串常量代替字串资源。

一.工程打成JAR包。

1.      
eclipse下有一工程JsnTxJar,右键工程名选择Export。

选择Java->JAR file

下图所示左边一栏只勾选src,右边一栏都不用勾选。(如果assets中有文件,assets选不选均可。如果不勾选,那么assets中的文件将不被打进JAR包,随后可将这些文件复制到使用这个JAR包的工程assets目录中。如果勾选,assets中的文件将被打进JAR包,如果使用这个JAR包的工程assets目录下还有相同的文件,在运行时就会报错文件重复)

然后设置一下导出路径即可完成。

二.引入JAR包。

现Eclipse下有一工程ReferJar。

1.      
把打好的JAR包复制到ReferJar下的libs文件夹中,刷新一下这个文件夹。

2.      
右键点击工程名,选择Build
Path->Configure Build Path.

在Libraries一栏中选择Add JARs

然后选择ReferJar下刚复制到lib中的JAR包即可

3.      
需要注意的几点。

?= 1 \* ROMAN I.如果JAR包中要用到图片、布局、字串等资源,将这些文件复制到ReferJar工程下的res相应的资源文件中,不要与ReferJar原有的资源文件重名。以这种方式处理jar包中的资源时,JAR包的代码中不能再使用R.layout.、R.string.等形式来引用资源,因为导出jar的时候里面的R.id已经替换为一个int常量,而在新的程序中资源id会重新生成,两者不匹配就会产生问题。可以通过字段名称动态获取资源id。可以封装一个类用于获取资源id。

publicclass Resource {

publicstaticint getLayoutId(Context context, String layoutName) {

return context.getResources().getIdentifier(layoutName, "layout",

context.getPackageName());

}

publicstaticint getStringId(Context
context, String stringName) {

return context.getResources().getIdentifier(stringName, "string",

context.getPackageName());

}

publicstaticint getDrawableId(Context context, String drawableName) {

return context.getResources().getIdentifier(drawableName,

"drawable", context.getPackageName());

}

publicstaticint getStyleId(Context context, String styleName) {

return context.getResources().getIdentifier(styleName, "style",

context.getPackageName());

}

publicstaticint getId(Context context, String idName) {

return context.getResources().getIdentifier(idName, "id",

context.getPackageName());

}

publicstaticint getColorId(Context context, String colorName) {

return context.getResources().getIdentifier(colorName, "color",

context.getPackageName());

}

publicstaticint getArrayId(Context context, String arrayName) {

return context.getResources().getIdentifier(arrayName, "array",

context.getPackageName());

}

}

?= 2 \* ROMAN II.JAR包用到的AndroidManifest.xml配置信息复制到ReferJar的AndroidManifest.xml中。

?=
3 \* ROMAN III.如果JAR包中叶引入了其他JAR包,把这些JAR包复制到ReferJar工程下的libs文件夹下。

三. 把资源文件打进JAR包

1.图片

JAR包中使用的图片在打包的时候可以打进assets中,在使用图片是可取为Drawable。

publicstatic
Drawable getDrawableFromAssets(Context context,String imageFileName) {

Drawable
result=null;

InputStream
is=null;

try {

is=context.getAssets().open(imageFileName);

result=Drawable.createFromStream(is, imageFileName);

is.close();

is=null;

} catch (IOException e) {

// TODO
Auto-generated catch block

e.printStackTrace();

}

return result;

}

2.布局

用动态布局取代.xml布局。

至于selecter.xml可用StateListDrawable取代。

public StateListDrawable getBgListDrawable(Context context, String
normalImgName, String pressedImgName) {

StateListDrawable
bgListDrawable = new
StateListDrawable();

Drawable
normal = getDrawableFromAssets(context,normalImgName);

Drawable
pressed = getDrawableFromAssets(context,pressedImgName);

//这里注意顺序,如果android.R.attr.state_enabled状态写到前面,则不会显示按钮的pressed效果,因为不论按钮是否被按下,都符合state_enabled状态

bgListDrawable.addState(newint[] { android.R.attr.state_pressed },

pressed);

bgListDrawable.addState(newint[] {
android.R.attr.state_enabled },

normal);

return bgListDrawable;

}

btn.setBackgroundDrawable(getBgListDrawable(context,
”img_normal”, ”img_pressed”));

3.字串

建议直接使用字符串常量代替字串资源。

时间: 2024-10-11 01:14:43

Android jar包的导出和使用的相关文章

混淆Android JAR包的方法

混淆Android JAR包的方法 - vurtne_ye的专栏 - 博客频道 - CSDN.NET 1)导出jar包 如何在eclipse上android工程中导出jar包?google,baidu.bing 2)混淆jar包,打乱代码 android的jar包跟普通的java的jar包不一样,我们不想打乱一些activity或者server等跟系统打交道的代码,这是因为如果把这些也混淆了,那你还需要搞清楚混淆后这些activity变成了什么名字,然后告诉使用你这个jar包的人androidm

Android开发中出现的低级错误之没有android jar包

The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files 解决办法:相应的系统的jar包没有导入:选add External JARs...,添加android.jar. 为什么导入工程时候,android.jar包没有导入进来?现象就是所有工程都有问题. 解决办法:在系统的环境变量Path中增加E:\adt-bundle-windows-x86-201

Maven中将所有依赖的jar包全部导出到文件夹

因为我要对Java类的功能在生产环境(服务器端)进行测试,所以需要将jar包导出,然后在服务器端用-Djava.ext.dirs=./lib的方式走一遍, 下面是解决方案: 在pom.xml中加入如下代码: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</arti

unity 使用Android jar包(face3D)

问题: Android 库里面使用 .so, 又封装了一层Java solve:  建一个和Android 库同名的项目, 将.so 和Java类全部移植过来 注: D:\R&D\Android\faceAndroid 下面的 mcv_facesdk_blink ,  mcv_facesdk_blink 包名是com.matrixcv.androidapi 不是 com.matrixcv.androidapi.face

Android 将Activity及其他类打包成jar包供第三方调用

在开发java工程时,一个项目可能分为多个模块,为了实现模块间的解耦和独立,提高模块的复用性,通常将项目按模块分为多个java工程进行开发,最后通过jar包等工程依赖的方式实现系统集成,提高模块的耦合和复用. 现在开发Android项目通过实践和总结,发现这种方式特别有必要,比如开发一个android端的视频播放功能,肯定有播放和下载模块,如果不分开放在一个工程里面不断的添加新的功能,产品的每一个研发都不断的添加修改功能,最后维护越来越难,bug越来越多,并相互推诿,这种方式能避免这种情况,此为

eclipse maven 导出项目依赖的jar包

一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: 1.  mvn dependency:copy-dependencies 或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入dependency:copy-dependencies后,点击运行 maven项目所依赖的jar包会导出到targed/depen

eclipse maven 项目导出为 jar 包

一个 maven 项目有很多依赖,所以最后打出的 jar 一般会很多,且比较大,打成 jar 包的步骤 (注意pom.xml文件中打包类型不能是war包): 1. 把 pom.xml 中依赖的库打成 jar 包:  在工程 pom.xml 所在的目录下,执行命令: mvn dependency:copy-dependencies 所依赖的jar包会导出到目录 target/dependency/中. 2. 把该 maven 项目打成一个 jar 包: 在工程 pom.xml 所在的目录下,执行命

maven导出项目依赖的jar包

在进行项目部署时,需要将maven项目所依赖的jar导出到指定目录,本文讲解如何导出项目依赖的jar包 一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: ? 1 mvn dependency:copy-dependencies 或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入  dependency:c

Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参

Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入库,需要带main()主函数: 情况2:向程序传参数,并且程序没有使用第三方jar包 这种情形下打包和情况1是一样的 情况3:程序使用了第三方jar包 这种情况下的打包要复杂一些,需要把第三方jar包一起导出,可以使用eclipse的插件fat jar,很简便,但是fat jar只支持eclipse