怎么将第三方的库文件只复制而不编译呢

我遇到这个问题是我cocos2d-x2.2.2版本游戏在更新移动mm3.1.7版本的sdk遇到的,下面我会具体说明问题和解决方案。

一..相信cocos2dx的程序在接入安卓方面的支付功能常常会接触到第三方sdk的.so库文件,这些库文件的作用是对支付信息做出了封装,但是有的sdk你会发现把第三方的.so文件复制到libs文件夹下,再编译完成项目后会出现原本复制到libs文件夹下的.so文件消失的情况,针对这种情况我原来的解决方案是在代码文件夹下创建一个文件夹prebuilt,将第三方的.so文件复制到这里边去,再在Android.mk中加入如下代码进行库文件的编译,这样第三方的.so文件就会保留在libs文件夹下

//代码示例,其他.so文件类似

include $(CLEAR_VARS)

LOCAL_MODULE := entryex

LOCAL_SRC_FILES := prebuilt/libentryex.so

include $(PREBUILT_SHARED_LIBRARY)

二.这篇博文的重点当让不是这个,以上的方法相信大多数人都了解掌握,但是3.1.7版本的出现,却不得不让我改变思路去寻找新的方法去做,原因是上述情况会对.so文件进行编译,导致编译后的.so文和demo中的.so大小不一样,实际就是编译过程中导致了内容的丢失,无法实现原来的效果,那么,我现在介绍的就是如何不进行编译的方式就能把.so文件复制到libs里呢,相信能看到这里的人,不仅仅是单纯的小白了,你应该一定是用过python的,那么好,下面就以我的命名为例,向大家介绍这种方法,

1.首先创建一个名为lib_so.py的文件,lib_so.py里的内容如下,把它放到C盘根目录下(随意放置,我只是为了方便演示)

import os

def copyFiles(sourceDir, targetDir):

for file in os.listdir(sourceDir):

sourceFile = os.path.join(sourceDir,  file)

targetFile = os.path.join(targetDir,  file)

if os.path.isfile(sourceFile):

if not os.path.exists(targetDir):

os.makedirs(targetDir)

if not os.path.exists(targetFile) or(os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):

open(targetFile, "wb").write(open(sourceFile, "rb").read())

if os.path.isdir(sourceFile):

First_Directory = False

copyFiles(sourceFile, targetFile)

copyFiles("想要复制.so文件的目录", "将要复制so文件到达的目录")

//下面是例子(一定要注意文件夹之间使用\\哦)

//copyFiles("E:\\whs_dj\\libs\\armeabi", "E:\\whs_dj\\proj.android\\libs\\armeabi")

2.再创键一个copy_so.bat的脚本命令文件,内容如下,也放在C盘根目录下

//这段代码很单纯,实际就是执行py文件

C:\lib_so.py

3.我们编译android项目是在eclipse下的,那么进入eclipse,右键点击项目,选择Properties(Alt+Enter),再选择Builders,选择new,选择Program,

选择Browse File System(选择系统文件),选择我们创建的.bat文件,修改名字为lib_so,点击ok,就可以了

当然光是这样还是不行的,看下面

我们要把lib_so文件放在CDT Builder 和 Android Package Builder之间(原因是为了让我么复制文件的工作在CDT编译之后和android编译之前),截止到现在,我们的工作就算完成了,再次去编译项目就ok了,如大家有什么疑惑,欢迎大家加我的私人qq:1036723494,我会热心帮助大家解决问题的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-13 08:10:29

怎么将第三方的库文件只复制而不编译呢的相关文章

AndroidStudio导入第三方开源库 --文件夹源码

1 在已打开的项目中  File-New-ImportModule 选择开源项目中的 库所在文件夹比如 library文件夹 然后导入. 2 File-Project  Sructure  在Modules 那 选择我们的项目文件(默认app) -选择Dependencies  - 绿色"+"号  Module Dependence  选择我们刚刚导入的开源项目即可,这时我们就可以用导入的模块了. 3 由于gradle版本  编译工具 SDK等工具版本 很可能不一致导致不能正常编译,我

