String PlatformAndroid::GetAndroidCommand() const { ToolPrefs* prefs = GetSubsystem<ToolEnvironment>()->GetToolPrefs(); String androidCommand = GetNativePath(prefs->GetAndroidSDKPath()); if (!androidCommand.Length()) return String::EMPTY; #ifdef ATOMIC_PLATFORM_OSX //Vector<String> args = String("list targets").Split(' '); androidCommand += "/tools/android"; #endif #ifdef ATOMIC_PLATFORM_WINDOWS // android is a batch file on windows, so have to run with cmd /c androidCommand += "\\tools\\android.bat"; //androidCommand = "cmd"; #endif #ifdef ATOMIC_PLATFORM_LINUX androidCommand += "/tools/android"; #endif return androidCommand; }
bool AndroidProjectGenerator::GenerateLocalProperties() { ToolEnvironment* tenv = GetSubsystem<ToolEnvironment>(); ToolPrefs* prefs = tenv->GetToolPrefs(); String sdkPath = prefs->GetAndroidSDKPath(); if (!sdkPath.Length()) { errorText_ = "Invalid Android SDK Path"; return false; } String props; props.AppendWithFormat("sdk.dir=%s", sdkPath.CString()); File file(context_, buildPath_ + "/local.properties", FILE_WRITE); if (!file.IsOpen()) return false; file.Write(props.CString(), props.Length()); return true; }
bool AndroidProjectGenerator::GenerateLocalProperties( ) { ToolEnvironment* tenv = GetSubsystem<ToolEnvironment>(); ToolPrefs* prefs = tenv->GetToolPrefs(); String sdkPath = prefs->GetAndroidSDKPath(); if (!sdkPath.Length()) { errorText_ = "Invalid Android SDK Path, select the path in Build Settings."; return false; } String props; props.AppendWithFormat("sdk.dir=%s", sdkPath.CString()); File file(context_, buildPath_ + "/local.properties", FILE_WRITE); if (!file.IsOpen()) { errorText_ = "Project generator unable to open file " + buildPath_ + "/local.properties "; return false; } file.Write(props.CString(), props.Length()); if ( prefs->GetReleaseCheck() > 2 ) // if release index is set ... { FileSystem* fileSystem = GetSubsystem<FileSystem>(); String Reldir = prefs->GetReleasePath(); if (!fileSystem->DirExists(Reldir)) { errorText_ = "Invalid Release Path, select the path in Build Settings."; return false; } String antname = Reldir + "/ant.properties"; if ( !fileSystem->FileExists ( antname) ) { errorText_ = "The file ant.properties not found in " + Reldir + ", unable to generate Release APK."; return false; } if ( !buildBase_->BuildCopyFile ( antname, buildPath_ + "/ant.properties" )) return false; } return true; }
String PlatformAndroid::GetADBCommand() const { ToolPrefs* prefs = GetSubsystem<ToolEnvironment>()->GetToolPrefs(); String adbCommand = prefs->GetAndroidSDKPath(); #ifdef ATOMIC_PLATFORM_OSX adbCommand += "/platform-tools/adb"; #endif #ifdef ATOMIC_PLATFORM_WINDOWS adbCommand += "/platform-tools/adb.exe"; #endif #ifdef ATOMIC_PLATFORM_LINUX adbCommand += "/platform-tools/adb"; #endif return adbCommand; }
void PlatformAndroid::RefreshAndroidTargets() { if (refreshAndroidTargetsProcess_.NotNull()) return; ToolPrefs* prefs = GetSubsystem<ToolEnvironment>()->GetToolPrefs(); FileSystem* fileSystem = GetSubsystem<FileSystem>(); String androidSDKPath = prefs->GetAndroidSDKPath(); if (!fileSystem->DirExists(androidSDKPath)) { ATOMIC_LOGERRORF("The Android SDK path %s does not exist", androidSDKPath.CString()); return; } SubprocessSystem* subs = GetSubsystem<SubprocessSystem>(); String androidCommand = GetAndroidCommand(); Vector<String> args; PrependAndroidCommandArgs(args); args.Push("list"); args.Push("targets"); targetOutput_.Clear(); refreshAndroidTargetsProcess_ = subs->Launch(androidCommand, args); if (refreshAndroidTargetsProcess_.NotNull()) { SubscribeToEvent(refreshAndroidTargetsProcess_, E_SUBPROCESSCOMPLETE, ATOMIC_HANDLER(PlatformAndroid, HandleRefreshAndroidTargetsEvent)); SubscribeToEvent(refreshAndroidTargetsProcess_, E_SUBPROCESSOUTPUT, ATOMIC_HANDLER(PlatformAndroid, HandleRefreshAndroidTargetsEvent)); } }