美文网首页
Android 添加Jar<转>

Android 添加Jar<转>

作者: Ling912 | 来源:发表于2016-04-14 12:10 被阅读42次

    Android Studio刚发布,相信很多朋友和我一样,开始尝试用其开发项目,但新东西总会遇到这样或那样的问题,其中令我头的就是引入第三方的jar包无法编译的问题,因为是新东西,相关的信息都比较少,解决问题令我花费了相当长的时间,为了避免各位同仁再走弯路,在此将解决步骤列出来。

    1、将jar包放入项目里的libs文件夹中。

    2、在project选中jar包点击右键"Add as library"。

    3、这两步是网上比较容易找到的,但此时项目仍然是无法正常编译的,这时需要在项目的build.gradle文件里的dependencies节加入 dependencies

    {

    compile files('libs/android-support-v4.jar')

    compile files('libs/xxxx.jar')

    }

    4、此时项目正常编译并运行了,但当你的代码中真正创建了引用jar里的类实例时,有可能系统会抛出异常NoClassDefFoundError,这个时候可以按以下步骤操作:

     进入命令提示符窗口。

     定位到项目的根目录,即build.gradle所在的目录。

     运行 "{android studio 安装目录}\sdk\tools\templates\gradle\wrapper\gradlew.bat" clean

      重新编译运行项目

    通过以上操作,应该可以解决问题。

    前些日子eclipse突然全方面罢工,于是换了使用Android Studio。

    然后在使用过程中,需要.jar和.so,遇到了些问题,下面总结下使用方法:

    1、加入jar拿百度定位SDK来说,按照百度官方的文档完成配置完成后,因为Android Studio使用的是gradle,所以需要在项目的build.gradle中添加jar包的配置。(注意,这里不是整个工作空间只是单个项目的build.gradle)打开后是下面这个样子的:

    buildscript {

    repositories {

    mavenCentral()

    }

    dependencies {

    classpath'com.android.tools.build:gradle:0.5.+'

    }

    }

    apply plugin:'android'

    repositories {

    mavenCentral()

    }

    dependencies {

    compile'com.android.support:support-v4:13.0.+'

    }

    android {

    compileSdkVersion17

    buildToolsVersion"17.0.0"

    defaultConfig {

    minSdkVersion8

    targetSdkVersion16

    }

    }

    然后在 dependencies{}中添加放置在libs文件夹下的名为xxxx.jar导入:

    4dependencies {

    compile'com.android.support:support-v4:13.0.+'

    compile files('libs/xxxx.jar')

    }

    这样配置之后,百度的位置信息还是一直没有获取到,最可能的原因就是.so文件没有加载成功

    2、加入.so:

    (1)这个还与gradle版本有关系。在v0.3(可以从上面dependencies{ classpath 'com.android.tools.build:gradle:0.5.+'}中看到我的版本是v0.5)下可以在build.gradle中添加如下设置:

    task copyNativeLibs(type: Copy) {

    from(newFile(project(':MyProject').buildDir,'native-libs')) { include'**/*.so'}

    intonewFile(buildDir,'native-libs')

    }

    tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }

    clean.dependsOn'cleanCopyNativeLibs'

    tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->

    pkgTask.jniDirnewFile(buildDir,'native-libs')

    }

    (注意:代码中的':MyProject'一定要换成你的项目名字哦)

    因为我的不是v0.3所以我也没有获得想要的结果。希望使用v0.3的同学验证上面方法是否能成功。该方法GitHub地址:地址

    (2)0.5中我选择的处理方法:

    将所有需要使用的.so文件压缩为.zip文件(zip中的文件目录结构为:lib/armeabi/*.so)注意,一定要是这样的路径,lib不要写成libs啊!然后将这个.zip文件重命名为armeabi.jar文件(我用的是so.jar),将该jar包添加到项目的libs文件下。在项目build.gradle中的添加jar文件的dependencies中删除已添加的jar,包括compile 'com.android.support:support-v4:13.0.+'这个。更改为:

    dependencies {

    compile fileTree(dir:'libs', include:'*.jar')

    }

    虽然感觉上面的方法有些小变态,但是解决问题才是关键对不?

    再详细说一下:

    最后的目录结构

    libs

    ^---|xxx.jar

    ^---|armeabi.jar

    ^---|lib

    ^---|armeabi

    ^---|xxx.so

    刚开始使用ubuntu,IBus默认输入法中特殊符号不会使用,只能形像到这里,希望能看懂。回公司补个截图。先凑合看。

    原文:http://my.oschina.net/zhibuji/blog/147441

    相关文章

      网友评论

          本文标题:Android 添加Jar<转>

          本文链接:https://www.haomeiwen.com/subject/kkuglttx.html