1,在android系统环境中编译自己的项目时,往往会用到第三方jar包。这些jar包在eclipse中加入编译,一路畅通,由于eclipse已经帮助你配置好了。可是当把这个项目复制到系统环境中编译时,jar包就会无论用。

以下是自己遇到的问题。通过查找网上的资料,遇到各种问题。最后最终解决。通过博客总结一下,给大家分享。

条件:比如:先在eclipse中开发的应用。用到support-v4包和第三方pinyin4j-2.5.0.jar。

移植到系统项目中,编译不通过。以系统的music应用为例。

1,首先之是增加Android.mk文件

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(call all-java-files-under, src) \

    src/com/android/music/IMediaPlaybackService.aidl

LOCAL_PACKAGE_NAME := Music

LOCAL_PROGUARD_FLAG_FILES := proguard.flags

include $(BUILD_PACKAGE)

编译会找不到引用的包中对应的类和方法。

2,然后在声明包,在.mk中加入

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

#声明包名

LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 pinyin4j-2.5.0

LOCAL_SRC_FILES := $(call all-java-files-under, src) \

    src/com/android/music/aidl/IMediaService.aidl

LOCAL_PACKAGE_NAME := Music

include $(BUILD_PACKAGE)

include $(CLEAR_VARS)

#指明包的位置

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := pinyin4j-2.5.0:lib/pinyin4j-2.5.0.jar

include $(BUILD_MULTI_PREBUILT)

