首页 > 代码库 > libpomelo2在linux下编译android动态库libjpomelo

libpomelo2在linux下编译android动态库libjpomelo

参考文章如下:

http://nodejs.netease.com/topic/540702e0898634292cd0a588

https://github.com/NetEase/libpomelo2


编译libjpomelo.so耗费了2天多的时间,资料很少,期间走了很多弯路,这里记录下。

1、官网下载libpomelo2源代码。

2、准备android ndk 10的包,我ubuntu是32位的,所以下载的是android-ndk32-r10b-linux-x86.tar.bz2    。

3、打开Terminal终端,最好root权限。执行./android-toolchain.sh <ndk-dir>。这里的ndk-dir就是第二步中下载的ndk解压目录。执行完后,会在libpomelo根目录生成android-toolcahin目录,里面有交叉编译所需的所有头文件,库文件和可执行文件。

4、在执行./android-gen.sh之前,我们需要设置一些环境变量,android-toolchain.sh中的export ANDROID_TOOLCHAIN_DIR=$PWD/android-toolchain这是在android-toolchain.sh执行结束实际上已经消失了,或者说没有起作用,所以我们要手动设置

vim /etc/profile,在末尾增加

export ANDROID_TOOLCHAIN_DIR=#PWD/android-toolchain,这里的#PWD应该为你的根目录,这里指向的则是刚才生成的android-toolcahin目录。

export PATH=$ANDROID_TOOLCHAIN_DIR/bin:$PATH 

export PATH=/home/wangc/android-ndk-r10b/platforms/android-9/arch-arm/usr/include:$PATH

export AR=arm-linux-androideabi-ar
export CC=arm-linux-androideabi-gcc
export CXX=arm-linux-androideabi-g++
export LINK=arm-linux-androideabi-g++
export PLATFORM=android

这里我们将android-gen.sh里面开始设置的环境变量手动设置一遍,因为在里面设置不顶用。。。


5、执行./android-gen.sh,然后会生成一个Makefile,然后make则会在out/Default/lib.target目录下生成libjpomelo.so了。在Default/obj.target目录下有libpomelo2.a。至此库文件就生成完了。这里要注意查看下文件类型,file libjpomelo.so,如显示平台为ARM ELF,恭喜你,OK了。


6、eclipse测试。将根目录下的test/Client.java和Test.java拷贝到android工程下,注意目录结构,如图所示:


Testpomelo.java代码如下:

<span style="font-size:14px;">public class Testpomelo extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_testpomelo);
		
		Test.main(null);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.testpomelo, menu);
		return true;
	}

}
</span>
小伙伴们,还不赶快运行!

libpomelo2在linux下编译android动态库libjpomelo