어느날 APK를 생성하니 

 

아래와 같이 에러가 발생 되었습니다.

 

 

자세히 확인해 보니 jcenter()에서 api를 가져오지 못하는것으로 보입니다.

 

그래서

 

build.gradle의 jcenter() 호출하는 부분을 mavenCentral()로 변경 했더니 해결이 되었습니다.

 

As-Is 

문제가 발생된 코드

 

To-Be

해결된 코드

 

위의 To-Be 와 같이 하였을 때도 동일하게 오류가 발생 될경우

jcenter() 호출하는 부분을 하나하나 mavenCentral()로 바꿔 보면 해결되는지 확인하면 될듯 합니다.

728x90
반응형

 

아래와 같이 에러가 발생될 경우

 

Caused by: com.android.builder.errors.EvalIssueException: Configuration `:app:debugRuntimeClasspath` contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled, which may cause runtime issues.

 

아래 파일들이 누락되어있는 경우 발생합니다.

gradle-wrapper.properties 파일

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

 

gradle.properties 파일(중요)

@@ -0,0 +1,24 @@
# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true
728x90
반응형

 

특정 URL로 통신하니 

java.io.IOException: Cleartext HTTP traffic to test.tlshenm.com not permitted 오류가 발생되었습니다.

안드로이드 파이(9)부터 Http 통신시 발생된다고 하더군요...

해결방법

Https 통신으로 바꾸거나 바꿀수 없으면 허용을 해줘야 합니다.

저는 허용하는 방법을 안내하겠습니다.

 

1. res/xml폴더를 생성하시구요

2. res/xml/network_security_config.xml파일을 생성합니다.

3. 아래그림과 같이 예외처리할 URL(test.tlshenm.com)을 넣어 줍니다.

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">test.tlshenm.com</domain>
    </domain-config>
</network-security-config>

마지막으로 AndroidManifast.xml안에 <application> 태그안에 아래 코드를 넣어 줍니다.

    <application
        android:networkSecurityConfig="@xml/network_security_config"
        . . . . . .>

이제 빌드해보시면 정상적으로 동작되실겁니다.

728x90
반응형

오랜만에 새로운 버전으로 빌드해보니 오류가 발생되었습니다.

Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.

 

31 SDK를 설치해도 동일하게 발생되더군요.

 

해결방법

SDK를 30으로 낮춘다...

(나중에 31로 플레이스토어에 배포하라 그러면 어쩌라는 거냐...)

그림과 같이 바꾸시면 됩니다.

그럼 빌드 되실겁니다.

728x90
반응형

안드로이드 소스를 비교하는 방법에 대해 설명드리도록 하겠습니다.

 

 

우선 프로젝트를 먼저 실행해 줍니다.

 

저는 예시로 OldProject 와 NewProject를 소스를 비교할겁니다.

 

1. OldProject를 안드로이드 스튜디오로 실행 시켜 줍니다.

2. OldProject에서 아래와 그림과 같이 비교할 특정폴더(OldProject/app/main)를 선택합니다.

 

3. 마우스 오른쪽 클릭하여 메뉴를 엽니다.

4. 메뉴 중 Compare With를 선택합니다.

 

5. 비교할 프로젝트의 소스 폴더를 선택후 Open 버튼을 누릅니다.

예시)

OldProject/app/main

NewProject/app/main 선택

 

6. 짜잔~! OldProject/app/main과 NewProject/app/main의 소스파일들이 비교됩니다.

이런식으로

안드로이드 스튜디오에서 비교하면 어떤 소스가 추가 되었는지 또 어떤 소스가 없어졌는지 명확히 알수 있습니다.

 

728x90
반응형

안드로이드 백버튼 두번 누른 후 앱 종료동작


public class MainActivity extends Activity {
private Context mContext = null;
private long backKeyPressedTime = 0;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mContext = this;
}

@Override
public void onBackPressed() {
if (System.currentTimeMillis() > backKeyPressedTime + 2000) {
backKeyPressedTime = System.currentTimeMillis();
Toast.makeText(this, "\'뒤로\'버튼을 한번 더 누르시면 종료됩니다.", Toast.LENGTH_SHORT).show();
return;
}
if (System.currentTimeMillis() <= backKeyPressedTime + 2000) {
super.onBackPressed();
}
}



728x90
반응형

아래와 같이 에러가 발생하였을때


ERROR: Unable to find method 'org.gradle.api.tasks.compile.CompileOptions.setBootClasspath(Ljava/lang/String;)V'.

Possible causes for this unexpected error include:

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

Re-download dependencies and sync project (requires network)


The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.

Stop Gradle build processes (requires restart)


Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.


In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.



해결방법


Project/gradle/wrapper/gradle-wrapper.properties 파일로 들어가서

5.1.1부분을 4.6이라던지 4.1로 버전을 변경해보시면 정상 빌드 되실겁니다.


그래도 안되시면 

안드로이드 스튜디오를 종료후 재시작 해보시거나

File/Sync Project with Gradle File를 눌러 보시기 발랍니다.




728x90
반응형

곧 안드로이드 스튜디오 build.gradle  compile 명령어가 Deprecated 된다고 합니다.

대신 implementation, api 명령어로 모듈을 import할 수 있습니다.



728x90
반응형

+ Recent posts