Android Studio细节

 自定义签名


1.gradle.properties


MyJniApplication项目根目录的 gradle.properties文件里添加密匙信息

MY_KEYSTORE_FILE=E:\\Project\\AndroidStudioProjects\\signature\\yudan.jks
MY_KEYSTORE_PASSWORD=520520520.
MY_KEY_ALIAS=yudan
MY_KEY_PASSWORD=520520520.

MY_KEYSTORE_FILE= 签名密匙完整路径
MY_KEYSTORE_PASSWORD=密码
MY_KEY_ALIAS=签名密匙名称
MY_KEY_PASSWORD=密码

 2.build.gradle

项目里app里的 build.gradle文件 添加:signingConfigs 和 buildTypes
(release版本和debug版本都可以填)

plugins {
    alias(libs.plugins.android.application)
}

android {
    namespace 'com.ctz.zmws'
    compileSdk 34


    defaultConfig {
        applicationId "com.ctz.zmws"
        minSdk 19
        targetSdk 34
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    ndkVersion '21.3.6528147'  // 确保使用兼容的 NDK 版本

    signingConfigs {
        release {
            keyAlias project.MY_KEY_ALIAS
            keyPassword project.MY_KEY_PASSWORD
            storeFile file(project.MY_KEYSTORE_FILE)
            storePassword project.MY_KEYSTORE_PASSWORD
            enableV3Signing true // 使用最新的签名配置选项
            enableV4Signing false // 如果需要 v4 签名,可以设置为 true
            v2SigningEnabled true
            v1SigningEnabled true  // 保持兼容性
        }
        debug {
            keyAlias project.MY_KEY_ALIAS
            keyPassword project.MY_KEY_PASSWORD
            storeFile file(project.MY_KEYSTORE_FILE)
            storePassword project.MY_KEYSTORE_PASSWORD
            enableV3Signing true // 使用最新的签名配置选项
            enableV4Signing false // 如果需要 v4 签名,可以设置为 true
            v2SigningEnabled true
            v1SigningEnabled true  // 保持兼容性
        }
    }
    buildTypes {
        release {
            minifyEnabled true  // 启用混淆
            shrinkResources true // 启用资源压缩
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true  // 启用混淆
            shrinkResources true // 启用资源压缩
            signingConfig signingConfigs.debug
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    externalNativeBuild {
        cmake {
            path file('src/main/cpp/CMakeLists.txt')
            version '3.22.1'
        }
    }
    buildFeatures {
        viewBinding true
    }
    buildscript {
        repositories {
            google()
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:8.0.2' // 更新为最新的版本
            classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10'
        }
    }


}

dependencies {
    implementation libs.appcompat
    implementation libs.material
    implementation libs.constraintlayout
    implementation files('libs\\fastjson-1.2.9.jar')
    implementation files('libs\\okhttp-3.8.0.jar')
    implementation files('libs\\okio-1.9.0.jar')
    testImplementation libs.junit
    androidTestImplementation libs.ext.junit
    androidTestImplementation libs.espresso.core
}

 3.生成签名密匙

可以在mt管理器里生成,也可以在 Android Studio生成。

 


混淆压缩dex

1.proguard-rules.pro

 app目录下的:proguard-rules.pro 文件里添加以下代码


#-renamesourcefileattribute SourceFile
# 代码混淆和优化
-optimizationpasses 5
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

# 保留应用包中的所有类
-keep class com.ctz.zmws.** { *; }

# 保留 JNI 方法
-keepclasseswithmembernames class * {
    native <methods>;
}

# 保留实现 Serializable 接口的类
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}

# 保留注解
-keepattributes *Annotation*

# 混淆常量值(数字混淆)
-adaptclassstrings


# 保留主应用类
# 移除所有调试日志
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** w(...);
    public static *** v(...);
    public static *** i(...);
    public static *** e(...);
}


# 保留使用到的第三方库
-keep class com.squareup.** { *; }
-keep class com.google.** { *; }
-keep class org.apache.** { *; }

# 压缩和优化代码
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-dontoptimize
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

# 保留注解
-keepattributes *Annotation*
# Please add these rules to your existing keep rules in order to suppress warnings.
# This is generated automatically by the Android Gradle plugin.
-dontwarn javax.annotation.Nullable
-dontwarn javax.lang.model.element.Modifier

2.build.gradle 

 app的build.gradle文件里,添加buildTypes 

plugins {
    alias(libs.plugins.android.application)
}

android {
    namespace 'com.ctz.zmws'
    compileSdk 34
    ......

    buildTypes {
        release {
            minifyEnabled true  // 启用混淆
            shrinkResources true // 启用资源压缩
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true  // 启用混淆
            shrinkResources true // 启用资源压缩
            signingConfig signingConfigs.debug
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

无线连接局域网安卓设备

1.环境变量

将Android SDK中的platform-tools增加到系统的Path环境变量中(比如我是D:\ProgramData\Android\sdk\platform-tools),增加完后最好重启下电脑。

是否增加成功可通过命令行或是AndroidStudio的终端输入:adb version查看

 

2.查看局域网设备ip

手机上查看wifi的网络详情,查看ip

3.连接

数据线连接电脑,然后终端输入adb tcpip 5555 打开5555端口
终端输入(ip+555端口号) ​​adb connect 192.168.10.100:5555 

断开连接:adb disconnect,或adb disconnect + IP地址


 

 

更换编译的模块 

项目目录下的 settings.gradle文件里 更改:include ':app' 

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "CtzZmws"
include ':app'

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值