前几日,我使用 Ionic 来生成 Android 平台相关的项目内容。在那之后,我将其导入到 Android Studio 中,当时一切都很顺利,项目是可以正常运行的。而且,我似乎也在这个过程中加入了自己所编写的原生代码。然而,令人费解的是,当我最近再次打开这个项目时,却发现之前的原生代码怎么也找不到了。
没办法,我只好尝试重新加入这些代码。但这一过程简直就是一场噩梦,各种问题接踵而至。不过,经过一番艰苦的努力,最终还是成功完成了 build 操作。在此,我觉得有必要把这个过程记录下来,说不定能给其他遇到类似问题的开发者一些启示。
当把项目导入 Android Studio 后,首先要做的就是修改 AndroidManifest.xml 文件。这里需要特别注意的是,包名一定不能改动。因为我曾经尝试过修改包名,结果哪怕 build 成功了,在运行的时候还是会报找不到 class 的错误。我猜测这可能是由于 config.xml 文件或者其他相关地方存在 io.ionic.starter 这个设置导致的。我得承认,我并非专业的 Android 开发人员,在这方面还有很多知识空白,就像个小白一样。
如果有其他 Activity 的声明不在当前这个包下,那就得写完整,就像这样:
接下来,在 Module:app 的 build.gradle 文件中加入依赖。这里要特别强调的是,要在根节点加入。我之前就是因为把依赖加到了第二个红框的位置,结果导致了一系列问题。在引入 PhotoView 时,我选择了 2.0.0 版本,因为使用最新版本会报错,我推测这应该是和 gradle 的版本有关。
在根节点加入依赖的时候,会有相应的显示在下面的对话框中,如果没有在根节点加入,是不会有这个显示的。而且,这个根节点下的红框代码是我新添加的,目的就是为了引入 PhotoView 组件。
经过上述一系列操作后,在模拟器中运行项目,顺利通过了。本以为一切都已经搞定,没想到新的问题又出现了。突然之间,项目编译无法通过,提示程序包 R 不存在,而且提示需要引入 io.ionic.starter.R。我当时就懵了,难道要每个 Activity 都去修改吗?这显然不是个好办法。
于是,我尝试对项目中的 config.xml 文件进行修改,把 <widget id="com.kecq.myinfo" 这部分内容替换了,同时也替换了 android.json 文件,当然,AndroidManifest.xml 文件也做了相应的修改。但结果却还是不尽人意,报错信息显示 Error: Activity class {io.ionic.starter/com.kecq.myinfo.IonicMainActivity} does not exist。
这可把我难住了,我在整个项目中都搜索不到 io.ionic.starter,那这个到底是从哪里冒出来的呢?就在我百思不得其解的时候,突然灵机一动,我觉得应该在顶层目录使用 ionic 命令行进行一次编译。果不其然,经过一番查找和操作,把 config.xml 的 widget 改了之后,再运行 ionic cordova run android 命令,项目成功运行了。当我回到 Android Studio 中时,发现部分文件被替换了,所以在这里要提醒大家,操作的时候一定要小心谨慎啊!
用 Ionic 来生成 Android 平台的项目问题分析
本文来自投稿,不代表本站立场,如若转载,请注明出处: