Другое решение состоит в том, чтобы выполнить код через последовательный исполнитель nsynjs .
nsynjs будет последовательно оценивать все обещания и ставить обещания результат в свойство data
:
function synchronousCode() {
var getURL = function(url) {
return window.fetch(url).data.text().data;
};
var url = 'https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js';
console.log('received bytes:',getURL(url).length);
};
nsynjs.run(synchronousCode,{},function(){
console.log('synchronousCode done');
});
Шаг 1. Wrap с обратным вызовом в оболочку, совместимую с nsynjs (если у нее есть обещанная версия, вы можете пропустить этот тест):
var ajaxGet = function (ctx,url) {
var res = {};
var ex;
$.ajax(url)
.done(function (data) {
res.data = data;
})
.fail(function(e) {
ex = e;
})
.always(function() {
ctx.resume(ex);
});
return res;
};
ajaxGet.nsynjsHasCallback = true;
Шаг 2. Вставить синхронную логику в функцию:
function process() {
console.log('got data:', ajaxGet(nsynjsCtx, "data/file1.json").data);
}
Шаг 3. Выполнить функцию синхронно через nnsynjs:
nsynjs.run(process,this,function () {
console.log("synchronous function finished");
});
Nsynjs будет оценивать все операторы и выражения шаг за шагом, приостанавливая выполнение в случае, если результат некоторой медленной функции не готов.
Дополнительные примеры здесь: https://github.com/amaksr/nsynjs/tree/master/examples
Чтобы запутать код в студии Android, просто перейдите в файл build.gradle в проекте Android Studio:
[/g1]
Измените свойство minifyEnabled с false на true
[/g2]
Это базовое аннулирование.
После генерации apk вы можете увидеть результат обфускации, декомпилирующий apk с любым программным обеспечением, например, эта страница может вам помочь:
http://www.decompileandroid.com/
В результате обфускации вы увидите классы с именем: a, b, c ....
[/g3]
И переменные и методы обфускации будут иметь также имена, такие как aa, c, ac ...
[/g4]
Чтобы запутать код в более сложной форме, вы можете перейти в приложение корневого каталога и создать файл .pro, например на следующем рисунке. Я создал файл: proguard-rules-new.pro, в том же каталоге вы должны увидеть файл ca lled proguard-rules.pro
[/g5]
Теперь добавьте файл, который вы создали, в файл build.gradle
[/g6]
И отредактируйте файл .pro, который вы создали, с собственными правилами пользовательских правил proguard
[/g7]
Proguard хорошо поддерживается на студии Android. Вы должны настроить Gradle для его запуска. Инструкции: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard
Сначала включите minifyEnabled
в файле build.gradle, например
minifyEnabled true
. После этого добавьте ниже строки в файле progurad-rules.txt
-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
Для проверяя, что его рабочий тон перейдет на сайт
http://www.javadecompilers.com/apktool , чтобы вы могли проверить после декомпиляции.
It будет работать, и ваши классы будут полностью скрыты.