一.工程打成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.字串

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

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

  1. maven项目导出依赖的Jar包以及项目本身以jar包形式导出详细教程

    一.maven项目已jar包形式导出 1.首先右键项目,选择Export 2.选择好项目,设置导出路径和jar名字即可: 二.导出maven项目所依赖的所有jar包 1.右键项目,选择Export 2 ...

  2. 混淆Android JAR包的方法

    http://blog.csdn.net/vurtne_ye/article/details/35599491 1)导出jar包 如何在eclipse上Android工程中导出jar包?google, ...

  3. Android jar包混淆

    具体可参考http://proguard.sourceforge.net/manual/examples.html#library 1.找到android的adt目录下的 D:\soft\adt-bu ...

  4. IDEA--生成jar包并且导出jar包

    PS:首先在idea中新建一个java文件,且带有main方法(不带有main好像不能导出,不确定) 参考文章:http://www.cnblogs.com/blog5277/p/5920560.ht ...

  5. Android JAR包、Library项目

    [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目 (1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2. ...

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

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

  7. Eclipse中jar包的导出与导入

    JAR的含义: JAR是Java的档案文件,是Java Archive File的缩写.jar文件是一种压缩文件,就是以特定类型压缩包的形式存在的完整Java项目.通常通过导入jar包的方式来使用实现 ...

  8. Idea JAVA項目的导入JAR包和导出jar包

    一.IDea项目中导入jar包 打开菜单project structure,然后选择modules/dependencies下选择右侧的+,选择jar包目录中的jar文件,导入 二.导出jar包 菜单 ...

  9. jar包导入导出

    java项目: 在classLoader加载jar和class的时候,是分开加载的,一般jar导入分两种: 1.在web-inf下的lib中直接引入 2.在user library上引入 无论以上哪种 ...

随机推荐

  1. i5 6300HQ 和 i7 6700HQ

    i7 6700HQ: 四核八线程 14nm 45W 2.6-3.5GHz 支持DDR4 2133内存 三级缓存6M HD Graphics 530集显 i5 6300HQ: 四核四线程 14nm 45 ...

  2. [翻译] LTE/LTE-Advanced for Mobile Broadband-10.4

    10.4 下行L1/L2控制信令 上下行信道的数据传输,需要特定的“下行控制信令”提供支持.下行控制信令通常被称为“下行L1/L2控制信令”,这表示该控制信令部分来自物理层(L1),部分来自MAC层( ...

  3. python向数据库插入数据时出现乱码解决方案

    中文字符串前面加u 如: title =u"你好" contents = "m" ids="13" cur.execute("IN ...

  4. HDFS的工作原理(读和写操作)

    工作原理: NameNode和DateNode,NameNode相当于一个管理者,它管理集群内的DataNode,当客户发送请求过来后,NameNode会 根据情况指定存储到哪些DataNode上,而 ...

  5. C#的类及应用

    1.int i=x.Length;//Length(获取字符串的长度,返回一个int类型的值) 2.x=x.Trim();(去掉字符串前后的空格) trimStart();(去掉前面的空格) Trim ...

  6. C#的选择语句练习

    1.请输入一个数x,若x<1,则y=x:若1<=x<10,则y=2x-1:若x>=10,则y=3x-11,要求随意输入一个x值,求出y值. 2.输入问题[你有房子吗?],若回答 ...

  7. java 反射的应用 以及通过反射 用到的工厂模式

    java反射详解 本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案 ...

  8. bash获取properties文件资源

    #!/bin/sh prop_value="" function getProperty() { file=$ prop_key=$ prop_value=`cat $file | ...

  9. 代理模式(Proxy Pattern)

    一.引言 在软件开发过程中,有些对象有时候会由于网络或其他的障碍,以至于不能够或者不能直接访问到这些对象,如果直接访问对象给系统带来不必要的复杂性,这时候可以在客户端和目标对象之间增加一层中间层,让代 ...

  10. [llvm] Call the LLVM Jit from c program

    stackoverflow: http://stackoverflow.com/questions/1838304/call-the-llvm-jit-from-c-program Another t ...