1️⃣ Mahitaji Kabla ya Kuanza

Kompyuta: Windows / macOS / Linux, angalau 8GB RAM.

Internet: kwa download Android Studio na testing.

Akaunti ya Google: kwa Play Store.

Tovuti yako: HTTPS (https://faulink.com
) na responsive (inaendana na simu).

Android Studio: tutapakua na ku-install.

2️⃣ Download na Install Android Studio

Tembelea: https://developer.android.com/studio

Chagua version kwa OS yako (Windows/Mac/Linux).

Pakua installer.

Endesha installer na chagua default options:

Android Studio

Android SDK

Android Virtual Device (emulator) (hiari)

⚠️ Android Studio itakuuliza SDK path. Acha default au weka path rahisi, mfano C:\Android\Sdk.

3️⃣ Fungua Android Studio na Tengeneza Project Mpya

Fungua Android Studio → New Project → Empty Activity → Next

Jaza:

App Name: FaulinkApp

Package Name: com.faulink.app

Language: Java

Minimum SDK: API 24 (Android 7.0) au juu

Click Finish → Android Studio ita create project.

4️⃣ Configure App Files
4.1 AndroidManifest.xml

Fungua app/src/main/AndroidManifest.xml

Badilisha na copy & paste ifuatavyo:

<manifest xmlns:android="http://schemas.android.com/apk/res/android&quot;
package="com.faulink.app">

<uses-permission android:name="android.permission.INTERNET"/>

<application
android:allowBackup="true"
android:label="Faulink"
android:usesCleartextTraffic="false"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">

<activity
android:name=".SplashActivity"
android:exported="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>

<activity android:name=".MainActivity" android:exported="true" />
</application>
</manifest>

4.2 SplashActivity.java

Create file: app/src/main/java/com/faulink/app/SplashActivity.java

Copy & paste:

package com.faulink.app;

import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Handler;

public class SplashActivity extends AppCompatActivity {
private static final long SPLASH_DELAY = 1500; // 1.5 seconds

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

new Handler().postDelayed(() -> {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
}, SPLASH_DELAY);
}
}

4.3 MainActivity.java (WebView)

Create file: app/src/main/java/com/faulink/app/MainActivity.java

Copy & paste:

package com.faulink.app;

import android.net.http.SslError;
import android.os.Bundle;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
private WebView webView;
private final String HOME_URL = "https://faulink.com&quot;; // badilisha kama unataka /mobile

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

webView = findViewById(R.id.webview);
WebSettings ws = webView.getSettings();
ws.setJavaScriptEnabled(true);
ws.setDomStorageEnabled(true);
ws.setLoadWithOverviewMode(true);
ws.setUseWideViewPort(true);
ws.setAppCacheEnabled(true);
ws.setCacheMode(WebSettings.LOAD_DEFAULT);

webView.setWebChromeClient(new WebChromeClient());

webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return true;
}

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.cancel(); // Salama: haipiti SSL errors
}
});

webView.loadUrl(HOME_URL);
}

@Override
public void onBackPressed() {
if(webView.canGoBack()) webView.goBack();
else super.onBackPressed();
}
}

4.4 Layout Files

activity_splash.xml (app/src/main/res/layout/activity_splash.xml):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android&quot;
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white">

<ImageView
android:id="@+id/logo"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:contentDescription="Faulink Logo"
android:src="@mipmap/ic_launcher" />
</FrameLayout>


activity_main.xml (app/src/main/res/layout/activity_main.xml):

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android&quot;
android:layout_width="match_parent"
android:layout_height="match_parent">

<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>

5️⃣ Build & Generate Signed AAB

Android Studio → Build → Generate Signed Bundle / APK

Chagua Android App Bundle (AAB) → Next

Create New Keystore (ikiwa huna) → weka path, password, alias

Chagua release → Finish

.aab itaundwa hapa:

[project folder]/app/build/outputs/bundle/release/app-release.aab

6️⃣ Upload AAB kwenye Google Play

Fungua Google Play Console

Create Developer Account (one-time $25, age ≥18)

Create App → jaza name, language, category, free/paid

Store Listing → screenshots, icon, description, privacy policy

Release → Production → Create Release → Upload .aab

Submit for Review → Google Play itachukua siku chache