首页
社区
课程
招聘
[分享]解决ndk或者cocos的Eclipse的Android项目导入VS无法安装调试的问题
发表于: 2016-11-9 17:12 4371

[分享]解决ndk或者cocos的Eclipse的Android项目导入VS无法安装调试的问题

2016-11-9 17:12
4371
安装了Java Language Service for Android and Eclipse Android Project Import后VS2015会有个导入Eclipse安卓项目的功能,可是导入了Eclipse的项目后,apk依然无法调试起来,提示
“Error installing the package. The package ABI '' is incompatible with the ABI 'armeabiv7a' of device 'NVIDIA SHIELD Tablet (armeabiv7a - 0424414601822001a033)'.
Incompatible ABIs.”
或者中文版形式:
“安装包时出错。包 ABI“”与设备“default (armeabiv7a - emulator-5554)”的 ABI“armeabiv7a”不兼容。
Incompatible ABIs.”
网上其他地方目前都无解,Update 4遥遥无期也不知道会不会解决这个问题,经过几天的奋战终于探究清楚这个错误的原因了。
msbuild配置文件的问题。
备份之前的C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Application Type\Android\1.0\Android.Makefile.targets
修改其中的
    <GenerateApkRecipe SoPaths="@(NMakeSoLibs);@(AdditionalLibrary->'%(Fullpath)')"
                       IntermediateDirs="@(ObjDirectories)"
                       Configuration=""
                       Platform=""
                       Abi=""
                       RecipeFiles="@(DirectDependenciesRecipelistFile)"
                       OutputFile="$(_ApkRecipeFile)" />

    <GenerateApkRecipe SoPaths="@(NMakeSoLibs);@(AdditionalLibrary->'%(Fullpath)')"
                       IntermediateDirs="@(ObjDirectories)"
                       Configuration="$(Configuration)"
                       Platform="$(Platform)"
                       Abi="$(TargetArchAbi)"
                       RecipeFiles="@(DirectDependenciesRecipelistFile)"
                       OutputFile="$(_ApkRecipeFile)" />
再次启动调试,发现问题解决了,可以自动安装到手机上了,但是VS默认的ARM配置是armeabi-v7a而非ndk及cocos默认的armeabi,所以这样将导致无法搜索到符号文件信息进而无法有效调试。修改方式为
Application.mk中加一句
APP_ABI := armeabi-v7a armeabi
重新编译将生成armeabi-v7a版本的so库
另外种方式是
修改"C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Application Type\Android\1.0\Platforms\ARM\Platform.Default.props"(修改前请先备份)中的
<TargetArchAbi>armeabi-v7a</TargetArchAbi>为<TargetArchAbi>armeabi</TargetArchAbi>
这种方式就不会造成生成armeabi-v7a版本的so库,这种方式我没测试,理论上应该是可行的,除非VS(或其使用的gdb版本)不支持armeabi版本的so库。

提示:VS的生成命令行中加 -j处理器个数 后可以并行编译,之前是一个一个顺序编译的,加后会更快完成所有编译。

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//