linuxmint18/ubuntu16.04LTS上搭建cocos2d-x-3.14.1安卓开发环境


 
第一部分 python和java基础环境 
1,系统自带python 2.7,不用额外安装 
 
2,系统自带openjdk-8-jre,安装一下jdk: 
sudo apt-get install openjdk-8-jdk 
 
 
第二部分 cocos2d-x-3.14.1自身的编译、测试 
 
1,下载cocos2d-x-3.14.1.zip,解压。 
2,cd ~/Downloads/cocos2d-x-3.14.1/build,修改install-deps-linux.sh,注释掉g++ 4.9相关的代码,因为通过sudo apt-get install build-essential安装的g++版本已经大于4.9了,支持c+11,如下:【g++4.8.1已经全面支持c++11了】
#!/bin/bash 
 
 
# Change directory to the location of this script 
cd $(dirname ${BASH_SOURCE[0]}) 
 
 
if [ ! $(command -v apt-get) ]; then 
  echo "Not a .deb package system. Please install dependencies manually" 
  exit 0 
fi 
 
# by hgc begin
#install g++-4.9
#sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y > /dev/null
sudo apt-get update
sudo apt-get upgrade
# by hgc end
 
DEPENDS='libx11-dev' 
DEPENDS+=' libxmu-dev' 
DEPENDS+=' libglu1-mesa-dev' 
DEPENDS+=' libgl2ps-dev' 
DEPENDS+=' libxi-dev' 
#DEPENDS+=' g++-4.9'  # by hgc
DEPENDS+=' libzip-dev' 
DEPENDS+=' libpng12-dev' 
DEPENDS+=' libcurl4-gnutls-dev' 
DEPENDS+=' libfontconfig1-dev' 
DEPENDS+=' libsqlite3-dev' 
DEPENDS+=' libglew-dev' 
DEPENDS+=' libssl-dev' 
DEPENDS+=' libgtk-3-dev' 
 
 
MISSING= 
echo "Checking for missing packages ..." 
for i in $DEPENDS; do 
    if ! dpkg-query -W --showformat='${Status}\n' $i | grep "install ok installed" > /dev/null; then
        MISSING+="$i " 
    fi 
done 
 
 
 
# by hgc begin 
#if [ -f /usr/bin/g++ ];then 
#sudo rm /usr/bin/g++ 
#echo "remove old g++" 
#fi 
#sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++ 
# by hgc end
 
if [ -n "$MISSING" ]; then 
    TXTCOLOR_DEFAULT="\033[0;m" 
    TXTCOLOR_GREEN="\033[0;32m" 
    echo -e $TXTCOLOR_GREEN"Missing packages: $MISSING.\nYou may be asked for your password for package installation."$TXTCOLOR_DEFAULT
    #sudo apt-get --force-yes --yes install $MISSING > /dev/null  # by hgc
    sudo apt-get --force-yes --yes install $MISSING  # by hgc
fi 
 
 
# install glfw 
#../tools/travis-scripts/install_glfw.sh  # by hgc
 
3,执行install-deps-linux.sh,等待一会。
 
4,cd ~/Downloads/cocos2d-x-3.14.1/tools/travis-scripts,修改install_glfw.sh,在线下载glfw-3.2.zip很慢,先用迅雷下载好手动放到travis-scripts目录下,如下:
#!/bin/bash 
 
GLFW_VERSION="3.2" 
GLFW_SOURCE="https://github.com/glfw/glfw/releases/download/${GLFW_VERSION}/glfw-${GLFW_VERSION}.zip"
GLFW_ZIP="glfw-${GLFW_VERSION}.zip" 
GLFW_INSTALL="glfw_install" 
GLFW_SRCDIR="glfw-${GLFW_VERSION}" 
GLFW_DESTDIR="glfw_dest" 
 
install_glfw_dep() 

  sudo apt-get install xorg-dev 
  sudo apt-get install libglu1-mesa-dev 
  #sudo apt-get install cmake cmake  # by hgc 我自己已经安装过了,这里注释掉 
  sudo apt-get install wget 

 
clean_tmp_file() 

  rm -rf ${GLFW_INSTALL} 

 
make_and_install() 

  mkdir $GLFW_DESTDIR 
  cd $GLFW_DESTDIR 
  cmake "../${GLFW_SRCDIR}" -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON 
  make 
  sudo make install 
  sudo ldconfig 
  cd .. 

 
