MAC下Android Studio 1.4编译构建Cocos2d-x 3.9之Android版本程序

简介:

本文记载的是一个HELLO WORLD级别的入门程序在如题所示环境下的编译构建过程。

      说明:如今安装Android Studio 1.4,它会自动安装Gradle 2.4(早期却不是这样),但遗憾的是没有下载对应的.zip文件。所以,后面在命令行编译时还需要再次下载这个文件。

另外,在MAC环境下下载安装Cocos2d-x 3.9Android Studio 1.4的步骤,在此省略描述。

环境变量配置

终端工具下,运行如下命令:

vim ~/.bash_profile

输入如下内容:

ANT_ROOT='/usr/local/Cellar/ant/1.9.6/bin'

exportANT_ROOT

COCOS_PATH='~/Downloads/cocos2d-x-3.9/tools/cocos2d-console/bin'

exportCOCOS_PATH

exportPATH=$PATH:$COCOS_PATH:$ANT_ROOT

exportPATH=$PATH:/Users/zxzpc/Library/Android/sdk/tools

exportPATH=$PATH:/Users/zxzpc/LIbrary/Android/sdk/build-tools

exportPATH=$PATH:/Users/zxzpc/Downloads/android-ndk-r10e

exportPATH=$PATH:/Users/zxzpc/usr/local/Cellar/ant/1.9.6/bin

 

exportANDROID_SDK_ROOT=/Users/zxzpc/Library/Android/sdk

exportANDROID_NDK_ROOT=/Users/zxzpc/Downloads/android-ndk-r10e

exportNDK_ROOT=/Users/zxzpc/Downloads/android-ndk-r10e

 

#Add gradle variable export

GRADLE_HOME='/Applications/Android\Studio.app/Contents/gradle/gradle-2.4/bin'

exportPATH=$PATH:$GRADLE_HOME

 

接下来运行下面命令:

source ~/.bash_profile

注意,这里的source命令用于重新执行刚刚修改的系统环境配置文件,使之内容立即生效,而不必注销并重新登录。这一点很重要;这样以后,从命令行下执行cocos命令,它就能够自动找到上述SDK所在位置。

Android Studio 1.4下打开工程与修改文件gradle-wrapper.properties

启动Android Studio 1.4打开示例工程MyHelloWorld(使用命令“File”“Open”打开文件夹proj.android-studio即可)。因为文件gradle-wrapper.properties在后期命令行编译时使用到,所以需要根据实际情况进行修改。初始内容如下:

#Fri Jul 31 20:40:49 CST 2015

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

但是,我在第一次命令行编译时出现网络连接错误。大致的意思是,连接不到上面一行指定的网址,这种原因估计一般程序员都知道。于是,根据网络上的提示,我想也把文件gradle-2.4-all.zip下载到本地,并修改上面的distributionUrl参数。

文件gradle-2.4-all.zip下载倒不是难事,大家可以参考本文后面的下载网址。但是,修改文件倒是出现麻烦了。修改后内容如下:

#Fri Jul 31 20:40:49 CST 2015

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

#distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

distributionUrl==file\:/Users/zxzpc/Downloads/gradle-2.4-all.zip

但是,接下来,再次在命令行运行命令cocos compile -p android --android-studio时,还是出现错误,如下所示:

——————————————————————————————

编译模式:debug

使用 Android Studio 工程:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio

未指定 Android 目标平台版本,自动查找一个可用版本...

正在执行:'/Users/zxzpc/Library/Android/sdk/tools/android update project -tandroid-10 -p /Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app'

 

Updated project.properties

Updated local.properties

Updated file/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app/proguard-project.txt

正在执行 ndk-build...

NDK 编译模式:debug

NDK_TOOLCHAIN_VERSION: 4.9

正在执行:'/Users/zxzpc/Downloads/android-ndk-r10e/ndk-build -C/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app -j4NDK_MODULE_PATH=/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/../cocos2d:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/../cocos2d/cocos:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/../cocos2d/externalNDK_TOOLCHAIN_VERSION=4.9 NDK_DEBUG=1'

 

