android ide_创建不带IDE的基本Android应用

android ide

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。

几乎每个Android教程都使用Android Studio创建和开发应用程序。 这对学习不利,因为您看不到事物的工作原理,即

  • 组成Android Studio项目的组件
  • 如何设置和配置构建
  • 哪些部分构成了来源

软件开发是关于文件的,在本教程中,我们将遍历基本Android项目中的每个文件-首先检查Android Studio输出什么,然后从头开始构建Android项目。 我们不会假定以前有任何Android经验,只需要一点Java。

注意:我将在Windows上执行此操作,但大多数说明应在其他平台上有效。

分解您的Android Studio项目

这是当您启动一个完全裸项目时Android Studio所创建的。

android ide_创建不带IDE的基本Android应用_第1张图片

首先要注意的是,大多数文件都涉及Gradle(用于配置和执行构建的系统)。 没有任何Gradle文件,我们将拥有什么?

android ide_创建不带IDE的基本Android应用_第2张图片

只有三个文件夹和三个文件。 显然,Android项目的主要复杂性是构建系统。

让我们看看.gitignore,看看哪些文件不包含在源代码管理中。

android ide_创建不带IDE的基本Android应用_第3张图片

因此MyApplication.iml并不重要。 如果您使用的是Google的iml文件,则会看到它们已被Android Studio使用,并且可以从.idea/的配置重新生成。

另外, local.propertiesbuild/也不重要。 那给我们留下了什么? 只是app/文件夹和.idea/一些文件,这是IntelliJ(基于Android Studio构建)存储配置文件的位置。

app文件夹中,您将找到两个目录和三个文件:

  • libs/ ,为空
  • src/ ,不是
  • .gitignore
  • build.gradle
  • ProGuard

ProGuard通过删除未使用的库来帮助缩小最终的APK。 您不需要此文件(实际上所有文件都已注释掉)。 .gitignore用于源代码管理(如果您还不知道的话)。 因此重要的只是src/build.gradle

src/包含您的Java源代码,您使用的资源(如布局和配置文件)以及AndroidManifest可告诉Android您的应用是什么)。 然后build.gradle告诉Gradle如何使用Gradle Android插件将您的源转换为APK。

为了看到所有这些效果,让我们从头开始构建代码库,首先安装SDK,然后初始化gradle,然后转换为Android版本,最后编写应用程序代码。

Android SDK入门

对于此项目,您需要下载Android SDK。 这只是一个ZIP文件。 转到常规安装页面,然后在“命令行工具”中向右滚动到底部。 在那里,您会找到仅150MB左右的压缩文件。 提取您的ANDROID_SDK_ROOT环境变量并将其设置为提取的位置。

就是这样! Gradle应该会自动将其拾取。 (注意:Gradle将SDK位置存储在local.properties文件中,正如我们之前看到的local.properties ,该位置未保存到源代码管理中)。

初始化Gradle

为了从头开始我们的项目,我们使用Gradle初始化一个文件夹。 首先安装Gradle。 我从“手册”部分下载了仅二进制版本,并将bin文件夹添加到了PATH

gradle命令现在应该可以从您的命令行运行。 注意:您还需要安装Java 7或更高版本。 这是使用gradle init初始化空文件夹时gradle init

android ide_创建不带IDE的基本Android应用_第4张图片

看看这些文件在Android Studio项目输出中如何显示? 有关这些文件的详细说明,请参阅Gradle创建构建指南 。

创建一个Android版本

接下来,我们需要设置我们的项目以构建Android。 第一步是将settings.gradle更改为仅包含应用程序模块(只是一个文件夹)。

include ':app'

接下来,将以下内容放入根目录build.gradle

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.3'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这主要定义了从何处下载Gradle库。

接下来,创建/app目录,并将以下内容放入app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    defaultConfig {
        applicationId "com.example.karl.myapplication"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:appcompat-v7:253.1'
}

这使用了Android Gradle插件(com.android.application)并设置了一些值,例如SDK版本和Proguard(可优化我们的输出大小)。 另外,在“依赖项”部分中,它提供了我们要导入的任何库(这里我们导入两个,都用于以后构建接口)。

现在创建app/src/main/res/values/styles.xml ,我们将使用它来设置应用程序的主题。



    
    

最后将以下内容放入app/src/main/AndroidManifest.xml




    

        
            
                
                
            
        
    

这定义了我们应用的程序包,标签和主要活动。

现在,当您运行gradlew build您应该会看到BUILD SUCCESSFUL。 app/build/outputs/apk/debug您应该看到app-debug.apk 您刚刚从头开始设置了Android版本!

