2018. 12. 30. 12:11 안드로이드

 productFlavors 사용법



app gradle 설정 

빨간 부분이 추가 된 부분입니다.

android {
compileSdkVersion 27
defaultConfig {
applicationId "home.com.productflavor"
minSdkVersion 17
targetSdkVersion 27
flavorDimensions "default"
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

productFlavors{
dev {
applicationId "home.com.productflavor.dev"

}
real {
applicationId "home.com.productflavor.real"

}
}

}

dependencies {

..........
}


프로젝트네비게이션 구조



저기 dev는 java가 파랑색인데 왜 real java는 그렇지 않은가 궁금할텐데 

그건 build variants 를 real로 설정하나 dev로 설정하나에 따라서 달라진다




소스는 단순하다 

MainActivity.java

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this,Cons.data,Toast.LENGTH_SHORT).show();
TextView tv = findViewById(R.id.location);
tv.setText(R.string.location);
}
}

real Cons.java

public class Cons {
public static final String data="222";
}

real strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="location">real</string>
</resources>

dev Cons.java 

public class Cons {
public static final String data="111";
}

dev strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="location">dev</string>
</resources>


이렇게 두면 build Variant 가 real로 세팅되면 real이 표시되고 dev로 세팅되면 dev로 텍스트 뷰에 표시가 된다 .


프로젝트 

flavrotest.zip


posted by 욱이다
2018. 6. 12. 16:20 안드로이드

volley 라이브러리 한글 깨짐 해결 방법


compile 'com.mcxiaoke.volley:library:1.0.19'


public class Utf8StringRequest extends StringRequest {
public Utf8StringRequest(int method, String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(method, url, listener, errorListener);
}

public Utf8StringRequest(String url, Response.Listener<String> listener, Response.ErrorListener errorListener) {
super(url, listener, errorListener);
}

@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
try {
String utf8String = new String(response.data, "UTF-8");
return Response.success(utf8String, HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
// log error
return Response.error(new ParseError(e));
} catch (Exception e) {
// log error
return Response.error(new ParseError(e));
}
}
}


posted by 욱이다
2015. 9. 23. 13:49 안드로이드

sqlcipher 공식 사이트 

https://www.zetetic.net/sqlcipher/open-source/




안드로이드 샘플 프로젝트 만드는 방법

https://www.zetetic.net/sqlcipher/sqlcipher-for-android/


많이 생각하지 말고  차근 차근 따라 하면되는데 

Create sample Android application 

이것만 잘 보고 따라하면된다 


따라하면 결과가 아래와 같이 나와야 한다 
/assets
/libs 
폴더의 상태가 같아야 한다 

용량이 크네 ... 8메가가 증가한다

sqlcipher_demo_app_libs.zip



라이센스 내용이 나온다 

https://www.zetetic.net/sqlcipher/about/

내용중 .... BSD스타일 오픈소스다 라고 나온다 

SQLCipher's Community Edition source code is released under a BSD-style Open Source license, with Commercial Edition binary libraries available for Windows, .NET, Mac OS X, iOS, MonoTouch and Mono for Android.



찾다보니 다른 분의 설명이 잘된 블로그도 있습니다.

http://horajjan.blog.me/220469481505


posted by 욱이다
2015. 4. 10. 11:25 안드로이드

안드로이드 앱을 개발할때 

완전 새로 만들다 보면 프로젝트도 새로 따고 구조도 다 바꾸고 하면 

바로가기 아이콘이 업데이트 후 사라지는 것을 경험했다 




해결 방법은 

구버젼은 SplashActivity 가 런처이고 

신버젼은 MainActivity가 런처이다 