make: Entering directory`/Users/zxzpc/Documents/MyHelloWorld/proj.android-

 

。。。。。。。。。。(省略)

 

[armeabi] Install        : libcocos2dcpp.so =>libs/armeabi/libcocos2dcpp.so

make: Leaving directory`/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app'

正在生成 apk 文件...

正在执行:'"/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/gradlew"--parallel --info assembleDebug'

 

Exception in thread "main"java.lang.RuntimeException: Could not load wrapper properties from'/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/gradle/wrapper/gradle-wrapper.properties'.

       atorg.gradle.wrapper.WrapperExecutor.<init>(WrapperExecutor.java:65)

       atorg.gradle.wrapper.WrapperExecutor.forWrapperPropertiesFile(WrapperExecutor.java:49)

       atorg.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:47)

Caused by: java.net.URISyntaxException: Illegalcharacter in scheme name at index 0:=file:/Users/zxzpc/Downloads/gradle-2.4/gradle-2.4-all.zip

       atjava.net.URI$Parser.fail(URI.java:2829)

       atjava.net.URI$Parser.checkChars(URI.java:3002)

       atjava.net.URI$Parser.checkChar(URI.java:3012)

       atjava.net.URI$Parser.parse(URI.java:3028)

       atjava.net.URI.<init>(URI.java:595)

       atorg.gradle.wrapper.WrapperExecutor.readDistroUrl(WrapperExecutor.java:82)

       atorg.gradle.wrapper.WrapperExecutor.prepareDistributionUri(WrapperExecutor.java:71)

       atorg.gradle.wrapper.WrapperExecutor.<init>(WrapperExecutor.java:59)

       ...2 more

执行命令出错,返回值:1

——————————————————————————————

问题显然出在『Illegal character in schemename at index 0』这一句。

就是这个问题上,我纠结了不少时间,尽管这种错误提示看起来并不复杂。因为实在没有多少这方面的经验,所以问题停留在:在.zip文件内容出现问题,还是上面引用本机文件格式出现问题?

再次修改文件与命令行下成功编译

经过不断尝试与借鉴网络查询结果,最终我还是把上面文件内容还原到最初状态,如下所示:

#Fri Jul 31 20:40:49 CST 2015

distributionBase=GRADLE_USER_HOME

distributionPath=wrapper/dists

zipStoreBase=GRADLE_USER_HOME

zipStorePath=wrapper/dists

distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

 

 

再次启动MAC终端,CD到示例工程HELLOWORLD目录下,然后执行如下命令:

cocos compile -p android --android-studio

显示及输出内容如下:

————————————————————————————————-

编译模式:debug

使用 Android Studio 工程:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio

未指定 Android 目标平台版本,自动查找一个可用版本...

正在执行:'/Users/zxzpc/Library/Android/sdk/tools/android update project -tandroid-10 -p /Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app'

 

Updated project.properties

Updated local.properties

Updated file/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app/proguard-project.txt

正在执行 ndk-build...

NDK 编译模式:debug

NDK_TOOLCHAIN_VERSION: 4.9

正在执行:'/Users/zxzpc/Downloads/android-ndk-r10e/ndk-build -C/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app -j4NDK_MODULE_PATH=/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/../cocos2d:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/../cocos2d/cocos:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/../cocos2d/externalNDK_TOOLCHAIN_VERSION=4.9 NDK_DEBUG=1'

 

make: Entering directory`/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app'

/Users/zxzpc/Downloads/android-ndk-r10e/build/core/build-binary.mk:466:warning: overriding commands for target`obj/local/armeabi/objs-debug/bullet_static/BulletMultiThreaded/SpuLibspe2Support.o'