要部署此功能,只需在插入手机的情况下说出gradlew installDebug (然后[启用USB调试[(https://www.howtogeek.com/129728/how-to-access-the-developer-options-menu-and-enable- usb-debugging-on-android-4.2 /))。 然后,您应该看到一个名为Demo App的新应用。 当您运行它时,它会崩溃,因为您尚未编写任何Java代码!

编写Java应用程序

接下来建立您的构建,我们需要编写Java。 为此,我们仅需要两个文件:主活动Java文件和布局XML。

将以下内容放入app/src/main/java/com/example/karl/myapplication/MainActivity.java

package com.example.karl.myapplication;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

它只是创建一个新的Activity(Android中类似于过程的核心思想),并将视图设置为Resources文件夹中的布局。

将其放入app/src/main/res/layout/activity_main.xml




    

这只会创建一个“ Hello World!” 消息中心屏幕。

现在运行gradlew build ,您应该再次看到BUILD SUCCESSFUL。 使用gradlew installDebug安装到手机上,您应该看到以下内容:

android ide_创建不带IDE的基本Android应用_第5张图片

您刚刚制作了一个正常工作的Android应用程序,只不过使用了文本编辑器:)。

使用Okta添加身份验证

大多数现代应用程序都需要一定程度的安全性,因此有必要知道如何简单轻松地构建身份验证。 为此,我们将使用OktaAppAuth包装器库。

为什么选择Okta?

在Okta,我们的目标是使身份管理比您以往更加轻松,安全和可扩展。 Okta是一项云服务,允许开发人员创建,编辑和安全地存储用户帐户和用户帐户数据,并将它们与一个或多个应用程序连接。 我们的API使您能够:

  • 验证和授权您的用户
  • 存储有关您的用户的数据
  • 执行基于密码的社交登录
  • 通过多因素身份验证保护您的应用程序
  • 以及更多! 查看我们的产品文档

你卖了吗 注册一个永久免费的开发者帐户 ,当您完成后,请回来查看我们,以便我们详细了解如何构建安全的移动应用程序!

Java身份验证

创建一个名为LoginActivity.java的新Activity,并将其放置在与MainActivity相同的文件夹中。

package com.example.karl.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.util.Log;

import com.okta.appauth.android.OktaAppAuth;
import net.openid.appauth.AuthorizationException;

public class LoginActivity extends Activity {

    private OktaAppAuth mOktaAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mOktaAuth = OktaAppAuth.getInstance(this);

        // Do any of your own setup of the Activity

        mOktaAuth.init(
            this,
            new OktaAppAuth.OktaAuthListener() {
                @Override
                public void onSuccess() {
                    // Handle a successful initialization (e.g. display login button)
                }

                @Override
                public void onTokenFailure(@NonNull AuthorizationException ex) {
                    // Handle a failed initialization
                }
            }
        );
    }
}

这将初始化OktaAppAuth对象并处理成功或失败条件。 接下来,将AndroidManifest.xml更改为指向LoginActivity而不是MainActivity

现在,将以下内容添加到app/build.configdefaultConfig部分。

android.defaultConfig.manifestPlaceholders = [
            "appAuthRedirectScheme": "com.okta.example"
        ]

最后,将以下内容添加到同一文件的依赖项中:

implementation 'com.okta.android:appauth-android:0.1.0'

那应该建立和部署。 您可以使用logcat查看后台发生的情况。 查看主库类的源代码,我们看到我们需要使用的标签是“ OktaAppAuth”。

android ide_创建不带IDE的基本Android应用_第6张图片

尝试创建服务后,我们立即收到“ Configuration was invalid错误。 我们需要将我们的应用程序连接到Okta帐户。

连接到Okta进行身份验证

由于您已经拥有Okta开发人员帐户 ,因此可以直接进行配置。 在开发人员控制台中,选择“应用程序”选项卡,然后选择“新建应用程序”。 选择本机,然后单击下一步。 该字段应正确自动填充。 最重要的部分是重定向URL。 单击完成。

在“分配”选项卡上,单击“分配”下拉列表,然后选择“分配给组”。 单击“所有人”组旁边的“分配”。 现在,您的Okta组织中的任何人都可以对应用程序进行身份验证。

现在,您应该有足够的app/src/main/res/raw/okta_app_auth_config.json来填充app/src/main/res/raw/okta_app_auth_config.json

{
  "client_id": "{clientId}",
  "redirect_uri": "{redirectUriValue}",
  "scopes": ["openid", "profile", "offline_access"],
  "issuer_uri": "https://{yourOktaDomain}/oauth2/default"
}

app/build.gradleappAuthRedirectScheme字段更改为重定向URI的基础,例如"appAuthRedirectScheme": "{yourOktaScheme}"

配置现在应该完成! 如果您像以前一样gradlew installDebug并执行logcat,则在打开应用程序时不再应该看到错误,并且应该看到一条消息,提示Warming up browser instance for auth request

设置您的登录页面

让我们在登录页面中添加一个按钮和进度条。 创建app / src / main / res / layout / activity_login.xml。




    

            

            

            

最初,该按钮是隐藏的。 Okta完成初始化后,我们将显示(并隐藏进度栏)。 为此,将以下内容放入LoginActivity.java的onSuccess()方法中。

findViewById(R.id.auth_button).setVisibility(View.VISIBLE);
    findViewById(R.id.progress_bar).setVisibility(View.GONE);

最后,在Okta初始化之前,将布局设置为我们刚刚创建的XML。

setContentView(R.layout.activity_login);

当您installDebug调试并运行应用程序时,您应该会看到带有登录按钮的标题。

android ide_创建不带IDE的基本Android应用_第7张图片

连线登录

要捕获登录详细信息,即用户名/密码,我们可以使用默认页面。 首先在AuthorizedActivity.java被授权时创建登录页面:

package com.example.karl.myapplication;

import android.content.Intent;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.view.View;

import com.okta.appauth.android.OktaAppAuth;
import static com.okta.appauth.android.OktaAppAuth.getInstance;
import net.openid.appauth.AuthorizationException;

public class AuthorizedActivity extends Activity {

    private OktaAppAuth mOktaAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mOktaAuth = getInstance(this);

        setContentView(R.layout.activity_authorized);

        Button button = (Button) findViewById(R.id.sign_out);
        button.setOnClickListener(new View.OnClickListener()
{
		@Override
		public void onClick(View v)
		{
			mOktaAuth.logout();

			Intent mainIntent = new Intent(v.getContext(), LoginActivity.class);
			mainIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
			startActivity(mainIntent);
			finish();
		}
	}
      );
    }
}

我们在按钮上附加了一个侦听器,以将我们注销并带我们回到登录页面。 现在放在activity_authorized.xml




    

            

            

与登录页面一样,它只是带有按钮的标题。 通过在onCreate方法的末尾放置以下内容来连接LoginActivity.java的登录按钮。

Button button = (Button) findViewById(R.id.auth_button);
button.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent completionIntent = new Intent(v.getContext(), AuthorizedActivity.class);
            Intent cancelIntent = new Intent(v.getContext(), LoginActivity.class);

            cancelIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

            mOktaAuth.login(
                v.getContext(),
                PendingIntent.getActivity(v.getContext(), 0, completionIntent, 0),
                PendingIntent.getActivity(v.getContext(), 0, cancelIntent, 0)
            );
        }
    }
);

