안드로이드 6.0(23)으로 compileSdkVersion과 targetSdkVersion을 셋팅하였다. 그랬더니 기존에는 발생하지 않던 APK 빌드가 실패하였다. 확인해 보았더니 6.0에서 ApacheHttpClient가 duplicate되어 발생한 문제였다. 따라서 proguard_project.txt에 다음을 추가해 주면 문제가 해결된다. -dontwarn org.apache.http.** -dontwarn android.net.http.AndroidHttpClient -dontwarn retrofit.client.ApacheClient$GenericEntityHttpRequest -dontwarn retrofit.client.ApacheClient$GenericHttpRequest -dontwa..
인터넷에 있는 Android Studio NDK 설정 내용들은 전부다 메인 프로젝트에 NDK 소스파일 들이 있는 내용이고 라이브러리 프로젝트에 있는 내용은 없다. 그래서 라이브러리 프로젝트에서 NDK 빌드를 하는 설정을 해보았다. 그런데 이클립스의 라이브러리 프로젝트와 다르게, so파일이 생성은 되지만 자동으로 메인 프로젝트에 복사가 되지 않는다. 다음 글에서는 gradle로 빌드된 so파일을 복사를 해보겠다. apply plugin: 'com.android.library' // 라이브러리 프로젝트 android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { minSdkVersion 18 targetSdkVersion 21 ndk {..
Eclipse NDK 프로젝트를 Android Studio에 import 하였을때 발생하는 에러로서 Android.mk에 링크가 다음과 같이 정의가 되어 있음에도 불구하고 undefined reference to __android_log_print가 발생했다. Android.mkLOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2 이런 에러가 발생할때는 다음과 같이 build.gradle을 열어서 ndk에 다음과 같이 ldLibs를 추가해 주어야 한다. Android Studio에서 import시 ldLibs를 추가해 주지 않기 때문이다. ndk { moduleName "mediaweb" ldLibs "log", "android", "EGL", "GLESv2" }
package com.example.surfaceviewsample; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PixelFormat; import android.os.Bundle; import android.view.Menu; import android.view.SurfaceHolder; import an..
안드로이드에서도 Linux API를 다음과 같이 Hooking할 수 있다. 다른 점은 RTLD_NEXT대신에 RTLD_DEFAULT를 써야 한다는 점이고, 대상 so와 함께 link되어 컴파일 되어야 한다는 점이다. #define _GNU_SOURCE #define __USE_GNU #define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native-activity", __VA_ARGS__))#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native-activity", __VA_ARGS__)) void* malloc(size_t size) { LOGI("malloc"); stat..
public static String getDeviceUUID(final Context context) { // preference에서 저장된 것이 있는지 확인해봄 final SharedPreferences prefs = context.getSharedPreferences("UUIDTEST", MODE_PRIVATE); final String id = prefs.getString("UUID", null); UUID uuid = null; if (id != null) { uuid = UUID.fromString(id); } else { final String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure..
장점 1. 소스 디컴파일러가 내장되어 있어서 소스가 없는것도 소스를 쉽게 볼수 있고, 안드로이드 소스도 바로 연결이 된다. 2. gradle 빌드 시스템으로 라이브러리의 최신버전을 repository에서 받아온다. 3. 탭간 이동이 비쥬얼 스튜디오와 동일하게 ctrl + tab이다. 이게 가장 편하다. 4. dracular 테마가 있어서 좋다. 5. 프로젝트 관리가 이클립스의 workspace가 아니라서 git에 넣었을 경우에 비쥬얼 스튜디오 처럼 프로젝트를 로딩하면 모든 셋팅이 같이 로딩된다. 6. UI 에디터도 쓸만하게 프리뷰를 할수 있다.단점 1. gradle이 어렵다. 2. gradle이 느리다.
- Total
- Today
- Yesterday