android so库多平台引用第三方so库,及多平台编译

1, eclipse 新建android项目,添加jni目录,配置ndk 2,jni目录下新建第三方库的引用源文件目录,包含各个平台的so包以及对应的头文件 3,配置Android.mk 第三方库引用的配置文件如: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := 引用库别名 LOCAL_SRC_FILES :=$(TARGET_ARCH_ABI)/引用库文件名称.so include $(PREBUILT_SH

linux学习之路之使用脚本来复制二进制程序和所需的库文件

首先介绍bash的特殊语法 ${parameter#*word} 其中parameter为变量,word为分隔符,表示从变量最边左字符开始到第一匹配到分隔符(word)之间的字符串都去掉 ${parameter##*word}:表示从变量最左边字符开始到最后一次匹配到该分隔符之间的字符串都去掉 注意:其中变量不要加$符号 当*在分隔符(word)前面时,表示从左开始匹配 当*在分隔符(word)后面时,表示从右开始匹配 ${parameter%word*}:表示从最右边字符开始到第一次匹配到的分

(转) C语言头文件、库文件的查找路径

在程序设计中,文件包含是很有用的.一个大的程序可以分为多个模块,由多个程序员分别编程.有        些公    用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使        用.这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错. 对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来.例如以下写法都是允许的:    #include"stdio.h"    #include   

C语言头文件、库文件的查找路径

在 程序设计中,文件包含是很有用的.一个大的程序可以分为多个模块,由多个程序员分别编程.有些公用的符号常量或宏定义等可单独组成一个文件,在其它文件的开头用包含命令包含该文件即可使用.这样,可避免在每个文件开头都去书写那些公用量,从而节省时间,并减少出错. 对文件包含命令还要说明以下几点:1. 包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来.例如以下写法都是允许的:    #include"stdio.h"    #include    但是这两种形式是有区别的:使用尖括号表

linux 下C语言编程库文件处理与Makefile编写

做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一定要好好学习下如何在linux下纯手工gcc编译c项目.今天学了2点,一个是库文件处理,另一个是makefile编写. 学习的系统是centos6.6,编译升级的gcc4.8.2,明天写个博客总结下这回gcc安装的过程,每次都能学到些东西. gcc的编译过程 首先需要清楚gcc编译做了些什么 源文件

C++ 使用Htmlcxx解析Html内容(VS编译库文件)

1.下载Htmlcxx,http://sourceforge.net/projects/htmlcxx/ 2.解压htmlcxx-0.85.tar.gz 3.打开htmlcxx.vcproj,注意是htmlcxx.vcproj,不是下面的htmlcxxapp.vcproj 4.使用VS打开htmlcxx.vcproj,需要对项目进行转换 5.选择编译模式:Debug或Release模式,具体由需要使用到Htmlcxx库文件的项目的编译模式决定,但注意Debug对Debug,Release对Rel

关于#progma comment 中库文件相对路径问题

最近做一个验证程序的对话框编程,因为里面要要用到静态链接库,所以就稍微的学习了下静态链接库知识,学习的过程中感觉到了自己所了解的东西实在是少的可怜,更加坚定了自己要更加上进的决心,要把以前所丢掉的都给补回来. 在调用静态链接库文件,也就是.lib文件的时候,需要设置链接库文件的路径让编译链接的时候,能够找到你所编写的静态库文件,首先在应用程序头文件中包 含静态库的头文件,然后用链接标识符#pragma comment(lib,".lib")在你的程序开头显示说明. #include &

android studio中导入第三方jar包和第三方库文件的方法

一.导入第三方jar包的方法 其实较为简单,以下步骤: 1>在工程的libs下面放置需要导入的jar包 2>在导入的jar包右键,选择"add as library" 3>这时候就能够在app下面的build.gradle中发现多了如下说明:"compile XXXX",说明导入jar文件成功了. 二.导入第三方类库文件 相对而言,其实就是将之前的Eclipse的project或者module转化成android studio下的可执行的proje