Перейти к содержанию
Fire Monkey от А до Я
  • 0

Исключить устройства с Intel Atom как не поддерживаемые


Евгений Корепов

Вопрос

Опубликовано

Как исключить устройства с Intel Atom из списка поддерживаемых устройств? Так что бы в Google Play было сообщение  "Application does not support this device". 

Приложения не работают на Intel Atom, но пользователи успешно их устанавливают, естественно запуск не возможен. 80% плохих оценок выставляют как раз пользователи с Intel Atom. Из за этого приложение с потенциальной оценкой 4.5 висит в маркете с 3.8. Обидно однако.

Может в манифесте можно что то прописать? Управлять исключениями в консоли разработчика не вариант - вручную исключать устройства для каждого приложения  - исключалка сломается. Механизма импорта списка исключенных устройств гугль к сожалению еще не придумал.

Рекомендуемые сообщения

  • 0
  • Модераторы
Опубликовано
4 минуты назад, dante333 сказал:

А можно по подробней,что за модифицированый файл?

положить в папку с проектом и добавить в uses

FMX.Platform.Android.zip

  • 0
Опубликовано (изменено)
2 часа назад, ZuBy сказал:

положить в папку с проектом и добавить в uses

FMX.Platform.Android.zip

Спасибо.А какие изменения?Что фиксит?

UPD.Разобрался.Спасибо еще раз.

Изменено пользователем dante333
  • 0
  • Модераторы
Опубликовано
2 часа назад, dante333 сказал:

А можно по подробней,что за модифицированый файл?

фиксит неправильное определение  размеров формы, на интеле часть формы залезает под статус бар

  • 0
Опубликовано (изменено)

Проверил работу Firemonkey на планшете Dexp Ursus gx180 (на нем установлен процессор Intel Atom Z3735F, видео тоже интел). Верх формы залезает под системный statusbar (решением является StatusBar Color от ZuBy http://fire-monkey.ru/topic/2577-statusbar-color/#comment-14604), либо установить свойство формы Fullscreen=true, но тогда нажимать на кнопки приходится чуть выше чем они видны. Причем похоже MapView выставляет свое положение правильно, в отличии от остальных элементов.

Кстати, никакие lib*.so отключать не пришлось. Программа запускается и работает, что не может не радовать. Тосты показывает.

К чему это я... может не стоит исключать устройства с Intel Atom из списка поддерживаемых? )

Изменено пользователем Rusland
  • 0
Опубликовано

А вот такая реализация не помогает обойти проблему:

{$IF     defined(CPUARM)}
  ...
{$ELSEIF defined(CPUX86)}
  ...
{$ENDIF}
end;
{$ELSEIF Defined(CPUX86)}
begin
  ...
end;
{$ELSEIF Defined(CPUX64)}
begin
  ...
end;
{$ELSE OTHERCPU}
  {$MESSAGE Fatal 'Method not implemented for CPU'}
{$ENDIF OTHERCPU}

 

  • 0
  • Модераторы
Опубликовано (изменено)
4 часа назад, Pax Beach сказал:

А вот такая реализация не помогает обойти проблему:


{$IF     defined(CPUARM)}
  ...
{$ELSEIF defined(CPUX86)}
  ...
{$ENDIF}
end;
{$ELSEIF Defined(CPUX86)}
begin
  ...
end;
{$ELSEIF Defined(CPUX64)}
begin
  ...
end;
{$ELSE OTHERCPU}
  {$MESSAGE Fatal 'Method not implemented for CPU'}
{$ENDIF OTHERCPU}

 

кажется это не прокатит, т.к. запускается в эмуляторе (JVM Dalvik или ART), поэтому архитектура будет ARM

я пытался через java пробиться к процессору, но всегда получал ARM

Изменено пользователем ZuBy
забыл про новый ART
  • 0
Опубликовано

При публикации проекта в Google Play, получаю сообщение, что проект доступен для платформ на базе ARM. Про Intel речи нет. Видимо на таких устройствах не будет устанавливаться.

  • 0
  • Модераторы
Опубликовано
7 минут назад, Pax Beach сказал:

При публикации проекта в Google Play, получаю сообщение, что проект доступен для платформ на базе ARM. Про Intel речи нет. Видимо на таких устройствах не будет устанавливаться.

у меня вот так

Цитата

