【求教】Android.mk编译apk,第三方的jar包编译不进去! jarbuild 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := foo:lib/third.jar LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := foo:third.jar 试一下 这个不是原因,只不过你说的把jar放在代码根目录下了,一样的效果的,不过还是谢谢你! jar与你的源码环境有没有冲突,比如你的jar的功能、定义等源码中已经有啦 是怪了你把LOCAL_MODULE_TAGS := optional加上试试。把foo改成libfoo试试(照理没区别)确定jar包在lib下面,不是libs吗?只能瞎猜了 比较下adt插件环境与源码环境 1. 你的 第三方库应该新建一个工程目录, 例如 thirds2. thirds 应该就是你的第三方库prebuilt工程配置, Android.mk 怎么写你应该清楚2. apk 的 Android.mk 脚本中除了你写的那些, 有没有加上如下一行:include $(callall-makefiles-under,$(LOCAL_PATH))这样才能保证能找到你第三方库位置, 从而copy 源码编译不会把jar文件打进APK压缩包,所以你要在mk文件中把jar文件复制到系统的lib目录中,并且还要build配置把该jar编入系统才可。 好像系统的lib下只有so类型的库,jar库不会放在里边吧。。求教。 这个。。,看错了,把jar文件copy到系统framework目录下。 好像是不会有 jar 文件, 应该是都被android处理过了, 转换成 dalvik 识别的字节码;apk 的所有java代码最终都 集中到 classes.dex 这个文件 这位仁兄说的对。我仔细研究了一下。编译apk的流程是这样的,先把资源res打包进去,然后把java 代码用java正常编译工具编译成class文件组成的jar文件,最后再用androi的特有的dx工具把classes.jar变成dex.最后apk里就有res和dex组成。由上,如果我们要用第三方的jar包(一般是由class文件构成的,我这个jar包里关键是还有res),源码的make好像默认支持不了啊。 对于包含资源文件的 jar, 请参考:http://blog.csdn.net/arui319/article/details/8123396http://tech.it168.com/a2012/0406/1334/000001334145.shtml 你这两篇讲的是adt如何使用jar的,和我的主题如何用make使用无关 呵呵,谢谢! 你就不能变通下? 最终编译不还是靠android提供的那些工具?资源引用的机制还能脱离android?需要的工程你不能不用adt创建? 变通谁不会,用adt早就搞定了啊。现在就是要用make。继续等高人解答。 我说的变通不是让你去用 ADT, 是指借用ADT的处理方式算了, 等吧 我看了一路的讨论,我之前编译的都是只编译自己写的工程文件,我还真没有加载过别人jar包! 如果jar与源码有冲突,请问如何解决?? 是不是因为你虽然Android.mk文件中加了这个jar包,但代码里面并没有使用jar包里面的内容,被android编译的时候优化删掉了,遇到过这种情况,只要代码里用到就能在最后的apk中找到了 我是这样写的mk文件,可以编译过的,你试下:LOCAL_STATIC_JAVA_LIBRARIES := android-common com.android.emailcommon com.android.emailsync guava android-common-chips libphotoviewer#LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayoutLOCAL_STATIC_JAVA_LIBRARIES += android-support-v13LOCAL_STATIC_JAVA_LIBRARIES += mylib #这个是我自己加的jar包名字,名字任意写...include $(BUILD_PACKAGE)include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := mylib:libs/android-support-v4.jar #我要编译的jar包存放位置include $(BUILD_MULTI_PREBUILT) 1、初步判断不是第三方jar的问题,一般来说jar没打包进去程序会运行报错 这个可以反编译apk确定是否有打包进去2、达不到原来的效果,这个应该指的是UI上的效果吧 eclipse和源码编译是有不同的,尤其有些UI上样式是不一样的 LOCAL_PROGUARD_ENABLED := disabled 我的这个方法是经过验证的:LOCAL_PROGUARD_ENABLED := disabled ,肯定是这个原因 你看能不能把这个jar单独编译成dex,,拷贝到一个目录,将这个路径加到系统CLASSPATH环境变量中,这样apk应该能调用到 android wifi流量统计 cursor为什么会变? android版本,您懂吗 ListView 深深的伤了我的心 Android Box2D例子里面到底错在哪里? pull解析xml android平台 pinyin4j 汉字转换中文问题 如何知道ListView各行的状态? 在跑CTS的时候,报错,求指教 Android程序猿的进阶之路 关于OpenGL es 的基础问题 (新手自学)遇到了个关于android中session的问题
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := foo:third.jar
试一下
把foo改成libfoo试试(照理没区别)
确定jar包在lib下面,不是libs吗?只能瞎猜了
2. thirds 应该就是你的第三方库prebuilt工程配置, Android.mk 怎么写你应该清楚
2. apk 的 Android.mk 脚本中除了你写的那些, 有没有加上如下一行:include $(callall-makefiles-under,$(LOCAL_PATH))这样才能保证能找到你第三方库位置, 从而copy
求教。
这个。。,看错了,把jar文件copy到系统framework目录下。
apk 的所有java代码最终都 集中到 classes.dex 这个文件
我仔细研究了一下。
编译apk的流程是这样的,先把资源res打包进去,
然后把java 代码用java正常编译工具编译成class文件组成的jar文件,
最后再用androi的特有的dx工具把classes.jar变成dex.
最后apk里就有res和dex组成。由上,如果我们要用第三方的jar包(一般是由class文件构成的,我这个jar包里关键是还有res),源码的make好像默认支持不了啊。
http://blog.csdn.net/arui319/article/details/8123396http://tech.it168.com/a2012/0406/1334/000001334145.shtml
最终编译不还是靠android提供的那些工具?
资源引用的机制还能脱离android?
需要的工程你不能不用adt创建?
现在就是要用make。
继续等高人解答。
算了, 等吧
如果jar与源码有冲突,请问如何解决??
#LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v7-gridlayout
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v13
LOCAL_STATIC_JAVA_LIBRARIES += mylib #这个是我自己加的jar包名字,名字任意写...include $(BUILD_PACKAGE)include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := mylib:libs/android-support-v4.jar #我要编译的jar包存放位置
include $(BUILD_MULTI_PREBUILT)
这个可以反编译apk确定是否有打包进去2、达不到原来的效果,这个应该指的是UI上的效果吧
eclipse和源码编译是有不同的,尤其有些UI上样式是不一样的