mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-08-24 14:22:40 -06:00
IDE now can launch apk on Android Virtual Devices
git-svn-id: svn://ultimatepp.org/upp/trunk@9576 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
parent
ca839d7efd
commit
791de64074
5 changed files with 50 additions and 27 deletions
|
|
@ -101,20 +101,21 @@ Vector<AndroidDevice> AndroidSDK::FindDevices() const
|
|||
|
||||
Vector<String> elements = Split(lines[i], " ");
|
||||
for(int j = 0; j < elements.GetCount(); j++) {
|
||||
if(j == 0) {
|
||||
if(j == 0)
|
||||
device.SetSerial(elements[j]);
|
||||
continue;
|
||||
}
|
||||
|
||||
Vector<String> element = Split(elements[j], ":");
|
||||
if(element.GetCount() == 2) {
|
||||
String tag = element[0];
|
||||
String data = element[1];
|
||||
if(tag == "usb")
|
||||
device.SetUsb(data);
|
||||
else
|
||||
if(tag == "model")
|
||||
device.SetModel(data);
|
||||
else if(j == 1)
|
||||
device.SetState(elements[j]);
|
||||
else {
|
||||
Vector<String> element = Split(elements[j], ":");
|
||||
if(element.GetCount() == 2) {
|
||||
String tag = element[0];
|
||||
String data = element[1];
|
||||
if(tag == "usb")
|
||||
device.SetUsb(data);
|
||||
else
|
||||
if(tag == "model")
|
||||
device.SetModel(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
devices.Add(device);
|
||||
|
|
|
|||
|
|
@ -12,19 +12,22 @@ public:
|
|||
|
||||
public:
|
||||
String GetSerial() const { return serial; }
|
||||
String GetState() const { return state; }
|
||||
String GetUsb() const { return usb; }
|
||||
String GetModel() const { return model; }
|
||||
|
||||
void SetSerial(const String& serial) { this->serial = serial; }
|
||||
void SetState(const String& state) { this->state = state; }
|
||||
void SetUsb(const String& usb) { this->usb = usb; }
|
||||
void SetModel(const String& model) { this->model = model; }
|
||||
|
||||
public:
|
||||
bool IsEmulator() const { return model.IsEmpty(); }
|
||||
bool IsEmulator() const { return !usb.IsEmpty(); }
|
||||
bool IsPhysicalDevice() const { return !IsEmulator(); }
|
||||
|
||||
private:
|
||||
String serial;
|
||||
String state;
|
||||
String usb;
|
||||
String model;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -504,6 +504,12 @@ bool AndroidBuilder::SignApk(const String& target, const String& unsignedApkPath
|
|||
DeleteFile(signedApkPath);
|
||||
String jarsignerCmd;
|
||||
jarsignerCmd << NormalizeExePath(jdk.GetJarsignerPath());
|
||||
|
||||
// Up to Java 6.0 below alogirms was by default
|
||||
// (In Java 7.0 and above we need to manually specific this algorithms)
|
||||
jarsignerCmd << " -sigalg SHA1withRSA";
|
||||
jarsignerCmd << " -digestalg SHA1";
|
||||
|
||||
jarsignerCmd << " -keystore " + keystorePath;
|
||||
jarsignerCmd << " -storepass android";
|
||||
jarsignerCmd << " -keypass android";
|
||||
|
|
@ -547,7 +553,9 @@ bool AndroidBuilder::GenerateDebugKey(const String& keystorePath)
|
|||
keytoolCmd << NormalizeExePath(jdk.GetKeytoolPath());
|
||||
keytoolCmd << " -genkeypair -alias androiddebugkey -keypass android";
|
||||
keytoolCmd << " -keystore " << keystorePath;
|
||||
keytoolCmd << " -storepass android -dname \"CN=Android Debug,O=Android,C=US\" -validity 100000";
|
||||
keytoolCmd << " -storepass android -dname \"CN=Android Debug,O=Android,C=US\"";
|
||||
keytoolCmd << " -keyalg RSA";
|
||||
keytoolCmd << " -validity 100000";
|
||||
//PutConsole(keytoolCmd);
|
||||
if(Execute(keytoolCmd, ss) != 0) {
|
||||
PutConsole(ss.GetResult());
|
||||
|
|
|
|||
|
|
@ -152,7 +152,9 @@ public:
|
|||
String GetSelectedSerial() const;
|
||||
|
||||
private:
|
||||
void LoadPhysicalDevices();
|
||||
void LoadDevices();
|
||||
|
||||
void OnRefresh();
|
||||
|
||||
private:
|
||||
AndroidSDK* sdk;
|
||||
|
|
@ -163,33 +165,41 @@ SelectAndroidDeviceDlg::SelectAndroidDeviceDlg(AndroidSDK* sdk) :
|
|||
{
|
||||
CtrlLayoutOKCancel(*this, "Android device selection");
|
||||
|
||||
devicesArray.AddColumn("Device/Model");
|
||||
devicesArray.AddColumn("Serial");
|
||||
devicesArray.AddColumn("Serial Number");
|
||||
devicesArray.AddColumn("State");
|
||||
|
||||
LoadPhysicalDevices();
|
||||
refresh <<= THISBACK(OnRefresh);
|
||||
|
||||
LoadDevices();
|
||||
}
|
||||
|
||||
String SelectAndroidDeviceDlg::GetSelectedSerial() const
|
||||
{
|
||||
int row = devicesArray.IsCursor() ? devicesArray.GetCursor() : 0;
|
||||
return devicesArray.GetCount() ? devicesArray.Get(row, 1) : "";
|
||||
return devicesArray.GetCount() ? devicesArray.Get(row, 0) : "";
|
||||
}
|
||||
|
||||
void SelectAndroidDeviceDlg::LoadPhysicalDevices()
|
||||
void SelectAndroidDeviceDlg::LoadDevices()
|
||||
{
|
||||
Vector<AndroidDevice> devices = sdk->FindDevices();
|
||||
for(int i = 0; i < devices.GetCount(); i++) {
|
||||
if(devices[i].IsPhysicalDevice()) {
|
||||
devicesArray.Add(devices[i].GetModel(), devices[i].GetSerial());
|
||||
}
|
||||
devicesArray.Add(devices[i].GetSerial(), devices[i].GetState());
|
||||
}
|
||||
|
||||
if(devicesArray.GetCount())
|
||||
devicesArray.Select(0);
|
||||
if(devicesArray.GetCount()) {
|
||||
devicesArray.GoBegin();
|
||||
ok.Enable();
|
||||
}
|
||||
else
|
||||
ok.Disable();
|
||||
}
|
||||
|
||||
void SelectAndroidDeviceDlg::OnRefresh()
|
||||
{
|
||||
devicesArray.Clear();
|
||||
LoadDevices();
|
||||
}
|
||||
|
||||
void Ide::ExecuteApk()
|
||||
{
|
||||
AndroidSDK sdk(GetAndroidSdkPath(), true);
|
||||
|
|
|
|||
|
|
@ -777,9 +777,10 @@ LAYOUT(JumpLayout, 692, 496)
|
|||
END_LAYOUT
|
||||
|
||||
LAYOUT(SelectAndroidDeviceLayout, 432, 228)
|
||||
ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(72, 64).BottomPosZ(4, 24))
|
||||
ITEM(Button, refresh, SetLabel(t_("Refresh")).LeftPosZ(4, 64).BottomPosZ(4, 24))
|
||||
ITEM(Button, cancel, SetLabel(t_("Cancel")).RightPosZ(4, 64).BottomPosZ(4, 24))
|
||||
ITEM(ArrayCtrl, devicesArray, AutoHideSb(true).HSizePosZ(4, 4).TopPosZ(4, 192))
|
||||
ITEM(Button, ok, SetLabel(t_("OK")).RightPosZ(72, 64).BottomPosZ(4, 24))
|
||||
END_LAYOUT
|
||||
|
||||
LAYOUT(RenamePackageLayout, 228, 100)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue