在Android Studio 中加入jar 和.so 文件



前些日子eclipse突然全方面罢工,于是换了使用Android Studio。
然后在使用过程中,需要.jar和.so,遇到了些问题,下面总结下使用方法:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"
 
    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 16
    }
}
然后在 dependencies{}中添加放置在libs文件夹下的名为xxxx.jar导入: 
?
1
2
3
4
dependencies {
    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中添加如下设置:

?
1
2
3
4
5
6
7
8
9
10
11
12
task copyNativeLibs(type: Copy) {
    from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }
    into new File(buildDir, 'native-libs')
}
 
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
 
clean.dependsOn 'cleanCopyNativeLibs'
 
tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
    pkgTask.jniDir new File(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.+'这个。更改为: 
?
1
2
3
dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}
虽然感觉上面的方法有些小变态,但是解决问题才是关键对不? 
再详细说一下: 
最后的目录结构 
libs 
^---|xxx.jar 
^---|armeabi.jar 
        ^---|lib 
              ^---|armeabi 

                     ^---|xxx.so

刚开始使用ubuntu,IBus默认输入法中特殊符号不会使用,只能形像到这里,希望能看懂。回公司补个截图。先凑合看。 
最后:如果您看到该文,发现那里有错误希望能指正,如果有更好的解决方法希望您能告知,互相学习嘛  。同时也希望能对遇到该类问题的程序猿(媛)有所帮助。

---生命不止,编码不息。  

前些日子eclipse突然全方面罢工,于是换了使用Android Studio。
然后在使用过程中,需要.jar和.so,遇到了些问题,下面总结下使用方法:

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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 {
     compileSdkVersion 17
     buildToolsVersion "17.0.0"
 
     defaultConfig {
         minSdkVersion 8
         targetSdkVersion 16
     }
}
然后在 dependencies{}中添加放置在libs文件夹下的名为xxxx.jar导入: 
?
1
2
3
4
dependencies {
     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中添加如下设置:

?
1
2
3
4
5
6
7
8
9
10
11
12
task copyNativeLibs(type: Copy) {
     from( new File(project( ':MyProject' ).buildDir, 'native-libs' )) { include '**/*.so' }
     into new File(buildDir, 'native-libs' )
}
 
tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }
 
clean.dependsOn 'cleanCopyNativeLibs'
 
tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->
     pkgTask.jniDir new File(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.+' 这个。更改为: 
?
1
2
3
dependencies {
     compile fileTree(dir: 'libs' , include: '*.jar' )
}
虽然感觉上面的方法有些小变态,但是解决问题才是关键对不? 
再详细说一下: 
最后的目录结构 
libs 
^---|xxx.jar 
^---|armeabi.jar 
        ^---|lib 
              ^---|armeabi 

                     ^---|xxx.so

刚开始使用ubuntu,IBus默认输入法中特殊符号不会使用,只能形像到这里,希望能看懂。回公司补个截图。先凑合看。 
最后:如果您看到该文,发现那里有错误希望能指正,如果有更好的解决方法希望您能告知,互相学习嘛     。同时也希望能对遇到该类问题的程序猿(媛)有所帮助。

---生命不止,编码不息。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值