OLLVM-9.0.1 icon indicating copy to clipboard operation
OLLVM-9.0.1 copied to clipboard

M1是不是不能用AndroidStudio进行NDK开发

Open BRYNHILDRINTHEDARKNESS opened this issue 2 years ago • 39 comments

按照你的教程操作完了之后出现错误 显示The C compile

BRYNHILDRINTHEDARKNESS avatar Nov 29 '21 02:11 BRYNHILDRINTHEDARKNESS

这个肯定是可以的,手上没有M1我自己也没实践过上面的说明都是根据理论和网络上的一些资料凑出来的,仅能提供一些思路(甚至会误导),不保证能通过(我本机是成功的),报错只能多研究研究,这玩意没有基础不好上手,我也不是很懂 只能查资料。

o2e avatar Nov 30 '21 16:11 o2e

大佬 你的mac是不是intel的? M1我解决了 需要改ndk-build 然后就可以编译armv7的so 但是体积会很大

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 02:12 BRYNHILDRINTHEDARKNESS

是intel的,体积大是正常的,这与你写的混淆参数有关,你可以修改一下参数,例如 bcf_loop=3 改成 bcf_loop=1bcf_prob=40改成 bcf_prob=30。这些值越大代表混淆程度越高(代码复杂性提高 生成的虚假代码越多 同时代码性能下降)。你可以根据代码的重要性来调整参数,或者你可以把非常需要保护的代码抽取到一个单独so进行高强度混淆(注意 代码量越少 被分析成功的概率越高 可适当插入一些其他的功能一起打包混淆视听) 。

o2e avatar Dec 01 '21 02:12 o2e

大佬方不方便提供联系方式?方便后面交流

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 02:12 BRYNHILDRINTHEDARKNESS

不太方便,有问题可以在这里继续issues,如果刚好了解的话一般会回复

o2e avatar Dec 01 '21 02:12 o2e

好的 关于你说的抽取到一个单独的so进行高强度加密 是指生成so之后在外部进行加密?还是说怎么样

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 03:12 BRYNHILDRINTHEDARKNESS

另外体积大就算没混淆生成的so也是intel平台的十几倍

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 03:12 BRYNHILDRINTHEDARKNESS

好的 关于你说的抽取到一个单独的so进行高强度加密 是指生成so之后在外部进行加密?还是说怎么样

是抽取出来一个单独做一个lib库子模块,为它单独设置更高的混淆参数,一个app里面不是有多个so文件嘛 相当于独立出来编译

没混淆还是大那么多就是有问题了,我是配置cmake编译的 就和说明一样 没有发现异常,ndk-build太难用了实在用不明白 或许你可以试试cmake 如果你的项目都是ndk-build不好切换就算了 只能自己加油了💪🏻

o2e avatar Dec 01 '21 03:12 o2e

我就是按照你的说明 用cmake的方式弄的 但是还是体积很大

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 04:12 BRYNHILDRINTHEDARKNESS

可能跟架构有关系 intel和M1 PRO

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 04:12 BRYNHILDRINTHEDARKNESS

大佬你用的mac是哪个处理器的

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 06:12 BRYNHILDRINTHEDARKNESS

MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) 2.3 GHz 四核Intel Core i7 应该和cpu无关吧 我这里测试 混淆会增大 1-3倍左右

o2e avatar Dec 01 '21 06:12 o2e

有关系的,我在M1里面用androidstudio开发ndk直接跑失败,用intel的相同的操作就可以跑的通,而且我在m1的ndk里面增加了一个指令就可以跑了 可能是rosetta2转译的原因

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 07:12 BRYNHILDRINTHEDARKNESS

这个配置编译速度怎么样?另外是不是散热不是很好

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 07:12 BRYNHILDRINTHEDARKNESS

mac有一个通病 intel平台的除了能跑AS里面带的安卓模拟器,其余的第三方比如说夜神、雷电之类的模拟器根本不能用

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 07:12 BRYNHILDRINTHEDARKNESS

或者大佬能不能指导指导我你是如何进行编译的,可能我的操作有什么地方不对

BRYNHILDRINTHEDARKNESS avatar Dec 01 '21 08:12 BRYNHILDRINTHEDARKNESS

是散热不行 我就是文档那样操作的

o2e avatar Dec 02 '21 06:12 o2e

要不你整个macOS的 Intel虚拟机跑下试试?

o2e avatar Dec 02 '21 06:12 o2e

m1只能跑arm版本的windows

BRYNHILDRINTHEDARKNESS avatar Dec 02 '21 06:12 BRYNHILDRINTHEDARKNESS

我是说你可以找个台式机跑macOS虚拟机 这样就是Intel的环境了

o2e avatar Dec 02 '21 07:12 o2e

这个试过了 可以 就是M1不行

BRYNHILDRINTHEDARKNESS avatar Dec 02 '21 07:12 BRYNHILDRINTHEDARKNESS

大佬 生成的时候出现这种问题是什么原因 error

BRYNHILDRINTHEDARKNESS avatar Dec 03 '21 12:12 BRYNHILDRINTHEDARKNESS

大佬cmake里面-- strip-all这个命令是不是用不了 用这个命令就出现found not command

BRYNHILDRINTHEDARKNESS avatar Dec 05 '21 13:12 BRYNHILDRINTHEDARKNESS

你要strip什么 编译输出的so 还是 静态lib库

o2e avatar Dec 05 '21 14:12 o2e

输出so

BRYNHILDRINTHEDARKNESS avatar Dec 05 '21 14:12 BRYNHILDRINTHEDARKNESS

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden")

o2e avatar Dec 06 '21 02:12 o2e

buildTypes { release {

        ndk {
            debugSymbolLevel = "FULL"
        }  }

o2e avatar Dec 06 '21 02:12 o2e

大佬 mac是不是不能用strip这个命令 是不是需要用debugSymbolLevel = "FULL"代替

BRYNHILDRINTHEDARKNESS avatar Dec 06 '21 02:12 BRYNHILDRINTHEDARKNESS

可以用 但好像不是那样用的 xxxabi-linux-android-strip 有这么个工具在ndk里面 然后要单独拿这个东西去做 strip 你就直接用debugSymbolLevel就行了 AGP自动处理的

o2e avatar Dec 06 '21 02:12 o2e

好像也可 加个 -s 什么的在编译命令里面 记不清

o2e avatar Dec 06 '21 02:12 o2e