/Users/zxzpc/Downloads/android-ndk-r10e/build/core/build-binary.mk:466:warning: ignoring old commands for target`obj/local/armeabi/objs-debug/bullet_static/BulletMultiThreaded/SpuLibspe2Support.o'

[armeabi] StaticLibrary  : libcocos2d.a

[armeabi] StaticLibrary  : libcocostudio.a

[armeabi] StaticLibrary  : libcocosbuilder.a

[armeabi] StaticLibrary  : libcocos3d.a

[armeabi] StaticLibrary  : libspine.a

[armeabi] StaticLibrary  : libui.a

[armeabi] StaticLibrary  : libcocosdenshion.a

[armeabi] StaticLibrary  : flatbuffers.a

[armeabi] StaticLibrary  : libextension.a

[armeabi] StaticLibrary  : libaudioengine.a

[armeabi] StaticLibrary  : libbox2d.a

[armeabi] StaticLibrary  : libnetwork.a

[armeabi] StaticLibrary  : libcocos2dxinternal.a

[armeabi] StaticLibrary  : librecast.a

[armeabi] StaticLibrary  : libbullet.a

[armeabi] StaticLibrary  : libcocos2dandroid.a

[armeabi] StaticLibrary  : libcpufeatures.a

[armeabi] Gdbserver      : [arm-linux-androideabi-4.9]libs/armeabi/gdbserver

[armeabi] Gdbsetup       : libs/armeabi/gdb.setup

[armeabi] SharedLibrary  : libcocos2dcpp.so

[armeabi] Install        : libcocos2dcpp.so =>libs/armeabi/libcocos2dcpp.so

make: Leaving directory`/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app'

正在生成 apk 文件...

正在执行:'"/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/gradlew"--parallel --info assembleDebug'

 

Downloadinghttps://services.gradle.org/distributions/gradle-2.4-all.zip

.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................

Unzipping/Users/zxzpc/.gradle/wrapper/dists/gradle-2.4-all/3i2gobhdl0fm2tosnn15g540i0/gradle-2.4-all.zipto /Users/zxzpc/.gradle/wrapper/dists/gradle-2.4-all/3i2gobhdl0fm2tosnn15g540i0

Set executable permissions for:/Users/zxzpc/.gradle/wrapper/dists/gradle-2.4-all/3i2gobhdl0fm2tosnn15g540i0/gradle-2.4/bin/gradle

Starting Build

Settings evaluated using settings file'/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/settings.gradle'.

Projects loaded. Root project using buildfile '/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/build.gradle'.

Included projects: [root project'proj.android-studio', project ':MyHelloWorld', project ':libcocos2dx']

Parallel execution is an incubatingfeature.

Evaluating root project'proj.android-studio' using build file'/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/build.gradle'.

Downloadhttps://jcenter.bintray.com/com/android/tools/build/gradle/1.3.0/gradle-1.3.0.pom

Downloadhttps://jcenter.bintray.com/com/android/tools/build/gradle-core/1.3.0/gradle-core-1.3.0.pom

Downloadhttps://jcenter.bintray.com/com/android/tools/build/builder/1.3.0/builder-1.3.0.pom

Downloadhttps://jcenter.bintray.com/com/android/tools/lint/lint/24.3.0/lint-24.3.0.pom

//……………………………………..(a lot more, omitted)

Downloadhttps://jcenter.bintray.com/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar

Downloadhttps://jcenter.bintray.com/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar

Downloadhttps://jcenter.bintray.com/commons-codec/commons-codec/1.4/commons-codec-1.4.jar

Downloadhttps://jcenter.bintray.com/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar

Evaluating project ':MyHelloWorld' usingbuild file'/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app/build.gradle'.

Creating configuration compile.

Creating configuration apk.

Creating configuration provided.

Creating configuration wearApp.

Creating configuration androidTestCompile.

Creating configuration androidTestApk.

Creating configuration androidTestProvided.

Creating configuration androidTestWearApp.

Creating configuration testCompile.

Creating configuration testApk.

Creating configuration testProvided.

Creating configuration testWearApp.

