我们写程序的时候往往需要把自己的程序打包成jar包,给第三方调用。Eclipse让我们非常方便的可以导出jar包。但是当程序里需要用到res里的资源时,往往就会出现问题。因为统自动生成的R类如果被打到jar包中后,就失去了索引资源的作用。导致封装成jar包的view无法获取对应资源。因为R类的属性值是在应用编译打包时由系统自动分配的。R类打包之后失效,实际是因为R类的内部类里面的属性失效,因为打包之后这些属性的值就固定了,但是实际项目中这些值是在编译时有系统自动分配的,无法在编译前固定。
本文就提供一种方法,解决这个问题。
首先建立一个AndroidJar项目。这个项目将来就是要打成jar包的项目。
结构如下:
<ignore_js_op> 
然后再建立一个AndroidJarTest项目。这个项目就是应用jar包的项目。
AndroidJar写好后,就是导出jar包。相信大家都非常熟悉,步骤如下:
1.选中AndroidJar,右键选择export。
2.选择jar file。只需导出源码。如图:
<ignore_js_op> 
1.然后点击finish。就可以导出jar包了。
AndroidJarTest项目对jar包的应用方法。
     1.在AndroidJarTest项目下建立一个libs文件夹,再把刚才导出的jar包放到里面。再把jar包加到java build path的路径里。
<ignore_js_op>
2.因为刚才只是把AndroidJar的源码打成了jar包。但是资源并没有打包。所以现在要把AndroidJar项目里的资源。拷贝到AndroidJarTest的项目下。具体就是res下的文件。因为太简单,这里就不演示怎么拷了。
2.最后要在AndroidJarTest的AndroidManifest.xml里注册AndroidJar里的activity,service,receiver。很多广告插件都是这么做的。相信大家都非常熟悉。

[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".AndroidJarTestActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
 
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
 
<!-- AndroidJar 里的activity,service和receiver-->
<activity
android:name="com.song.test.FirstActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
 
<activity
android:name="com.song.test.AndroidJarActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar" >
</activity>
 
<service android:name="com.song.test.service.HelloService" >
</service>
 
<receiver android:name="com.song.test.receiver.ToastReceiver" >
<intent-filter >
<action android:name="MAKE_TOAST_ACTION" />
</intent-filter>
</receiver>
<!-- AndroidJar 里的activity,service和receiver-->
</application>

    在AndroidJarTest里就只要一个其他的activity。它负责跳转到AndroidJar里。AndroidJar里就三个按钮分别是启动一个服务,每隔10秒就发出一个广播,然后广播接收到后就弹出一个toast,“大家好,我是苍老师!”和一个停止服务。最下面一个就是跳到一个有苍老师的界面。
<ignore_js_op><ignore_js_op><ignore_js_op>
程序相当简单。其中根据资源创建view,和根据资源找到相应字符的核心类为ResManager。大家可以下载源码,研究研究。

<ignore_js_op> 该贴已经同步到 feathersong的微博

<ignore_js_op>

把自己的程序打成jar包,让别人调用的更多相关文章

  1. 高版本 eclipse 如何安装 fatjar 插件以及使用 fatjar 将 Java 程序打成 Jar 包

    高版本 eclipse 如何安装 fatjar 插件以及使用 fatjar 将 Java 程序打成 Jar 包 Eclipse Version: Neon.3 Release (4.6.3) Welc ...

  2. Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    转载地址:http://blog.csdn.net/xiaanming/article/details/9257853 最近有一个需要,我们公司做了一个apk客户端,然后其他的公司可以根据自己的需要来 ...

  3. 【转】Android将Activity打成jar包供第三方调用(解决资源文件不能打包的问题)

    Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法) 鼠标右键项目,然后属性,然后java buildpath 然后order and ex ...

  4. Spring boot 打成jar包问题总结

    Spring boot 打成jar包问题总结 1.Unable to find a single main class from the following candidates 1.1.问题描述 m ...

  5. Java基础之用记事本编辑java代码运行,并且打成jar包后运行

    使用记事本写java代码 1.在d盘新建一个记事本,名字叫做zhanzhuang.java,会询问不可用,是否继续,点击是 2.在里面编辑就如下内容,注意文件的名字要和 class 后面的名字相对应 ...

  6. 将Java程序打jar包并运行

    1)接着上篇博客继续说手动编译之后,将代码打成jar包,然后直接“java -jar lz.jar"运行不成功的问题.还是先上代码: 这个是Demo类: package org.lz.dem ...

  7. 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案

    JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...

  8. eclipse将引用了第三方jar包的java项目打成jar包

    今天用java开发了一个项目,想要打成jar包,并在linux环境下运行.但是运行时引用的第三方jar包却显示classNotFind错误. 于是查了一下解决办法,在此贴出来,方便以后查阅. 用Ecl ...

  9. 将main方法打成jar包,并引用第三方的maven jar包

    一.准备工作.执行命令 学习插件: 学习apache的打包插件maven-assembly-plugin:http://maven.apache.org/plugins/maven-assembly- ...

随机推荐

  1. Java基础知识强化43:StringBuffer类之StringBuffer和String的相互转化

    1. String和StringBuffer的相互转换 思想是:A-----B的转换,我们把A转换为B,其实是为了使用B的功能:B-----A的转换,我们可能的结果是A类型,所以还要转换回来 2. 案 ...

  2. c语言数组小练习

    //查找数组中最大的值: #include<stdio.h> int main01() { , , , , , , , , , ,,}; ]; int i; ;i < ]);i++) ...

  3. Web的工作机制

    简要的介绍一下Web的工作机制,以便对开发JavaWeb项目有个更好的理解. 一.Web的概念     1.1    何为Web:Web是万维网(World Wide Web)的简称.Web出现以前, ...

  4. (转)弹出窗口lhgDialog API文档

    应用到你的项目 如果您使用独立版本的lhgDialog窗口组件,您只需在页面head中引入lhgcore.lhgdialog.min.js文件,4.1.1+版本做了修改可以和jQuerya库同时引用, ...

  5. SQL Server 如何创建定时作业

    在做SQL server 管理时,往往需要每日执行定时任务,但是如果每天都去人工执行,非常不方便,而且一般定时操作,都应该是在数据库压力不大时,一般是在夜间.所以我们需要创建定时作业来代替人工的执行定 ...

  6. list类型for遍历

    package cn.stat.p9.map.demo; import java.util.ArrayList; public class Listfor { /** * @param args */ ...

  7. 验证码 Demo

    //设置响应头 response.setCharacterEncoding("image/jpeg"); int width=160; int height=40; Buffere ...

  8. ubuntu 快捷键和安装知识知识

    本文节选自“The Official Ubuntu Book, 7th Edition.pdf” 快捷键部分直接引用原书中图片. Linux Folders Learning Unity Keyboa ...

  9. 转载:JAVA中使用JSON进行数据传递

    转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...

  10. 在Yii2中使用Pjax导致Yii2内联脚本载入失败的问题

    当我用defunkt/jquery-pjax载入Yii2的ActiveForm时发生一个错误,正常情况下是 ActiveForm的两个js应该先载入,而实际情况是 typeError:JQuery(. ...