install_glfw() 

  echo glw_version ${GLFW_VERSION} 
  echo glfw_download_size ${GLFW_SOURCE} 
  echo glfw_zip_file ${GLFW_ZIP} 
  install_glfw_dep 
  mkdir $GLFW_INSTALL 
  cp -f ${GLFW_ZIP} $GLFW_INSTALL  # by hgc
  cd $GLFW_INSTALL 
  #wget --passive -c -p -O $GLFW_ZIP $GLFW_SOURCE  # by hgc
  unzip ${GLFW_ZIP} 
  make_and_install 
  cd .. 
  clean_tmp_file 

 
#try to remove glfw3 
sudo apt-get purge libglfw3 libglfw3-dev 
 
install_glfw 
 
5,从https://github.com/glfw/glfw/releases下载好glfw-3.2.zip,放在~/Downloads/cocos2d-x-3.14.1/tools/travis-scripts目录
 
6,执行install_glfw.sh,等待。 
 
7,cd ~/Downloads/cocos2d-x-3.14.1/build 
mkdir linux; cd linux;cmake ../..; make -j 4  
 
8,执行~/Downloads/cocos2d-x-3.14.1/build/linux/bin/cpp-tests下的cpp-tests,报错: 
./cpp-tests: error while loading shared libraries: libfmod.so.6: cannot open shared object file: No such file or directory
 
9,搜索libfmod.so 
cd ~/Downloads/cocos2d-x-3.14.1; find . -name libfmod.so 
./external/linux-specific/fmod/prebuilt/32-bit/libfmod.so 
./external/linux-specific/fmod/prebuilt/64-bit/libfmod.so 
 
cd ./external/linux-specific/fmod/prebuilt/64-bit/ 
ln -s libfmod.so libfmod.so.6 
 
10,cd ~/Downloads/cocos2d-x-3.14.1/build/linux/bin/cpp-tests 
export LD_LIBRARY_PATH=/home/hgc/Downloads/cocos2d-x-3.14.1/external/linux-specific/fmod/prebuilt/64-bit; ./cpp-tests  
 
 
第三部分 linux平台上的c++ demo
1,准备工作 
cd ~/Downloads/cocos2d-x-3.14.1 
python setup.py,一路回车(编译linux平台上的可执行程序与android无关,相关路径可以先忽略)
source /home/hgc/.bashrc 
 
2,新建项目 
cd ~/workspace/cocos; cocos new -p com.your_company.mygame -l cpp -d . MyGame 
3,cd MyGame 
编译+运行:cocos run -p linux -j 4 


用cocos compile命令只做编译。
 
 
第四部分 Android环境搭建 
1,安装ant 
sudo apt-get install ant 
 
2, 
从http://www.androiddevtools.cn上下载Android sdk tools(后续通过tools安装Android sdk)
从http://www.androiddevtools.cn/上下载NDK(r11+) 
 
能翻墙的话从Android官网下载。 
 
3,cd ~/Downloads/android-sdk-linux/tools; 
./android 
打开Android SDK Manager,Android SDK Manage负责下载或更新不同版本的SDK包。
 
到底需要下载哪些东西,参考:https://www.zhihu.com/question/31935836 。我的方案是:
Tools下只需装前三项,即最新版本的
sdk只需装最新的Android7.1.1 API25(其中的SDK platform,如果需要运行模拟器,可以安装一个image,如google apis intel x86 atom system image)
extra不需要 
 
不能下载表示有墙,需要设置代理,选择http://www.androiddevtools.cn/里的腾讯镜像进行更新,中断时多试几次。 
 
4,cd ~/Downloads/cocos2d-x-3.14.1 
python setup.py,按提示设置环境变量,如下:
NDK_ROOT=/home/hgc/Downloads/android-ndk-r13b 
ANDROID_SDK_ROOT=/home/hgc/Downloads/android-sdk-linux 
ANT_ROOT=/usr/share/ant/bin 


source /home/hgc/.bashrc 
 
5,进入MyGame目录,执行cocos compile -p android -j 4 -m debug --ap android-25 --app-abi armeabi:armeabi-v7a:x86
目标文件在./bin/debug/android/MyGame-debug.apk 
 
如果要编译release版本,需要先创建keystore: 
 
keytool -genkey -alias mygame -keyalg RSA -validity 36500 -keystore mygame.keystore
 
说明: 
genkey 产生密钥 
-alias 别名 
-keyalg RSA 使用RSA算法对签名加密 
-validity 单位:天 
-keystore 文件名 
 
会要求输入keystore的密码,以及组织名字等相关信息,一路回车,最后输入yes,填好后在当前目录生成keystore文件: 
 
release版本编译完后,会提示你输入keystore文件。 
 
参考:http://blog.csdn.net/lzq0101/article/details/45731529