armeabi, armeabi-v7a, mips

 

  • 0
  • Модераторы
Опубликовано
1 минуту назад, Евгений Корепов сказал:

Google Play по какой то причине не выделяет Intel Atom как X86. Считается что это arm процессор :-( 

я так понимаю это MIPS архитектура

  • 0
Опубликовано
3 минуты назад, ZuBy сказал:

я так понимаю это MIPS архитектура

Нет, MIPS это отдельная ветвь https://ru.wikipedia.org/wiki/MIPS_(архитектура) , Intel Atom к ней не имеет отношения, он именно X86, а гугль не фильтрует его как x86 из за возможности эмуляции arm - сволочи.

  • 0
Опубликовано

Тут есть код на java для Lollipop:

import android.os.Build;

Log.i(TAG, "CPU_ABI : " + Build.CPU_ABI);
Log.i(TAG, "CPU_ABI2 : " + Build.CPU_ABI2);
Log.i(TAG, "OS.ARCH : " + System.getProperty("os.arch"));

Log.i(TAG, "SUPPORTED_ABIS : " + Arrays.toString(Build.SUPPORTED_ABIS));
Log.i(TAG, "SUPPORTED_32_BIT_ABIS : " + Arrays.toString(Build.SUPPORTED_32_BIT_ABIS));
Log.i(TAG, "SUPPORTED_64_BIT_ABIS : " + Arrays.toString(Build.SUPPORTED_64_BIT_ABIS));

Есть ли в Delphi обертка android.os.Build?

  • 0
  • Модераторы
Опубликовано

на андроид студии это делается так

5.0 и выше
for(String s : Build.SUPPORTED_32_BIT_ABIS) {
	Log.i("TAG", "CPU_32: " + s);
}

for(String x : Build.SUPPORTED_64_BIT_ABIS) {
	Log.i("TAG", "CPU_64: " + x);
}

до 5.0
Log.i("TAG", "CPU_ABI: " + Build.CPU_ABI);
Log.i("TAG", "CPU_ABI2: " + Build.CPU_ABI2);
  • 0
Опубликовано

Взял код вот отсюда:

procedure TForm10.Button2Click(Sender: TObject);
begin
  Memo1.Lines.Add(Format('%s:%s', ['BOARD',
    JStringToString(TJBuild.JavaClass.BOARD)]));
  Memo1.Lines.Add(Format('%s:%s', ['BOOTLOADER',
    JStringToString(TJBuild.JavaClass.BOOTLOADER)]));
  Memo1.Lines.Add(Format('%s:%s', ['BRAND',
    JStringToString(TJBuild.JavaClass.BRAND)]));
  Memo1.Lines.Add(Format('%s:%s', ['CPU_ABI',
    JStringToString(TJBuild.JavaClass.CPU_ABI)]));
  Memo1.Lines.Add(Format('%s:%s', ['CPU_ABI2',
    JStringToString(TJBuild.JavaClass.CPU_ABI2)]));
  Memo1.Lines.Add(Format('%s:%s', ['DEVICE',
    JStringToString(TJBuild.JavaClass.DEVICE)]));
  Memo1.Lines.Add(Format('%s:%s', ['DISPLAYドID',
    JStringToString(TJBuild.JavaClass.DISPLAY)]));
  Memo1.Lines.Add(Format('%s:%s', ['FINGERPRINT',
    JStringToString(TJBuild.JavaClass.FINGERPRINT)]));
  Memo1.Lines.Add(Format('%s:%s', ['HARDWARE',
    JStringToString(TJBuild.JavaClass.HARDWARE)]));
  Memo1.Lines.Add(Format('%s:%s', ['HOST',
    JStringToString(TJBuild.JavaClass.HOST)]));
  Memo1.Lines.Add(Format('%s:%s', ['ID',
    JStringToString(TJBuild.JavaClass.ID)]));
  Memo1.Lines.Add(Format('%s:%s', ['MANUFACTURER',
    JStringToString(TJBuild.JavaClass.MANUFACTURER)]));
  Memo1.Lines.Add(Format('%s:%s', ['MODEL',
    JStringToString(TJBuild.JavaClass.MODEL)]));
  Memo1.Lines.Add(Format('%s:%s', ['PRODUCT',
    JStringToString(TJBuild.JavaClass.PRODUCT)]));
  Memo1.Lines.Add(Format('%s:%s', ['RADIO',
    JStringToString(TJBuild.JavaClass.RADIO)]));
  Memo1.Lines.Add(Format('%s:%s', ['TAGS',
    JStringToString(TJBuild.JavaClass.TAGS)]));
  Memo1.Lines.Add(Format('%s:%d', ['TIME', TJBuild.JavaClass.TIME]));
//  Memo1.Lines.Add(Format('%s:%s', ['TYPE',
//    JStringToString(TJBuild.JavaClass.&TYPE)]));
  Memo1.Lines.Add(Format('%s:%s', ['UNKNOWN',
    JStringToString(TJBuild.JavaClass.UNKNOWN)]));
  Memo1.Lines.Add(Format('%s:%s', ['USER',
    JStringToString(TJBuild.JavaClass.USER)]));
  Memo1.Lines.Add(Format('%s:%s', ['CODENAME',
    JStringToString(TJBuild_VERSION.JavaClass.CODENAME)]));
  Memo1.Lines.Add(Format('%s:%s', ['INCREMENTAL',
    JStringToString(TJBuild_VERSION.JavaClass.INCREMENTAL)]));
  Memo1.Lines.Add(Format('%s:%s', ['RELEASE',
    JStringToString(TJBuild_VERSION.JavaClass.RELEASE)]));
  Memo1.Lines.Add(Format('%s:%d', ['SDK_INT',
    TJBuild_VERSION.JavaClass.SDK_INT]));
end;

Единственное упоминание Intel в Fingerprint... ну хоть что-то

Screenshot_2016-09-26-10-28-35.png

  • 0
  • Модераторы
Опубликовано
20 минут назад, ZuBy сказал:

на андроид студии это делается так


5.0 и выше
for(String s : Build.SUPPORTED_32_BIT_ABIS) {
	Log.i("TAG", "CPU_32: " + s);
}

for(String x : Build.SUPPORTED_64_BIT_ABIS) {
	Log.i("TAG", "CPU_64: " + x);
}

до 5.0
Log.i("TAG", "CPU_ABI: " + Build.CPU_ABI);
Log.i("TAG", "CPU_ABI2: " + Build.CPU_ABI2);

этот код на Delphi будет такой

{$IFDEF ANDROID}
var
  I: integer;
  arrObj32: TJavaObjectArray<JString>;
  arrObj64: TJavaObjectArray<JString>;
  arrObjAbis: TJavaObjectArray<JString>;
  s32, s64, sAbis: string;
begin
    s32 := '';
    arrObj32 := TJBuild.JavaClass.SUPPORTED_32_BIT_ABIS;
    for I := 0 to arrObj32.Length - 1 do
    	s32 := s32 + JStringToString(arrObj32.Items[I]);

    s64 := '';
    arrObj64 := TJBuild.JavaClass.SUPPORTED_64_BIT_ABIS;
    for I := 0 to arrObj64.Length - 1 do
    	s64 := s64 + JStringToString(arrObj64.Items[I]);

    sAbis := '';
    arrObjAbis := TJBuild.JavaClass.SUPPORTED_ABIS;
    for I := 0 to arrObjAbis.Length - 1 do
    	sAbis := sAbis + JStringToString(arrObjAbis.Items[I]);
end;
{$ENDIF}

 

  • 0
  • Модераторы
Опубликовано
20 минут назад, Rusland сказал:

Единственное упоминание Intel в Fingerprint... ну хоть что-то

Цитата

FINGERPRINT

Added in API level 1

String FINGERPRINT

A string that uniquely identifies this build. Do not attempt to parse this value.

 

  • 0
Опубликовано (изменено)

Я не понял, нужно ли снимать эту галочку с libnative-activity.so чтобы поддерживались Intel устройства или нет?

Что это за файл вообще, для чего он используется? И будет ли без него корректно работать программа.

Для чего то ведь его включают в проект...

Delphi Berlin.

Изменено пользователем ENRGY
  • 1
Опубликовано

там стоит заглушка, которая выводит надпись "ваша платформа не поддерживается, до свидания"

но факт в том, что на большом кол-ве интел стоит библиотека houdini которая поддерживает запуск программ, написанных для ARM

в результате и ваша программа тоже имеет шанс запуститься. поэтому, убрав эту птицу, вы можете "без программирования", как это принято в RAD Studio ))) получить хороший результат )))

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...