cocos2dx 2.x.x從eclipse轉移到Android Studio遇到的問題
可能我用不太習慣Android Studio才會遇到這么多問題,讓老手們見笑了。
cocos2dx的最新版本,都是有Android Studio工程的,而舊版的沒有。 為了方便,我用新的cocos版本創建了一個Android Studio工程,然后新建一個普通帶界面的Android原生activity,然后設定這個activity為啟動activity,發現打出來的包正常地運行了新界面。然后我去掉了cocos庫的引用和cocos的相關的界面的java文件,再運行一下試試,發現一切正常。
然后就是把原工程庫和java文件加進來,這里出現第一個問題,找不到.R文件,其實就是那些java文件沒被編譯。網上有一種說法是點擊bulid按鈕下的make moudle “xxxxx”就可以,不過我並不屬於這種情況。原來我新建工程的時候用的包名是隨便填的,而Android Studio只編譯module對應包名目錄下的java文件。因此,我打開AndroidManifest,改成我真正想要的包名,然后把java文件都轉到那里。
然后,我把引用庫的build版本號和complie版本號統一了一下。
我轉移到Android Studio的主要目的是接新的SDK,我接的是一個繁體版本的SDK,發海外,這SDK整合了很多雜七雜八的SDK在里面,很頭疼。一整合進來就報錯,報什么非法的語法操作什么的。網上的說法是,整合第三方庫就很可能會報這個錯,要做一下兼容處理。
manifest加一下xmlns:tools屬性:
<manifest xmlns:tools="http://schemas.android.com/tools">
<uses-sdk tools:overrideLibrary="com.xxx.xxx"/>
打開對應module的build.gradle,defaultConfig {}中加入 multiDexEnabled true ,dependencies {}中加入compile 'com.android.support:multidex:1.0.0'
這樣一來,編譯通過了,可是會有很多報錯(其實是warning),如果不想看到這些紅色的字,可以在proguard-rules.pro文件加入
-keepattributes InnerClasses,EnclosingMethod
-dontoptimize
當我想打包時,報出如下錯誤:android studio java.lang.OutOfMemoryError: Java heap space
這不是內存不夠嗎,我知道要上Google play的話硬性條件是主包不能大於100M,難道現在的默認設置就是這樣?我現在的包是200M以上,看來要配置一下了。
網上的說法是在build.gradle加入
dexOptions {
incremental true
javaMaxHeapSize "4g"
}
我試了一下不行,后來發現android studio有這么一個提示
Warning:The `android.dexOptions.incremental` property is deprecated and it has no effect on the build process.
原來網上說的這個方法已經過時了,不過還有另一種方法:
在gradle.properties文件末尾加入三行字
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx5120m
嗯,ok,打包成功。
還有要注意的一點,新建的Android Studio工程的AndroidManifest里面加入的uses-permission很少,記得從原游戲工程把完整需要用到的uses-permission拷貝過來。