powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Странное поведение при наследовании
15 сообщений из 15, страница 1 из 1
Странное поведение при наследовании
    #38524097
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем! Делаю первые шаги в освоении - поэтому прошу сильно не пинать.

Пытаюсь сделать класс-наследник:

Код: java
1.
2.
3.
4.
5.
...
import android.hardware.Camera;

public class CameraInternal extends Camera {
}



Eclipse выдает ошибку : Implicit super constructor Camera() is not visible for default constructor. Must define an explicit constructor

Ладно создаю констуктор:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
...
import android.hardware.Camera;

public class CameraInternal extends Camera {

	CameraInternal() {
		super(); // тут ошибка: The constructor Camera() is not visible
	}	

	CameraInternal(int cameraId) 
	{
		super(  cameraId ); // тут ошибка: The constructor Camera(int) is undefined
	}
}



Eclipse выдает уже две ошибки и обе на вызове super:
The constructor Camera() is not visible
The constructor Camera(int) is undefined

а вот реализация самого базового класса Camera:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
package android.hardware; 
.....

public class Camera { 
....
    Camera(int cameraId) {
        mShutterCallback = null;
        mRawImageCallback = null;
        mJpegCallback = null;
        mPreviewCallback = null;
        mPostviewCallback = null;
        mUsingPreviewAllocation = false;
        mZoomListener = null;

        Looper looper;
        if ((looper = Looper.myLooper()) != null) {
            mEventHandler = new EventHandler(this, looper);
        } else if ((looper = Looper.getMainLooper()) != null) {
            mEventHandler = new EventHandler(this, looper);
        } else {
            mEventHandler = null;
        }

        String packageName = ActivityThread.currentPackageName();

        native_setup(new WeakReference<Camera>(this), cameraId, packageName);
    }

    /**
     * An empty Camera for testing purpose.
     */
    Camera() {
    } 

....



Подскажите - где я туплю - уже за два дня все мозги обломал ???
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524176
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не особенность андроида, но явы...

Для чего потребовался наследник от камеры?
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524226
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЭто не особенность андроида, но явы...

Для чего потребовался наследник от камеры?

Для обфускации - я пытаюсь спрятать вызов класса Camera
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524231
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола ПитерскийwadmanЭто не особенность андроида, но явы...

Для чего потребовался наследник от камеры?

Для обфускации - я пытаюсь спрятать вызов класса Camera
Не выйдет. И, кстати, в этом даже смысла нет, т.к. права в манифесте будут заявлены.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524236
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЭто не особенность андроида, но явы...

Для чего потребовался наследник от камеры?

вот такой код ProGuard не обфусцирует т.е. он изменит только cam

Код: java
1.
private Camera cam;



А я пытался через свой класс скрыть вызов класса Camera - т.е. обфускатор его по любому переименовал-бы.

Код: java
1.
2.
private CameraInternal cam; // было бы в исходнике
private a b; // а стало бы после ProGuard если бы не .....



Но вроде я чисто технически сделал все правильно - почему тогда Ява уперлась?
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524240
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМикола Питерскийпропущено...

Для обфускации - я пытаюсь спрятать вызов класса Camera
Не выйдет. И, кстати, в этом даже смысла нет, т.к. права в манифесте будут заявлены.

Пусть права и завлены в манифесте - я же не прогу для скрытого от пользователя наблюдения делаю - я просто пытаюсь от взломщика спрятать проверку.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524242
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола ПитерскийА я пытался через свой класс скрыть вызов класса Camera - т.е. обфускатор его по любому переименовал-бы.
По-твоему вот это-бы он тоже "спрятал"?
Код: java
1.
public class CameraInternal extends Camera
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524244
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола Питерскийя просто пытаюсь от взломщика спрятать проверку.
Одно из самых бесполезных занятий в свете того, что то, что принадлежит андроиду ты не "скроешь" в своем коде.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524263
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМикола ПитерскийА я пытался через свой класс скрыть вызов класса Camera - т.е. обфускатор его по любому переименовал-бы.
По-твоему вот это-бы он тоже "спрятал"?
Код: java
1.
public class CameraInternal extends Camera



По моему после него было бы так:

Код: java
1.
public class a extends Camera



и для просмотра этого кода после декомпиляции нужно спуститься на один уровень вниз чтобы понять что это было вызвано - а там внутри опять вызов другого класса - т.е. я надеялся что взломщик попрыгав туда-сюда по иерархии и окончательно запутавшись навсегда оставит столь бесспективное занятие.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524291
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола Питерскийwadmanпропущено...

По-твоему вот это-бы он тоже "спрятал"?
Код: java
1.
public class CameraInternal extends Camera




По моему после него было бы так:

Код: java
1.
public class a extends Camera




и для просмотра этого кода после декомпиляции нужно спуститься на один уровень вниз чтобы понять что это было вызвано - а там внутри опять вызов другого класса - т.е. я надеялся что взломщик попрыгав туда-сюда по иерархии и окончательно запутавшись навсегда оставит столь бесспективное занятие.
Логическая ошибка, ибо имя класса после декомпилятора можно поменять и не придется прыгать никуда.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524337
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanЛогическая ошибка, ибо имя класса после декомпилятора можно поменять и не придется прыгать никуда.

Ну крекеры достаточно ленивые люди и он думаю не станет тратить неделю своего времени чтоб взломать программу за 1$ при помощи правки исходников.

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

Взломщик вроже же действует так - в ракомпиленом коде пытается найти "лишний код", затем похожий код пытается найти в смали, там его вырезает и их исправленных смали вновь собирает апк. Я пытаюсь запутать его так чтобы он не нашел нужный ему код в самих исходниках.

Или я не прав?
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524344
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола ПитерскийИли я не прав?
Это нужно уточнять у тех, кто этим занимается. Я это использую лишь для того, чтобы разобраться или подглядеть решение и потому, если бы даже метод в начале темы сработал, то все равно это был-бы бесполезный код в плане сокрытия следов.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524363
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМикола ПитерскийИли я не прав?
Это нужно уточнять у тех, кто этим занимается. Я это использую лишь для того, чтобы разобраться или подглядеть решение и потому, если бы даже метод в начале темы сработал, то все равно это был-бы бесполезный код в плане сокрытия следов.

Согласен - от "подглядеть решение" этот метод практически бесполезен. Но всетаки - почему не работает попытка наследования базовых классов? Или это действительно не возможно и жава позволяет наследовать только пользовательские классы?

А есть ли какой способ спрятать от "подглядеть решение" не используя натив а именно на джаве? Целую неделю "курил" инет и ничего толкового не нашел.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524370
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Микола ПитерскийНо всетаки - почему не работает попытка наследования базовых классов?
Потому что конструктор приватный.
Микола ПитерскийА есть ли какой способ спрятать от "подглядеть решение" не используя натив а именно на джаве?
Вряд-ли. При чем на джаве будет более платформо-независимо, КМК.
...
Рейтинг: 0 / 0
Странное поведение при наследовании
    #38524467
Микола Питерский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanМикола ПитерскийНо всетаки - почему не работает попытка наследования базовых классов?
Потому что конструктор приватный.


Огромное спасибо wadman за консультацию! Теперь все прояснилось.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Странное поведение при наследовании
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]