Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Странное поведение при наследовании / 15 сообщений из 15, страница 1 из 1
13.01.2014, 12:16
    #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
13.01.2014, 12:51
    #38524176
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение при наследовании
Это не особенность андроида, но явы...

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

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

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

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

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

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

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

Код: java
1.
private Camera cam;



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

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



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

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

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



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

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



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

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




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

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




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

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

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

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

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

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

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


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


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