<activity

            android:name=".SplashActivity"//구 버젼인 이곳은 파일이 없어도 된다 

            android:launchMode="singleTask"

            android:screenOrientation="portrait" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>


        <activity

            android:name=".act.main.MainActivity"//신버젼인 이곳은 파일이 있어야 된다 

            android:launchMode="singleTop"

            android:screenOrientation="portrait"

            android:windowSoftInputMode="adjustResize" >

            <intent-filter>

                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />

                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="sons" />

            </intent-filter>

        </activity>


        <activity-alias//이놈이 런처 액티비티 타겟을 수정해 주는 역할을 한다 

            android:name=".SplashActivity"

            android:targetActivity=".act.main.MainActivity" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity-alias>


선언하는 순서도 중요하다 

posted by 욱이다
2015. 4. 3. 14:47 안드로이드

FLAG_ACTIVITY_REORDER_TO_FRONT BACKGROUND 




아 .. 잡 배가 .... 진짜 .. 별꼴이네 


 상황은 FLAG_ACTIVITY_REORDER_TO_FRONT 이거 쓰다 보면 배가에서 

어처구니 없이 앱이 백그라운드로(BACKGROUND) 빠져 버릴때가 있다 


ABCB ---> 여기서 B가 FLAG_ACTIVITY_REORDER_TO_FRONT 옵션이면 

취소키 누르다 보면 앱이 백그라운드로 가는 상황이 생기는데 


이럴때 처리 방법 .. 참네 ... 우끼네 


찾은 곳 

https://code.google.com/p/android/issues/detail?id=63570#c2


안드로이드 참 ... 할때 마다 실망이야 짜식아




소스코드 

boolean mIsRestoredToTop = false;


@Override

protected void onNewIntent(Intent intent) {

// TODO Auto-generated method stub

super.onNewIntent(intent);

Utils.Print("BaseActivity onNewIntent " + strPackageName);

mIsRestoredToTop = false;

if ((intent.getFlags() | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) > 0) {

mIsRestoredToTop = true;

}

}


@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)

public void finish_FLAG_ACTIVITY_REORDER_TO_FRONT() {


Utils.Print("mIsRestoredToTop " + mIsRestoredToTop);

if (android.os.Build.VERSION.SDK_INT >= 19 && !isTaskRoot() && mIsRestoredToTop) {

// 4.4.2 platform issues for FLAG_ACTIVITY_REORDER_TO_FRONT,

// reordered activity back press will go to home unexpectly,

// Workaround: move reordered activity current task to front when

// it's finished.

// 이게 보니깐 액션 유저가 아닌게 백그라운드로 가면 포그라운드로 올려라 라는 명령어네요

ActivityManager tasksManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);

tasksManager.moveTaskToFront(getTaskId(), ActivityManager.MOVE_TASK_NO_USER_ACTION);

}

}



posted by 욱이다
2015. 3. 30. 17:18 안드로이드

웹뷰가 껌뻑이거나 

많은 웹뷰를 띄울때 앱이 뻗을 때 



webView의 setLayerType을 설정해주면 된다 



webview.setLayerType(View.LAYER_TYPE_SOFTWARE,null);

장점 이건 설정하면 웹뷰를 계속 띄워도 뻗지 않는다 . 

페이지 전환시 껌뻑임이 없다 

단점은 웹뷰 내용을 스크롤 할 때 느리게 스크롤 되는 단점이있다

나는 계속 보니 어지러워서 토나올것 같더라 


webview.setLayerType(View.LAYER_TYPE_HARDWARE,null);

장점은 스크롤이 괭장히 부드럽게 된다 .

단점은 웹뷰 한 .. 10개 정도 .. 액티비티당 2개씩이라서 한 5개 정도 띄우면 뻗는다 버퍼에러 난다 

그리고 페이지 불러올때 껌뻑인다 .. 퍼즐 맞추듯이 맞춰 진다 

이거 할때는 android:hardwareAccelerated="true" 이것도 메니페스트 <application에 추가하자 


둘의 장점에 맞는 방법을 찾아 볼려고했는데 안되네 ...

posted by 욱이다
2014. 12. 22. 13:59 안드로이드

요지는 내용스크롤하면 그 스크롤 갑을 가지고 탭 레이아웃 마진을 조절해서 

