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.字串
建议直接使用字符串常量代替字串资源。
Android jar包的导出和使用的更多相关文章
- maven项目导出依赖的Jar包以及项目本身以jar包形式导出详细教程
一.maven项目已jar包形式导出 1.首先右键项目,选择Export 2.选择好项目,设置导出路径和jar名字即可: 二.导出maven项目所依赖的所有jar包 1.右键项目,选择Export 2 ...
- 混淆Android JAR包的方法
http://blog.csdn.net/vurtne_ye/article/details/35599491 1)导出jar包 如何在eclipse上Android工程中导出jar包?google, ...
- Android jar包混淆
具体可参考http://proguard.sourceforge.net/manual/examples.html#library 1.找到android的adt目录下的 D:\soft\adt-bu ...
- IDEA--生成jar包并且导出jar包
PS:首先在idea中新建一个java文件,且带有main方法(不带有main好像不能导出,不确定) 参考文章:http://www.cnblogs.com/blog5277/p/5920560.ht ...
- Android JAR包、Library项目
[JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目 (1)项目导入JAR包:1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面.2. ...
- Maven中将所有依赖的jar包全部导出到文件夹
因为我要对Java类的功能在生产环境(服务器端)进行测试,所以需要将jar包导出,然后在服务器端用-Djava.ext.dirs=./lib的方式走一遍, 下面是解决方案: 在pom.xml中加入如下 ...
- Eclipse中jar包的导出与导入
JAR的含义: JAR是Java的档案文件,是Java Archive File的缩写.jar文件是一种压缩文件,就是以特定类型压缩包的形式存在的完整Java项目.通常通过导入jar包的方式来使用实现 ...
- Idea JAVA項目的导入JAR包和导出jar包
一.IDea项目中导入jar包 打开菜单project structure,然后选择modules/dependencies下选择右侧的+,选择jar包目录中的jar文件,导入 二.导出jar包 菜单 ...
- jar包导入导出
java项目: 在classLoader加载jar和class的时候,是分开加载的,一般jar导入分两种: 1.在web-inf下的lib中直接引入 2.在user library上引入 无论以上哪种 ...
随机推荐
- c51跑马灯
ORG 0000HMOV 20H, #0FFHMOV 21H, #0FDHMOV 22H, #0FBHMOV 23H, #0F7HMOV 24H, #0EFHMOV 25H, #0DFHMOV 26H ...
- js 获取当前焦点所在的元素、给元素和input控件添加键盘监听事件、添加页面级的键盘监听事件
页面级的键盘监听事件 document.onkeydown = function (event) { var e = event || window.event || arguments.callee ...
- Angular.JS + Require.JS + angular-async-loader 来实现异步加载 angular 模块
传统的 angular 应用不支持异步加载模块,必须在 module 启动的时候,所有模块必须预加载进来. 通过使用 angular-async-loader 库,我们可以使用 requirejs 等 ...
- 什么是OAuth授权?
什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...
- 自定cordova插件笔记demo
1.在项目根目录下(我的是com.chl),添加一个文件夹,在文件夹里添加src.www两个子文件夹和plugin.xml文件.在www目录下,创建test.js.在src文件夹下添加android子 ...
- 3.基础点的移动web
1.移动端的屏幕适配 在Web开发中可以使用px(像素).em.pt(点).in(英寸).cm(厘米)做为长度单位,我们最常用px(像素)做为长度单位. 我们可以将上述的几种长度单位划分成相对长度单位 ...
- [BZOJ 3637]Query on a tree VI
偶然看见了这题,觉得自己 QTREE.COT 什么的都没有刷过的真是弱爆了…… 一道思路很巧妙的题,终于是在约大爷的耐心教导下会了,真是太感谢约大爷了. 这题显然是树链剖分,但是链上维护的东西很恶心. ...
- (转) Awesome Deep Learning
Awesome Deep Learning Table of Contents Free Online Books Courses Videos and Lectures Papers Tutori ...
- Unity中Instantiate一个prefab时需要注意的问题
在调用Instantiate()方法使用prefab创建对象时,接收Instantiate()方法返回值的变量类型必须和声明prefab变量的类型一致,否则接收变量的值会为null. 比如说,我在 ...
- JSTL中fmt标签详解
一:JSTL格式化标签又称为I18N标签库,主要用来编写国际化的WEB应用,使用此功能可以对一个特定的语言请求做出合适的处理. 例如:中国内地用户将显示简体中文,台湾地区则显示繁体中文,使用I18N格 ...