现在,当您单击登录按钮时,您应该会看到一个Okta登录页面,询问您的详细信息。

android ide_创建不带IDE的基本Android应用_第8张图片

如果您输入的用户详细信息与我们之前创建的应用程序是正确的(您的Okta门户凭据应可用),您将进入授权页面。

android ide_创建不带IDE的基本Android应用_第9张图片

单击注销按钮将带您回到我们的第一个屏幕。

这就是授权!

大多数人认为您需要Android Studio才能制作Android应用。 在本文中,您粉碎了这一概念,并从头开始构建了一个Android应用程序。 通过一些配置和少量代码,您就可以使用OktaAppAuth库将身份验证集成到您的应用程序中。 然后,您创建了一个只有经过身份验证的用户才能看到的视图。 借助Okta,您可以从此处安全地构建应用程序的其余部分,因为它知道身份验证已得到处理。

了解有关Java和安全应用程序开发的更多信息

希望您喜欢本教程,该教程介绍如何在没有IDE的情况下构建基本的Android应用。 您可以在GitHub上的https://github.com/oktadeveloper/okta-android-example上找到本教程中创建的示例。

我们还编写了其他一些很棒的Spring Boot和React教程,如果您有兴趣的话可以查看它们。

  • 在10分钟内将身份验证添加到任何网页
  • 使用Spring Boot和React进行Bootiful开发
  • 构建一个React Native应用程序并使用OAuth 2.0进行身份验证

如有任何疑问,请随时在下面发表评论,或在我们的Okta开发者论坛上向我们提问。 如果您想查看更多类似的教程,请在Twitter @oktadev上关注我们!

最初在Okta开发人员博客上于2018年8月10日发布了``创建不具有IDE的基本Android应用程序'' 。

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。

翻译自: https://www.javacodegeeks.com/2018/09/create-basic-android-app-without-ide.html

android ide

你可能感兴趣的:(java,android,python,app,移动开发)