Android M之前/data/misc/wifi/hostapd.conf文件是在

system/netd/server/SoftapController.cpp里面生成的

/* * Arguments: *  argv[2] - wlan interface *  argv[3] - SSID *  argv[4] - Broadcast/Hidden *  argv[5] - Channel *  argv[6] - Security *  argv[7] - Key */int SoftapController::setSoftap(int argc, char *argv[]) {    int hidden = 0;    int channel = AP_CHANNEL_DEFAULT;    if (argc < 5) {        ALOGE("Softap set is missing arguments. Please use:");        ALOGE("softap      ");        return ResponseCode::CommandSyntaxError;    }    if (!strcasecmp(argv[4], "hidden"))        hidden = 1;    if (argc >= 5) {        channel = atoi(argv[5]);        if (channel <= 0)            channel = AP_CHANNEL_DEFAULT;    }    std::string wbuf(StringPrintf("interface=%s\n"            "driver=nl80211\n"            "ctrl_interface=/data/misc/wifi/hostapd\n"            "ssid=%s\n"            "channel=%d\n"            "ieee80211n=1\n"            "hw_mode=%c\n"            "ignore_broadcast_ssid=%d\n"            "wowlan_triggers=any\n",            argv[2], argv[3], channel, (channel <= 14) ? 'g' : 'a', hidden));    std::string fbuf;    if (argc > 7) {        char psk_str[2*SHA256_DIGEST_LENGTH+1];        if (!strcmp(argv[6], "wpa-psk")) {            generatePsk(argv[3], argv[7], psk_str);            fbuf = StringPrintf("%swpa=3\nwpa_pairwise=TKIP CCMP\nwpa_psk=%s\n", wbuf.c_str(), psk_str);        } else if (!strcmp(argv[6], "wpa2-psk")) {            generatePsk(argv[3], argv[7], psk_str);            fbuf = StringPrintf("%swpa=2\nrsn_pairwise=CCMP\nwpa_psk=%s\n", wbuf.c_str(), psk_str);        } else if (!strcmp(argv[6], "open")) {            fbuf = wbuf;        }    } else if (argc > 6) {        if (!strcmp(argv[6], "open")) {            fbuf = wbuf;        }    } else {        fbuf = wbuf;    }    if (!WriteStringToFile(fbuf, HOSTAPD_CONF_FILE, 0660, AID_SYSTEM, AID_WIFI)) {        ALOGE("Cannot write to \"%s\": %s", HOSTAPD_CONF_FILE, strerror(errno));        return ResponseCode::OperationFailed;    }    return ResponseCode::SoftapStatusResult;}

Android O(可能是Android N开始)的已经挪到frameworks/opt/net/wifi/libwifi_system/hostapd_manager.cpp

bool HostapdManager::WriteHostapdConfig(const string& config) {  if (!WriteStringToFile(config, kHostapdConfigFilePath,                         S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,                         AID_WIFI, AID_WIFI)) {    int error = errno;    LOG(ERROR) << "Cannot write hostapd config to \""               << kHostapdConfigFilePath << "\": " << strerror(error);    struct stat st;    int result = stat(kHostapdConfigFilePath, &st);    if (result == 0) {      LOG(ERROR) << "hostapd config file uid: "<< st.st_uid << ", gid: " << st.st_gid                 << ", mode: " << st.st_mode;    } else {      LOG(ERROR) << "Error calling stat() on hostapd config file: " << strerror(errno);    }    return false;  }  return true;}

具体流程可以参考以下文章

(九十二) Android O WiFi热点 开启流程梳理续

更多相关文章

  1. Android基于名称、修改时间、大小实现文件夹排序
  2. NDK调试
  3. Android的日积月累-问题解决
  4. Android(安卓)studio:报错String index out of range: -1
  5. Android系统中调试动态链接库.so文件的步骤
  6. android中保存Bitmap图片到指定文件夹中的方法
  7. Android(安卓)Studio Gradle 重命名输出App或者Library的文件名
  8. Android之getSharedPreferences与getDefaultSharedPreferences的
  9. 完全解决!android studio更新 check for updates失败的问题

随机推荐

  1. 初涉android中的回调机制
  2. Android(安卓)开机图片/文字/动画 修改
  3. Android(安卓)异步加载图片-AsyncTask
  4. Android(安卓)APK系列3-------使用platfo
  5. 【android】使用CursorAdapter注意事项
  6. Android(安卓)碎碎记
  7. Android之简单文件管理器
  8. Android(安卓)7.0 FileProvider 的那些坑
  9. 消除 activity 启动时白屏、黑屏问题
  10. android studio 翻译插件,可以将英文翻译