上海钱龙投资管理集团有限公司是骗子,网站win10开始菜单打不开开了,

推荐这篇日记的豆列
······Android的apk编译和第三方jar包的使用 - sinojelly - 博客园
posts - 79, comments - 75, trackbacks - 0, articles - 1
Android的apk编译和第三方jar包的使用&eclipse增加 User Library方式,如果该.jar不在eclipse项目目录下,则不会打包进Apk。这也许就是android.jar为何不会被打包到apk中的原因。&参见如下文章:&Android笔记34:命令行打包编译.apk 包含第三方.jar 的方法& & 00:20:12| 分类: android笔记 | 标签:命令行 打包 apk jar 第三方 |字号 订阅**中秋节真是个假期~,从凌晨1点直接睡到下午3点,睡了14个小时累积的疲劳一扫而空脑袋也好使了..&之前受托研究个挺好玩的项目..细节不说了,我在实现的时候卡在怎样脱离eclipse而能将项目源码编译成.apk上&发现网上有现成答案的,参考了以下这篇http://jojol-/blog/729254&虽然原作者是针对较早期的 Android 1.5(API-3)写的,但原理和用法相同。&用到的路径和工具包括(容我偷个懒直接把部分的批处理内容直接cp出来了):SET WORK_SPACE=E:\code\autopack_demoSET PKG_PATH=com\xxx\apk\autopack_demoSET JAVA_SPACE=D:\Progra~2\Java\jdk1.6.0_21\binSET ANDROID_SPACE=E:\android-sdk-windowsSET JAVAC=%JAVA_SPACE%\javac.exeSET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exeSET DX=%ANDROID_SPACE%\platform-tools\dx.batREM 输出的路径SET OUT_FOLDER=...SET OUT_CLASS_FOLDER=...&依葫芦画瓢写批处理试运行,发现卡在一个问题上:项目中部分的功能模块引用了第三方的 jar 里的类&在编译的时候报错,javac 时凡事引用到jar的类的地方都报出了 class not found 之类的错误gen/R.java 里也提对象不匹配 还有一大堆的东西&按着错误提示一个一个来解决,按照打包的流程&1. 先解决生成 R.java 这个环节&这里预先我把第三方的3rd.jar复制到了项目文件夹的 lib/ 下,然后再批处理里定义为-------------------------------------------------------------------------------------------SET THIRD_JAR=%WORK_SPACE%\lib\3rd.jar&REM 以下这行命令生成 R.java%AAPT% package -m -J %GEN_FOLDER% -M %WORK_SPACE%\AndroidManifest.xml -S %RESOURCE_FOLDER% -I %ANDROID_JAR% -I % THIRD_JAR%-------------------------------------------------------------------------------------------在命令最后加上了 -I % THIRD_JAR%,这样有关 R.java 的报错消失了&2. javac 的错误提示..这里是把 .java 编译成 .class 提示找不到第三方的包那么在原命令行略作修改 最后添加上 -classpath %THIRD_JAR% 这个引用参数,问题解决&&&再编译没有报错,把其他资源文件也打包进apk最后加上签名~生成了apk,好像成功咯安装到手机里,运行,程序崩溃了... Android笔记34:命令行打包编译.apk 包含第三方.jar 的方法 - 恶 - 早衰男的巢&看DDMS 输出地日志~~ 问题还是在于第三方的类..not found ... 呃,不是已经编译通过了吗&回头看看那个apk文件,的确太小.. 没有包含那个jar&&做逆向研究... 看看从eclipse 编译出来的apk(104kb)和我打包出来的(26kb)到底差别在哪里...把apk文件当做zip解压~看见尺寸的差异在于 classes.dex 这个文件!原来问题在这里...&生成dex文件是用 %DX% 查了下 % DX% --help 用法,找到了解决问题的最后一步&3. 输出dex时把第三方的jar包含在内在 dx --help里说的很明白了:-------------------------------------------------------------------------------------------E:\android\android-sdk-windows\platform-tools&dx --helpusage:& dx --dex [--debug] [--verbose] [--positions=&style&] [--no-locals]& [--no-optimize] [--statistics] [--[no-]optimize-list=&file&] [--no-strict]& [--keep-classes] [--output=&file&] [--dump-to=&file&] [--dump-width=&n&]& [--dump-method=&name&[*]] [--verbose-dump] [--no-files] [--core-library]& [--num-threads=&n&] [&file&.class | &file&.{zip,jar,apk} | &directory&] ...&&& Convert a set of classfiles into a dex file, optionally embedded in a&&& jar/zip. Output name must end with one of: .dex .jar .zip .apk. Positions&&& options: none, important, lines.& dx --annotool --annotation=&class& [--element=&element types&]& [--print=&print types&]& dx --dump [--debug] [--strict] [--bytes] [--optimize]& [--basic-blocks | --rop-blocks | --ssa-blocks | --dot] [--ssa-step=&step&]& [--width=&n&] [&file&.class | &file&.txt] ...&&& Dump classfiles, or transformations thereof, in a human-oriented format.& dx --junit [-wait] &TestClass&&&& Run the indicated unit test.& dx -J&option& ... &arguments, in one of the above forms&&&& Pass VM-specific options to the virtual machine that runs dx.& dx --version&&& Print the version of this tool (1.6).& dx --help-------------------------------------------------------------------------------------------&在原先写的 dx 指令最后加上 jar的完整路径 也就是 %THIRD_JAR% 就ok了%DX% --dex --output=%OUT_FOLDER%\classes.dex %OUT_CLASS_FOLDER% %THIRD_JAR%&&再把编译打包签名的顺序重新做一遍~生成的apk运行一切正常!或许不是个什么大不了值得做笔记的一个专题,只是老衲java底子如此脆弱不堪..但之前数天在 度娘、谷哥、有盗和有病 四个知名包打听都寻遍了皆一无所获在技术论坛发帖提问也纯引来围观无人能解我想不通是这个问题真的不值一提还是国内的编程开发风气已经浮躁到量产我这种白菜的地步..但愿不是后者。&-搁笔-&&[Android]命令行编译APK (日) 发表于 ChinaUnix&手动编译你的apk,可以让资源目录不命名为res, 你能够命名任何你想要的名字。&你可以在以下目录发现ant脚本: &SDK_HOME&\platforms\android-1.5\templates\android-rules.xml&第一步: 产生R文件以及包资源aapt package -f -M ${manifest.file} -F ${packaged.resource.file} -I ${path.to.android-jar.library} -S ${android-resource-directory} [-m -J ${folder.to.output.the.R.java}]&&第二步:编译java源文件以及R.java文件use javac&&第三步:将classes文件转化成Dalvik自节码use dx.batdx.bat –dex –output=${output.dex.file} ${compiled.classes.directory} ${jar files..}&第四步:创建未签名的apkuse apkbuilder&apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file}&or&apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}&-rf = resources required for compiled source files?-rj = resources required for jar files&第六步: 产生一个keyuse keytool&第七步骤: 对APK进行签名use jarsigner&jarsigner -keystore ${keystore} -storepass ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}&&第八步: 发布use adbadb -d install -r ${signed.apk}&Inspecting your APK file:&aapt list -v latest.apk&Open questions:1. Can you include more than one dex file in the apk?2. Can you have dex file named other than classes.dex in the apk?3. Does an apk have to have a packaged resource?&&android 打包第三方jar包 &June 30th, 2011 Charlieandroid, android 打包外部jar文件 android 打包外部包, android 打包第三方jar转自:&android项目开发时会用到第三方提供的jar包,通常情况下按照eclipse导入jar包的方法(选择项目,右键点击Build Path,Build Path–&Add Libraries–&User Library–&Next–&User Libraries–&New–&Add JARs,选择第三方的jar包),就可以将jar包导入到项目。&根据这样的打包方式时,eclipse导入jar包后,eclipse编译器也能识别,即项目不会因为缺少jar包而报错,但是运行android程序的时候却没有找到包而报错了。APK文件也很小,也就是jar包并没有打包到APK文件中。&在android项目中找到.classpath文件并打开,文件代码如下:view plaincopy to clipboardprint?&&&& &?xml version="1.0" encoding="UTF-8"?&& &&& &classpath&& &&& &classpathentry kind="src" path="src"/&& &&& &classpathentry kind="src" path="gen"/&& &&& &classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/&& &&& &classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/box2d"/&& &&& &classpathentry kind="output" path="bin"/&& &&& &/classpath&& &发现eclipse导入包操作后,写入了这行代码&&classpathentry kind=”con” path=”org.eclipse.jdt.USER_LIBRARY/box2d”/&&这行代码应该是eclipse内部识别的,并不会打包到模拟器上,所以运行到模拟器上找不到相应的jar包。&为了在android内部能找到jar包,于是在android项目内新建一个lib文件夹,将jar包放在lib文件夹内。并将上面的那行代码删除,添加一行代码:&&classpathentry kind=”lib” path=”lib/jbox2d-2.0.1-full.jar”/&&jbox2d-2.0.1-full.jar是lib文件下的jar包,可添加多个jar包。&即最终修改代码为:view plaincopy to clipboardprint?&&&& &?xml version="1.0" encoding="UTF-8"?&& &&& &classpath&& &&& &classpathentry kind="src" path="src"/&& &&& &classpathentry kind="src" path="gen"/&& &&& &classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/&& &&& &classpathentry kind="lib" path="lib/jbox2d-2.0.1-full.jar"/&& &&& &classpathentry kind="output" path="bin"/&& &&& &/classpath&& &最后刷新eclipse项目,会发现项目bin目录的APK文件大小增大,说明APK文件已经包含jar包文件,重新clean项目并运行即可。&&温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
曾经,我擅长使用SG551
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
SET PKG_PATH=com\xxx\apk\autopack_demoSET JAVA_SPACE=D:\Progra~2\Java\jdk1.6.0_21\binSET ANDROID_SPACE=E:\android-sdk-windowsSET JAVAC=%JAVA_SPACE%\javac.exeSET AAPT=%ANDROID_SPACE%\platform-tools\aapt.exeSET DX=%ANDROID_SPACE%\platform-tools\dx.batREM 输出的路径SET&OUT_FOLDER=...SET OUT_CLASS_FOLDER=...依葫芦画瓢写批处理试运行,发现卡在一个问题上:项目中部分的功能模块引用了第三方的 jar 里的类在编译的时候报错, javac 时凡事引用到jar的类的地方都报出了 class not found 之类的错误gen/R.java 里也提对象不匹配 还有一大堆的东西按着错误提示一个一个来解决,按照打包的流程1. 先解决生成 R.java 这个环节这里预先我把第三方的3rd.jar复制到了项目文件夹的 lib/ 下,然后再批处理里定义为-------------------------------------------------------------------------------------------SET THIRD_JAR=%WORK_SPACE%\lib\3rd.jarREM 以下这行命令生成 R.java%AAPT% package -m -J %GEN_FOLDER% -M %WORK_SPACE%\AndroidManifest.xml -S %RESOURCE_FOLDER% -I %ANDROID_JAR% -I %&THIRD_JAR%-------------------------------------------------------------------------------------------在命令最后加上了&-I %&THIRD_JAR%,这样有关 R.java 的报错消失了2. javac 的错误提示..这里是把 .java 编译成 .class 提示找不到第三方的包那么在原命令行略作修改 最后添加上 -classpath %THIRD_JAR% 这个引用参数,问题解决再编译没有报错,把其他资源文件也打包进apk最后加上签名~生成了apk,好像成功咯安装到手机里,运行,程序崩溃了...&看DDMS 输出地日志~~ 问题还是在于第三方的类..not found ... 呃,不是已经编译通过了吗回头看看那个apk文件,的确太小.. 没有包含那个jar&做逆向研究... 看看从eclipse 编译出来的apk(104kb)和我打包出来的(26kb)到底差别在哪里...把apk文件当做zip解压~看见尺寸的差异在于&classes.dex 这个文件!原来问题在这里...生成dex文件是用 %DX% 查了下 %&DX% --help 用法,找到了解决问题的最后一步3. 输出dex时把第三方的jar包含在内在 dx --help里说的很明白了:-------------------------------------------------------------------------------------------E:\android\android-sdk-windows\platform-tools&dx --helpusage:&&dx --dex [--debug] [--verbose] [--positions=&style&] [--no-locals]&&[--no-optimize] [--statistics] [--[no-]optimize-list=&file&] [--no-strict]&&[--keep-classes] [--output=&file&] [--dump-to=&file&] [--dump-width=&n&]&&[--dump-method=&name&[*]] [--verbose-dump] [--no-files] [--core-library]&&[--num-threads=&n&] [&file&.class | &file&.{zip,jar,apk} | &directory&] ...&& &Convert a set of classfiles into a dex file, optionally embedded in a&& &jar/zip. Output name must end with one of: .dex .jar .zip .apk. Positions&& &options: none, important, lines.&&dx --annotool --annotation=&class& [--element=&element types&]&&[--print=&print types&]&&dx --dump [--debug] [--strict] [--bytes] [--optimize]&&[--basic-blocks | --rop-blocks | --ssa-blocks | --dot] [--ssa-step=&step&]&&[--width=&n&] [&file&.class | &file&.txt] ...&& &Dump classfiles, or transformations thereof, in a human-oriented format.&&dx --junit [-wait] &TestClass&&& &Run the indicated unit test.&&dx -J&option& ... &arguments, in one of the above forms&&& &Pass VM-specific options to the virtual machine that runs dx.&&dx --version&& &Print the version of this tool (1.6).&&dx --help-------------------------------------------------------------------------------------------在原先写的 dx 指令最后加上 jar的完整路径 也就是 %THIRD_JAR% 就ok了%DX% --dex --output=%OUT_FOLDER%\classes.dex %OUT_CLASS_FOLDER% %THIRD_JAR%再把编译打包签名的顺序重新做一遍~生成的apk运行一切正常!或许不是个什么大不了值得做笔记的一个专题,只是老衲java底子如此脆弱不堪..但之前数天在 度娘、谷哥、有盗和有病 四个知名包打听都寻遍了皆一无所获在技术论坛发帖提问也纯引来围观无人能解我想不通是这个问题真的不值一提还是国内的编程开发风气已经浮躁到量产我这种白菜的地步..但愿不是后者。-搁笔-
阅读(8624)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_094',
blogTitle:'Android笔记34:命令行打包编译.apk 包含第三方.jar 的方法',
blogAbstract:'**中秋节真是个假期~,从凌晨1点直接睡到下午3点,睡了14个小时累积的疲劳一扫而空脑袋也好使了..之前受托研究个挺好玩的项目..细节不说了,我在实现的时候卡在怎样脱离eclipse而能将项目源码编译成.apk上发现网上有现成答案的,参考了以下这篇http://jojol-/blog/729254虽然原作者是针对较早期的 Android 1.5(API-3)写的,但原理和用法相同。用到的路径和工具包括(容我偷个懒直接把部分的批处理内容直接cp出来了):SET WORK_SPACE=E:\\code\\autopack_demoSET PKG_PATH=com\\xxx\\apk\\autopack_demoSET JAVA_SPACE=D:\\Progra~2\\Java\\jdk1.6.0_21\\bin',
blogTag:'命令行,打包,apk,jar,第三方',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:6,
permalink:'blog/static/',
commentCount:11,
mainCommentCount:6,
recommendCount:4,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'曾经,我擅长使用SG551',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}下次自动登录
现在的位置:
& 综合 & 正文
Eclipse导出可执行Java工程/可执行Jar文件(包含第三方Jar包)
师兄部署了新的虚拟机,新学期大搞起来!之前由于爬虫不稳定,所以一直都是直接用Eclipse运行,然后遇到问题就修改的。但是这个比较麻烦,而且Eclipse本身就很占内存啊,摔!所以今天下午就把之前的代码清减了一下,对很多挫挫的System.out.println替换了log4j,路径啊数据库连接呀用配置文件处理了,最后打成可执行的Jar,这样在新的虚机上就可以大展拳脚咯^_^Y
Biu~废话说完,进入正题,将Java工程打包成可执行的Jar有各种方法,网上很多也不举例了,什么配置MANIFET文件啊之类的。其实有一个最简单可行的方法,就是直接用Eclipse导出Runnable JAR file。
我的Eclipse版本是Indigo Service Release 1(貌似就是传说中的3.7,不确定)
1. 首先,右键你的Java工程,选择Export,在Java文件夹下选择Runnable JAR file,如下图所示:
2. 选择Runnable JAR file后,会弹出如下所示的对话框,选择好导出路径后,默认Finish其实就可以了。但是需要注意的是两点:
你在run configuration中设置的JVM参数在打包完成后,就不再起作用了,需要在执行jar时在命令行中指定(见4);
对于以来的第三方包有三种处理方式,其实无论哪一种都不会影响你的使用的,我默认使用的是第一种,他会把以来的第三方jar包解压缩放到src中。
3. Finish之后,可执行的jar包就生成完毕了,如果你的工程中包含配置文件,如conf/xx.properties,那么就在与jar包同层的目录下创建conf目录,并在conf目录中放入xx.properties,如下图所示:
4. 最后就是运行打包好的jar文件了,在命令行中执行start java命令,并指定JVM参数,例如设置初始分配内存128M,最大256M:
start java -Xmx256m -Xms128m -jar spider.jar
在上图中,我们可以看到有一个run.bat文件,这个文件其实里面就只有一行命令:start java -Xmx256m -Xms128m -jar spider.jar,这样双击就可以执行jar了。在需要更改启动参数时,只要编辑run.bat就OK了。
好啦,算是个mark的过程啦,其实很简单的,就是不知道的时候需要到出查资料,又试来试去的有点儿浪费时间。:)
&&&&推荐文章:
【上篇】【下篇】

我要回帖

更多关于 192.168.1.1打不开 的文章

 

随机推荐