Creating configuration debugCompile.

Creating configuration debugApk.

Creating configuration debugProvided.

Creating configuration debugWearApp.

Creating configuration testDebugCompile.

Creating configuration testDebugApk.

Creating configuration testDebugProvided.

Creating configuration testDebugWearApp.

Creating configuration releaseCompile.

Creating configuration releaseApk.

Creating configuration releaseProvided.

Creating configuration releaseWearApp.

Creating configuration testReleaseCompile.

Creating configuration testReleaseApk.

Creating configuration testReleaseProvided.

Creating configuration testReleaseWearApp.

Evaluating project ':libcocos2dx' usingbuild file '/Users/zxzpc/Documents/MyHelloWorld/cocos2d/cocos/platform/android/libcocos2dx/build.gradle'.

Creating configuration compile.

Creating configuration publish.

//……………………………………..(a lot more, omitted)

Creating configuration testReleaseWearApp.

All projects evaluated.

Selected primary task 'assembleDebug' fromproject :

Tasks to be executed: [task':MyHelloWorld:preBuild', task ':MyHelloWorld:preDebugBuild', task':MyHelloWorld:checkDebugManifest', task ':MyHelloWorld:preReleaseBuild', task':libcocos2dx:compileLint', task ':libcocos2dx:copyReleaseLint', task':libcocos2dx:mergeReleaseProguardFiles', task ':libcocos2dx:preBuild', task':libcocos2dx:preReleaseBuild', task ':libcocos2dx:checkReleaseManifest', task':libcocos2dx:prepareReleaseDependencies', task':libcocos2dx:compileReleaseAidl', //……………………………………..(a lot more, omitted)

:MyHelloWorld:zipalignDebug

Executing task':MyHelloWorld:zipalignDebug' (up-to-date check took 0.063 secs) due to:

 Input file/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app/build/outputs/apk/MyHelloWorld-debug-unaligned.apkhas changed.

Starting process 'command'/Users/zxzpc/Library/Android/sdk/build-tools/21.1.2/zipalign''. Working directory:/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app Command:/Users/zxzpc/Library/Android/sdk/build-tools/21.1.2/zipalign -f 4/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app/build/outputs/apk/MyHelloWorld-debug-unaligned.apk/Users/zxzpc/Documents/MyHelloWorld/proj.android-studio/app/build/outputs/apk/MyHelloWorld-debug.apk

Successfully started process 'command'/Users/zxzpc/Library/Android/sdk/build-tools/21.1.2/zipalign''

:MyHelloWorld:zipalignDebug (Thread[Taskworker,5,main]) completed. Took 0.16 secs.

:MyHelloWorld:assembleDebug (Thread[Taskworker,5,main]) started.

:MyHelloWorld:assembleDebug

Skipping task ':MyHelloWorld:assembleDebug'as it has no actions.

:MyHelloWorld:assembleDebug (Thread[Taskworker,5,main]) completed. Took 0.0 secs.

 

BUILD SUCCESSFUL

 

Total time: 19 mins 12.95 secs

Stopped 0 compiler daemon(s).

 

This build could be faster, please considerusing the Gradle Daemon:http://gradle.org/docs/2.4/userguide/gradle_daemon.html

正在移动 apk 文件 /Users/zxzpc/Documents/MyHelloWorld/bin/debug/android

编译成功。

————————————————————————————————


显然,下载gradle-2.4-all.zip和相应解压花费了不少时间,但总算有了一个初步的惊喜。而且,如读者所想,使用本地的文件是节约时间的最佳办法。无奈,拙人我现在还没有找到。以后找到,一定记录下来。


剩下的好办了,把生成的APK文件设法复制到我的三星I9100机器上(还是Android 2.3.4版本)。安装运行即可,截图如下:

 

wKiom1bnVD7CnBwmAABLnZYkOgs774.png

注意:图中中文显示不正常,是因为我没有作相应处理而已。

小结

Android Studio 1.4编译与构建速度比Eclipse快几十倍,模拟器启动速度也快得多。尽管我的编译工程不是在IDE环境下实现的。

命令行编译还是更迅速,值得推荐。

本次记录的是MAC环境命令行下的编译生成APK文件的过程。走了不少曲折的路,记录下来供自己备忘,也供同志们参考。

引用

 

 















本文转自朱先忠老师51CTO博客,原文链接: http://blog.51cto.com/zhuxianzhong/1751123,如需转载请自行联系原作者



相关文章
|
3天前
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
21天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
22天前
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的实践指南
【4月更文挑战第2天】随着移动应用开发的不断进步,开发者们寻求更流畅、高效的用户体验。在Android平台上,Kotlin语言凭借其简洁性和功能性赢得了开发社区的广泛支持。特别是Kotlin协程,作为一种轻量级的并发处理方案,使得异步编程变得更加简单和直观。本文将深入探讨Kotlin协程的核心概念、使用场景以及如何将其应用于Android开发中,以提高应用性能和响应能力。通过实际案例分析,我们将展示协程如何简化复杂任务,优化资源管理,并为最终用户提供更加流畅的体验。
|
25天前
|
缓存 监控 Java
构建高效Android应用:从优化用户体验到提升性能
在竞争激烈的移动应用市场中,为用户提供流畅和高效的体验是至关重要的。本文深入探讨了如何通过多种技术手段来优化Android应用的性能,包括UI响应性、内存管理和多线程处理。同时,我们还将讨论如何利用最新的Android框架和工具来诊断和解决性能瓶颈。通过实例分析和最佳实践,读者将能够理解并实施必要的优化策略,以确保他们的应用在保持响应迅速的同时,还能够有效地利用系统资源。
|
1月前
|
编解码 算法 Java
构建高效的Android应用:内存优化策略详解
随着智能手机在日常生活和工作中的普及,用户对移动应用的性能要求越来越高。特别是对于Android开发者来说,理解并实践内存优化是提升应用程序性能的关键步骤。本文将深入探讨针对Android平台的内存管理机制,并提供一系列实用的内存优化技巧,以帮助开发者减少内存消耗,避免常见的内存泄漏问题,并确保应用的流畅运行。
|
23天前
|
Java Android开发 开发者
构建高效Android应用:Kotlin协程的实践与优化
在响应式编程范式日益盛行的今天,Kotlin协程作为一种轻量级的线程管理解决方案,为Android开发带来了性能和效率的双重提升。本文旨在探讨Kotlin协程的核心概念、实践方法及其在Android应用中的优化策略,帮助开发者构建更加流畅和高效的应用程序。通过深入分析协程的原理与应用场景,结合实际案例,本文将指导读者如何优雅地解决异步任务处理,避免阻塞UI线程,从而优化用户体验。
|
28天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
17 4
|
1天前
|
Android开发
Android构建系统:Android.mk(2)函数详解
Android构建系统:Android.mk(2)函数详解
10 1
|
2天前
|
Android开发
Android Mediatek NVRAM 加载 MAC 地址并禁用 MAC 地址更新
Android Mediatek NVRAM 加载 MAC 地址并禁用 MAC 地址更新
6 0
|
7天前
|
缓存 移动开发 Android开发
构建高效Android应用:从优化用户体验到提升性能表现
【4月更文挑战第18天】 在移动开发的世界中,打造一个既快速又流畅的Android应用并非易事。本文深入探讨了如何通过一系列创新的技术策略来提升应用性能和用户体验。我们将从用户界面(UI)设计的简约性原则出发,探索响应式布局和Material Design的实践,再深入剖析后台任务处理、内存管理和电池寿命优化的技巧。此外,文中还将讨论最新的Android Jetpack组件如何帮助开发者更高效地构建高质量的应用。此内容不仅适合经验丰富的开发者深化理解,也适合初学者构建起对Android高效开发的基础认识。
5 0