내용스크롤하면 자동으로 탭 레이아웃이 스크롤 되는 그런 느낌을 가지게 한다 


난 리니어 레이아웃으로 탭과 내용이 연결되어 졌는 줄 알았는데 그게 아니였고 

프레임레이아웃으로 연결해야한다 


'안드로이드' 카테고리의 다른 글

FLAG_ACTIVITY_REORDER_TO_FRONT 백그라운드 이동  (0) 2015.04.03
웹뷰 껌뻑임 현상  (0) 2015.03.30
genymotion eclipse device chooser not found  (0) 2014.12.04
Gps Activity  (0) 2014.05.15
cardslib  (0) 2014.04.30
posted by 욱이다
2014. 12. 4. 18:46 안드로이드

genymotion이클립스에서 사용시 



device chooser에 나타 나지 않을때 


device chooser창을 띄운 상태에서 (나는 이렇게 했다 ;;;)


커멘트 창에다가 adb있는 폴더가서 


adb kill-server


adb start-server 


해주면 된다 


'안드로이드' 카테고리의 다른 글

웹뷰 껌뻑임 현상  (0) 2015.03.30
옥션 - 내용 스크롤 할때 탭도 같이 스크롤  (0) 2014.12.22
Gps Activity  (0) 2014.05.15
cardslib  (0) 2014.04.30
안드로이드 소스 다운로드  (0) 2014.04.16
posted by 욱이다
2014. 5. 15. 11:01 안드로이드


GpsActivity.apk



위치 찾는 소스 예제 

http://www.codeofaninja.com/2014/04/get-the-users-current-location-in-android.html



GoogleMap v2를 이용한 안드로이드 위치 정보 기록 앱입니다.


네비만 찍고 목적지를 향해서 갈때 내가 간 곳의 위치가 어디 쯤이고 어디를 경유해서 갔는지 궁금해서 

만들어 본 앱입니다 ..


요즘 위치 정보 때문에 민감합니다 . 

이 앱은 위치정보를 서버로 보내지 않으니 안심 하셔도 됩니다.

네트워크 퍼미션 사용은 구글 분석기를 이용하기 위해서 선언되었습니다.

구글 분석기는 사용자 패턴을 확인하기 위해 사용했습니다. (화면, 터치이벤트)


평소에는 회사 집만 왔다갔다하니 별로 필요없지만 

주말에 교외로 나갈 때 사용하면 내가 이동한 위치가 기록되어져 있어서 어떤길로 갔는지 확인이 가능합니다.


기록된 정보는 앱의 디비에 기록되고 

앱에 기록된 디비를 파일로 저장하여 메모리  Gpson폴더에 저장됩니다.


기본 화면 [지도]

현재 내 위치를 나타냅니다.



경로화면

앱 디비에 저장된 경로들을 모두 볼수 있습니다.


설정

여러가지 설정이 가능합니다.




영역설정을 클릭하면 날짜를 설정해서 해당 날짜의 저장된 데이터를 지도나 리스트로 확인 가능합니다.

DELAYTIME을 설정해서 백그라운드에서도 해당 딜레이 만큼 위치를 기록합니다.

알림설정은 딜레이 타임만큼의 시간마다 위치가 확인되면 상단 상태바에 노티를 띄움니다 

파일 저장은 앱에 기록된 디비를 파일로 저장하여 메모리  Gpson에 저장됩니다.

파일 보기는 파일 저장을 통해 저장된 파일을 삭제, 메일보내기, 앱에서 읽기의 기능이 있습니다.

GPS환경설정은 단말기의 GPS환경설정을 설정합니다.

초기화 기록된 디비정보만을 모두 지웁니다.







posted by 욱이다
2014. 4. 30. 09:14 안드로이드


CardList2.zip


[출처]/AndroidStaggeredGrid


https://github.com/etsy/AndroidStaggeredGrid

라이브러리 다운 받아서 돌아가게 만들었다

posted by 욱이다
prev 1 2 3 4 5 next