很老很老的cocos quick eclipse 转 andro

2018-10-16  本文已影响0人  甚解_4703

笔者有幸从朋友那边接手的项目。在此做个纪。

eclipse android项目

wuxia_baidu是app,其他都是library,首先让我们导出成gradle

一 导出篇

1:Export

Export

2:Generate Gradle build files(如果你没有这个选项可以去这里下载ADT,下最新的就好。)

Generate Gradle build files

3:Next

Next

4:Select All

Select All

5:Force overriding of existing files

image.png

6:点击上图的Finish就导出完成了。

二 导入篇

1:导出的子项目什么的我们先不管,先在项目最高级目录新建一个android_studio

android_studio

2:找一下settings.gradle,一般在项目目录。然后把它以及同一个目录的build.gradle放到上面新建的android_studio目录

3:打开settings.gradle

include ':android_proj:proj.android_common'
include ':lib:cocos2d-x:cocos2dx:platform:android:java'
include ':sdk:talkingdata:proj.android'
include ':android_sdk:libbaidu'
include ':android_proj:proj.android_baidu'

这里刚好是我们的5个子项目。我们需要在每个子项目下面指定子项目的相对路径,不然打不开整个项目。

include ':android_proj:proj.android_common'
project(':android_proj:proj.android_common').projectDir = new File(settingsDir, '../android_proj/proj.android_common')
include ':lib:cocos2d-x:cocos2dx:platform:android:java'
project(':lib:cocos2d-x:cocos2dx:platform:android:java').projectDir = new File(settingsDir, '../lib/cocos2d-x/cocos2dx/platform/android/java')
include ':sdk:talkingdata:proj.android'
project(':sdk:talkingdata:proj.android').projectDir = new File(settingsDir, '../sdk/talkingdata/proj.android')
include ':android_sdk:libbaidu'
project(':android_sdk:libbaidu').projectDir = new File(settingsDir, '../android_sdk/libbaidu')
include ':android_proj:proj.android_baidu'
project(':android_proj:proj.android_baidu').projectDir = new File(settingsDir, '../android_proj/proj.android_baidu')

通过project('xxx').projectDir = new File(settingsDir,'xxx diri')的方式指定。

4:Import我们的android_studio

Import
目录

改一下gradle-wrapper.properties中的Gradle版本

image.png

我改的是我现在用的这个:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

5:等待一会后,我们的项目目录多了很多空目录:

空目录
这是由于我们第三步修改的settings.gradle,指定的项目名称用了很多:
现在把它修改一下
include ':proj.android_common'
project(':proj.android_common').projectDir = new File(settingsDir, '../android_proj/proj.android_common')
include ':libcocos2d-x'
project(':libcocos2d-x').projectDir = new File(settingsDir, '../lib/cocos2d-x/cocos2dx/platform/android/java')
include ':sdktalkingdata'
project(':sdktalkingdata').projectDir = new File(settingsDir, '../sdk/talkingdata/proj.android')
include ':android_libbaidu'
project(':android_libbaidu').projectDir = new File(settingsDir, '../android_sdk/libbaidu')
include ':proj.android_baidu'
project(':proj.android_baidu').projectDir = new File(settingsDir, '../android_proj/proj.android_baidu')

完成修改后点击下图的TryAgain


TryAgain

或者点击侧边栏的Gradle


image.png

这时候发现报错了。。

image.png
点击Open File
错误原因是因为我们改了项目名称,依赖这个项目的项目找不到了,就报错了,我们只要把这里的项目名称
原依赖名字
改成上面指定的名称就好,我的是:libcocos2d-x:
改依赖名字

6:处理instrumentTest的错误

instrumentTest 错误
找到instrumentTest这一行,并删除。
顺带把下面这两行也删了:
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')

依次类推处理所有的instrumentTest错误。

7:刷新

8:处理错误

1.刷新错误(Gradle刷新报的错误)

只要点击里面的下划线标识 就能解决了。例如:

点击下划线快速解决

还有就是compile要废弃了,最好替换成implementation

2.Make 错误

一些严格的错误,自己改改哈。


image.png

1.我遇到了xxx.png.png 需要改成xxx.png。
2.Duplicate resources 资源id重复,需要删掉一个。

3. 资源错误

还有些错误可能太多了不能显示,我们需要借助下面的方法(哪个项目报错,就去哪个项目的build):


空intent-filter错误


空intent-filter错误

如果intent-filter里面是空的,则必须删除

4.找不到符号,不存在程序包

找不到符号错误g
这个是由于eclipse是允许libs放在库中的,而android studio要求.jar必须放在引用它的项目中。
所以去所有项目的libs目录找一下我们的.jar包,.jar可以通过压缩打开。
以压缩包的方式打开.jar
查看里面的包结构:
压缩包里面的jar
发现刚好有我们需要的com.tendcloud.tenddata.
把它移动(是移动不是复制哈)到我们需要它的项目的libs目录中:
移动过去
以此类推所有这样的项目。

9:移动c++动态库(*.so)

没有加载*.so
默认动态库在libs中,我们的android studio不会去加载到项目中。
我们要把他移动到src目录中并创建一个jniLibs目录,把所有需要的动态库放到里面。
调整动态库位置

调整完成就能在Android视图中看到它了:

成功加载c++动态库

最后:附上我成功编译的输出:


成功编译
APK

以及不同打包方式的apk内容:


左边eclipse打包,右边android studio

最后发现,新打包的APK无法运行。。。。。。

估摸着应该是第三方SDK的问题。。。。
这。。。。。。

算了,,都写到这里了。。删了不划算,就当是写着当教训。。。

千万别乱升级项目!!!

千万别乱升级项目!!!

千万别乱升级项目!!!

上一篇 下一篇

猜你喜欢

热点阅读