6,新建工程后第一次编译比较慢,且每个工程占用磁盘空间过大,可以通过cocos gen-libs命令解决,参考:http://discuss.cocos2d-x.org/t/how-to-speed-up-cocos2d-x-build-with-prebuilt-lib/23402


具体操作如下:
(1)新建一个cpp工程game,cocos new -p com.your_company.game -l cpp -d . game
(2)cd game; cocos gen-libs -p android -m debug --ap android-25 --app-abi armeabi:armeabi-v7a:x86,生成prebuilt库。其中--app-abi armeabi:armeabi-v7a:x86是可选的,是为了支持x86指令集的模拟器和armeabi-v7a的目标机,默认是armeabi指令集。
ps  armeabi和armeabi-v7a表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips的就悲催的被忽视了),armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。
armeabi通用性强,但速度慢,而v7a能充分发挥cpu的性能。
(3)新建的工程都会把cocos2d-x源码拷贝一份,可以删掉。rm -rf cocos2d
(4)修改proj.android/build-cfg.json,增加一项prebuilt-mk,且路径都改为绝对路径,如下:
{
    "ndk_module_path" :[
        "/home/hgc/Downloads/cocos2d-x-3.14.1",
        "/home/hgc/Downloads/cocos2d-x-3.14.1/cocos/prebuilt-mk",
        "/home/hgc/Downloads/cocos2d-x-3.14.1/cocos",
        "/home/hgc/Downloads/cocos2d-x-3.14.1/external"
    ],
    "copy_resources": [
        {
            "from": "../Resources",
            "to": ""
        }
    ]
}


(5)修改proj.android/jni/Android.mk,注释掉已有的import-add-path,增加一项prebuilt-mk,且路径都改为绝对路径,如下:
LOCAL_PATH := $(call my-dir)








include $(CLEAR_VARS)








# by hgc begin
# $(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
# $(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
# $(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
# $(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos/audio/include)
$(call import-add-path,/home/hgc/Downloads/cocos2d-x-3.14.1/cocos/prebuilt-mk)
# by hgc end








LOCAL_MODULE := MyGame_shared








LOCAL_MODULE_FILENAME := libMyGame








LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp








LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes








# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
















LOCAL_STATIC_LIBRARIES := cocos2dx_static








# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END








include $(BUILD_SHARED_LIBRARY)








$(call import-module,.)








# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END




(6)修改project.properties,将路径改为/home/hgc/Downloads/cocos2d-x-3.14.1的相对路径,注意一定要是相对路径,如下:
android.library.reference.1=../../../../Downloads/cocos2d-x-3.14.1/cocos/platform/android/java








(7)删除其它无用的子工程文件夹,只留Classes/  proj.android/  Resources/ .cocos-project.json这几个。将该工程保存为基准工程,提交到git上,后续新建项目以此为对照。








7,命令帮助 
cocos --help 
cocos compile --help 
 
 为了在x86指令集的模拟器和armeabi-v7a的目标机上运行,在cocos compile的时候可以加上--app-abi armeabi:armeabi-v7a:x86




第五部分 模拟器调试和gdb真机调试
1,模拟器调试
使用Android SDK Manager安装android-25中的google apis intel x86 atom system image
在Android SDK Manager的Tools菜单中,选择Manage AVDs,创建x86模拟器,然后启动。注意:模拟器启动后如果报“your cpu does not support required features vt-x or svm”,则要在bios中开启,参考:http://www.veryhuo.com/a/view/110093.html。虚拟机直接在设置中勾选。




将apk安装到模拟器中:cd bin/debug/android; adb install ddz-debug.apk




在模拟器中点击app即可启动。




在proj.android/libs/x86目录下有三个文件:
gdbserver  gdb.setup  libMyGame.so




将gdbserver和so文件复制到模拟器的/data目录下,命令如下:
adb root
adb push gdbserver /data
adb push libMyGame.so /data
 
执行adb shell命令,进入模拟器的命令行,然后:




执行ps查看app的pid




cd /data
./gdbserver :5039 --attach pid




会看到 Listening on port 5039   这代表正在监听。








回到linux 控制台,执行:
adb forward tcp:5039 tcp:5039








将proj.android/libs/x86目录下的gdb.setup拷贝到proj.android目录下,
cd proj.android; gdb -x gdb.setup,进入gdb命令行,然后:




target remote :5039  连接 gdbserver进行调试




l 查看代码
 
接下来就可以使用gdb打断点进行调试了。




2,gdb真机调试:
http://blog.csdn.net/AtlanticEvix/article/details/45028797?locationNum=1&fps=1

转载于:https://my.oschina.net/u/3485339/blog/900289

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值