Android Studio如何得知JNI使用的是哪个ABI或者是toolchain呢

彩阳 2018-03-28 10:06:48
新手刚用Android Studio,建立了一个包含C++代码的小项目,我想了解一下有没有设置可以获知当前Gradle和cmake编译的C++代码使用的是什么API或者使用的是armabi-v7a还是x86的呢?先谢谢大家了!
...全文
671 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
键盘舞者113 2018-03-29
  • 打赏
  • 举报
回复
就是获取当前手机的ARM处理器类型
    /** 
     *  
     * [获取cpu类型和架构] 
     *  
     * @return  
     * 三个参数类型的数组,第一个参数标识是不是ARM架构,第二个参数标识是V6还是V7架构,第三个参数标识是不是neon指令集 
     */  
    public static Object[] getCpuArchitecture() {  
        if ((Integer) mArmArchitecture[1] != -1) {  
            return mArmArchitecture;  
        }  
        try {  
            InputStream is = new FileInputStream("/proc/cpuinfo");  
            InputStreamReader ir = new InputStreamReader(is);  
            BufferedReader br = new BufferedReader(ir);  
            try {  
                String nameProcessor = "Processor";  
                String nameFeatures = "Features";  
                String nameModel = "model name";  
                String nameCpuFamily = "cpu family";  
                while (true) {  
                    String line = br.readLine();  
                    String[] pair = null;  
                    if (line == null) {  
                        break;  
                    }  
                    pair = line.split(":");  
                    if (pair.length != 2)  
                        continue;  
                    String key = pair[0].trim();  
                    String val = pair[1].trim();  
                    if (key.compareTo(nameProcessor) == 0) {  
                        String n = "";  
                        for (int i = val.indexOf("ARMv") + 4; i < val.length(); i++) {  
                            String temp = val.charAt(i) + "";  
                            if (temp.matches("\\d")) {  
                                n += temp;  
                            } else {  
                                break;  
                            }  
                        }  
                        mArmArchitecture[0] = "ARM";  
                        mArmArchitecture[1] = Integer.parseInt(n);  
                        continue;  
                    }  
      
                    if (key.compareToIgnoreCase(nameFeatures) == 0) {  
                        if (val.contains("neon")) {  
                            mArmArchitecture[2] = "neon";  
                        }  
                        continue;  
                    }  
      
                    if (key.compareToIgnoreCase(nameModel) == 0) {  
                        if (val.contains("Intel")) {  
                            mArmArchitecture[0] = "INTEL";  
                            mArmArchitecture[2] = "atom";  
                        }  
                        continue;  
                    }  
      
                    if (key.compareToIgnoreCase(nameCpuFamily) == 0) {  
                        mArmArchitecture[1] = Integer.parseInt(val);  
                        continue;  
                    }  
                }  
            } finally {  
                br.close();  
                ir.close();  
                is.close();  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
      
        return mArmArchitecture;  
    }  

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