笔者有幸从朋友那边接手的项目。在此做个纪。
eclipse android项目wuxia_baidu
是app,其他都是library,首先让我们导出成gradle
一 导出篇
1:Export
Export2:Generate Gradle build files(如果你没有这个选项可以去这里下载ADT,下最新的就好。)
Generate Gradle build files3:Next
Next4:Select All
Select All5:Force overriding of existing files
image.png6:点击上图的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版本
我改的是我现在用的这个:
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
这时候发现报错了。。
点击
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
视图中看到它了:
最后:附上我成功编译的输出:
成功编译
APK
以及不同打包方式的apk内容:
左边eclipse打包,右边android studio
最后发现,新打包的APK无法运行。。。。。。
估摸着应该是第三方SDK的问题。。。。
这。。。。。。
算了,,都写到这里了。。删了不划算,就当是写着当教训。。。
网友评论