3,这时编译有可能还会报错。(...can't find superclass or interface...)

Warning: demo.Pinyin4jAppletDemo$1: can't find superclass or interface java.awt.event.WindowAdapter

Warning: demo.Pinyin4jAppletDemo$3: can't find superclass or interface java.awt.event.ActionListener

Warning: demo.Pinyin4jAppletDemo$2: can't find superclass or interface java.awt.event.ActionListener

Warning: demo.Pinyin4jAppletDemo: can't find superclass or interface javax.swing.JApplet

Warning: demo.Pinyin4jAppletDemo$1: can't find referenced class java.awt.event.WindowAdapter

Warning: demo.Pinyin4jAppletDemo$1: can't find referenced method 'void stop()' in class demo.Pinyin4jAppletDemo

Warning: demo.Pinyin4jAppletDemo$1: can't find referenced method 'void destroy()' in class demo.Pinyin4jAppletDemo

Warning: demo.Pinyin4jAppletDemo$1: can't find referenced class java.awt.event.WindowAdapter

Warning: demo.Pinyin4jAppletDemo$1: can't find referenced class java.awt.event.WindowEvent

Warning: demo.Pinyin4jAppletDemo$3: can't find referenced class javax.swing.JComboBox

Warning: demo.Pinyin4jAppletDemo$3: can't find referenced class javax.swing.JComboBox

这好像的混淆编译造成的错误,然后在应用的根文件夹下建立proguard.cfg这个文件,在里面输入:

-dontwarn demo.** 

-keep class demo.** { *;} 



查看编译报的错误,有几个包出错。就在里面加几个这种声明。这里是有demo.下的java报错,仅仅加这个即可。然后在Android.mk中加入此文件的标识。

LOCAL_PROGUARD_FLAG_FILES := proguard.cfg



然后在编译。应该就能够通过。

大功告成。。

2,然后后来又用到还有一个jar包,出现了新问题:下面是出现的warring:

Warning: org.opencv.android.CameraBridgeViewBase: can't find referenced class org.opencv.R$styleable

Warning: org.opencv.android.CameraBridgeViewBase: can't find referenced class org.opencv.R$styleable

Warning: org.opencv.android.CameraBridgeViewBase: can't find referenced class org.opencv.R

×××××

Warning: there were 3 unresolved references to classes or interfaces.

         You may need to specify additional library jars (using '-libraryjars'),

         or perhaps the '-dontskipnonpubliclibraryclasses' option.

使用上面的方法就无论用。

可是在proguard.cfg文件里加入一句这个就能够忽略warring。

-ignorewarnings

解决的方法都是在网上找了,自己总结一下。谢谢各位在网上的分享。

在android中,编译的项目使用到第三方jar的导入方法 终极版!的更多相关文章

  1. MyEclipse中把java项目打包——含有第三方jar包【转】

    也适用于eclipse导出jar. 在将项目打包为jar包时一直出现“ClassNotDefFound”错误,百度了很多解决办法都没有解决.最终找到一个很好的解决办法. 1.打包步骤 (1)右键单击j ...

  2. 在Eclipse中编译maven项目出的问题

    在Eclipse中编译Maven项目,运行 jetty:run 指令的时候会出错,在 JRE选项卡中加入: -Dorg.mortbay.util.URI.charset=GBK-Xms512m -Xm ...

  3. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  4. MyEclipse中android 项目如何解决第三方jar无法关联源码的问题( The JAR of this class file belongs to container 'Android Private Libraries' which does not allow modifications to source attachments on its entries.)

    若我们要为第三方jar(android-support-v4.jar)关联源码通常的做法是 右键项目 单击菜单Properties 单击菜单 Java Build Path 单击 Libraries ...

  5. maven项目引入外部第三方jar包,引入、本地编译、第三方jar一起打到jar中、在linux机器中解决classnotfound(配置classpath),笔记整理。

    文章目录 引用的第三方jar的目录结构(示例) 引入第三方jar进行dependency使项目内能import 本地编译 第三方jar一起打到jar中 在linux机器中解决classnotfound ...

  6. [Android]proguard重新编译和如何不混淆第三方jar包

    转载自:http://glblong.blog.51cto.com/3058613/1536516 一.ant安装.环境变量配置及验证 (一)安装ant 到官方主页http://ant.apache. ...

  7. Android项目:proguard混淆第三方jar.

    1.Gson混淆 ## ---------------------------------- ##   ########## Gson混淆    ########## ## ------------- ...

  8. Android : 关于HTTPS、TLS/SSL认证以及客户端证书导入方法

    一.HTTPS 简介 HTTPS 全称 HTTP over TLS/SSL(TLS就是SSL的新版本3.1).TLS/SSL是在传输层上层的协议,应用层的下层,作为一个安全层而存在,翻译过来一般叫做传 ...

  9. Android Studio编译开源项目(含NDK开发)常见报错

    1.未设置NDK的路径 Error:Execution failed for task ':library:ndkBuild'. > A problem occurred starting pr ...

随机推荐

  1. GRUB 引导流程

    GRUB(bootloader)引导流程:  GRUB,GRand Unified Bootlader ,是一个来自GUN项目的多操作系统启动程序.GRUB是多启动规范的实现,它允许用户可以在计算机内 ...

  2. markdown图片设置

    工具:typora 1. 设置图片大小(本节引用自 https://support.typora.io/Resize-Image/) Typora允许使用<img>标签显示图像,也可用于调 ...

  3. qt quick中qml编程语言

    Qt QML 入门 — 使用C++定义QML类型 发表于 2013 年 3 月 11 日   注册C++类 注册可实例化的类型 注册不实例化的QML类型 附带属性 注册C++类 注册可实例化的类型 如 ...

  4. Python破解Wifi密码思路

    一.前言说明 本机运行环境:系统环境Win10,运行环境Python3.6,运行工具Pycharm 需要Python的包有:pywifi 这是一种暴力破解wifi的模式,需要的时间比较长,本文主要提供 ...

  5. SVN提交代码时报405 Method Not Allowed

    原因: 1.删除了某个文件夹,然后又创建了一个同名文件夹 2.之前执行过Add操作,但没上传代码,在电脑上提交了同路径的代码,再次上传时会报错 解决方法: 1. 删除出现错误的文件夹 2. SVN U ...

  6. [luogu] P4364 [九省联考2018]IIIDX(贪心)

    P4364 [九省联考2018]IIIDX 题目背景 Osu 听过没?那是Konano 最喜欢的一款音乐游戏,而他的梦想就是有一天自己也能做个独特酷炫的音乐游戏.现在,他在世界知名游戏公司KONMAI ...

  7. [terry笔记]python购物程序

    如下是一个购物程序: 先输入工资,显示商品列表,购买,quit退出,最后格式化输出所买的商品. count = 0 while True: #做一个循环判断,如果输入的不是数字,基于提示,三次后退出 ...

  8. luogu 1865 数论 线性素数筛法

    洛谷 1865 数论 线性素数筛法 最基本的线性素数筛法,当做复习欧拉筛法了,没有尝试过使用更暴力的筛法... WA了一次,手抖没打\n 传送门 (https://www.luogu.org/prob ...

  9. android启动第一个界面时即闪屏的核心代码(两种方式)

    闪屏,就是SplashScreen,也能够说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后.自己主动关闭.  第一种方式: android的实现很easy,使用Handler对象的postDe ...

  10. 15 个经常使用的 SQL Server 高级语法

    1.case-end (详细的值) case后面有值,相当于c#中的switch case 注意:case后必须有条件,而且when后面必须是值不能为条件. -----------------case ...