小编Inn*_*ova的帖子

BuildConfig未正确创建(Gradle Android)

我正在尝试将我们的Android应用程序转换为gradle构建.我有项目,它的库成功建立.我现在正在尝试为我们的各种环境创建单独的apks(dev/test/prod为他们使用的restful服务提供了不同的url).

在搜索时,我觉得这样做的最佳方式是为每个环境制作不同的BuildConfig.这是我试过的:

import java.util.regex.Pattern

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:+'
    }
}

apply plugin: 'android'

task('increaseVersionCode') << {
    def manifestFile = file("AndroidManifest.xml")
    def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcher = pattern.matcher(manifestText)
    matcher.find()
    def versionCode = Integer.parseInt(matcher.group(1))
    def manifestContent = matcher.replaceAll("versionCode=\"" + ++versionCode + "\"")
    manifestFile.write(manifestContent)
}

tasks.whenTaskAdded { task ->
    if (task.name == 'generateReleaseBuildConfig') {
        task.dependsOn 'increaseVersionCode'
    }
}

dependencies {
    compile 'com.android.support:support-v4:19.0.0' 
    compile files('libs/commons-io-2.4.jar',
                  'libs/google-play-services.jar',
                  'libs/gson-2.2.4.jar',
                  'libs/universal-image-loader-1.8.6.jar',
                  'libs/wakeful-1.0.1.jar')
    compile project(':pulltorefresh_lib')
    compile project(':edgeeffect_lib') …
Run Code Online (Sandbox Code Playgroud)

android buildconfig gradle android-build android-gradle-plugin

44
推荐指数
11
解决办法
5万
查看次数

使用Firebase RemoteConfig存储API密钥是否可以?

注意:为了澄清这不是Firebase API密钥,这可能更像是一个令牌......客户端应用程序拥有的东西,以及服务器端点验证.

我们正在尝试更好地保护API密钥(认为用于验证客户端到端点的令牌).这将全部在我们的内部网络上,但我们仍然希望确保只有我们的移动客户端可以调用端点.

我以为我们可以将API密钥放在Firebase远程配置参数中(应用程序内置了无效的默认值).但是,远程配置的Firebase文档说:

请勿将机密数据存储在Remote Config参数键或参数值中.可以解码存储在项目的"远程配置"设置中的任何参数键或值.

我不确定这是仅仅指的是与应用程序捆绑在一起的默认值,还是它也适用于远程加载的值.获得密钥后,我们可以对其进行加密,并通过我们的MDM提供商将其存储在设备上.

是否将远程配置数据传输到应用程序加密或完成明文?

感谢任何人都可以提供有关远程配置的更多信息.

firebase firebase-remote-config

17
推荐指数
1
解决办法
2507
查看次数

数据未从Android应用中保存到Firebase

我有一个现有的应用程序,我试图转换为使用Firebase数据库.这是我尝试保存对象时使用的一些代码:

...
private FirebaseDatabase database;
private DatabaseReference waypointRef;

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

    ...

    database = FirebaseDatabase.getInstance();
    waypointRef = database.getReference(Utils.WAYPOINT_REFERENCE);

    waypointRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
            FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class);
            wp.setId(dataSnapshot.getKey());
            Log.e(TAG, String.format("Child Added:  %s, %s, %s, Prev: %s", wp.getName(), wp.getLatitude(), wp.getLongitude(), previousChildName));
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
            FBWaypoint wp = dataSnapshot.getValue(FBWaypoint.class);
            Log.e(TAG, String.format("Child Changed:  %s, %s, %s, Prev: %s", wp.getName(), wp.getLatitude(), wp.getLongitude(), previousChildName));
        }

        @Override
        public void onChildRemoved(DataSnapshot …
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database

8
推荐指数
1
解决办法
2145
查看次数

禁用Webview的自动链接

我有一个我正在创建的webview.它似乎自动将数字链接到tel:urls.我没有看到删除此功能的方法(至少没有类似于在textview上启用它的方式).

代码非常简单:

// populate the web view
WebView webView = (WebView) findViewById(R.id.app_info_webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_INSIDE_OVERLAY);

webView.setBackgroundColor(0);
String url = APP_INFO_BODY_HTML + "?versionName=" + versionName;

webView.loadUrl(url);
Run Code Online (Sandbox Code Playgroud)

我在页面底部有版权声明,android正在将2011改为打开拨号器的可点击链接.此外,应用程序版本1.0.0在拨号器中打开.

有没有办法禁用此功能?

更新:我刚刚发现这似乎依赖于设备......发生在Droid X上,但不是三星Captivate,而不是Nexus S,而不是模拟器.

android webview linkify

6
推荐指数
2
解决办法
4970
查看次数

我在Android In App Billing的安全性方面投入了多少精力?

我在Android应用程序中实现了In app Billing.我几乎遵循示例(Dungeon)应用程序来使其工作.它现在似乎运作良好.我现在需要决定应该在安全部分投入多少精力.

我有一个服务器,我可以用它来实现Security.java的东西.我目前也在使用标准的PurchaseDatabase实现.

截至目前,我正在考虑使用设备特定密钥加密.db文件,并单独保留Security.java.

我的想法是,我的应用程序是一个非常小众的应用程序,我不期待很多黑客攻击它.如果有些人努力节省一些钱(每件商品只需1美元),那就这样吧.

我想我正在寻找关于其他人对此的看法的看法......似乎没有100%安全的实施......只是使黑客不值得努力的实施.让其他人看到很多In App Purchases的黑客行为?

security android in-app-billing

5
推荐指数
1
解决办法
644
查看次数

灵活的Android布局,适用于多种屏幕尺寸/密度

我正在为Android创建一个纸牌游戏.我试图想出一个允许游戏在所有屏幕尺寸和密度上播放的布局.

我看过:http://developer.android.com/guide/practices/screens_support.html

但是,我仍然对最好的方法感到困惑.

对于这个游戏,我需要以横向模式布局的卡片,分为5列.附加卡上有5列以上的地方.在这方面它与单人纸牌非常相似......但我只需要5列而不是7列.

什么尺寸的卡片图像应该是ldpi,mdpi和hdpi?

我应该使用什么类型的布局(表格,线性,相对)?

我应该为不同的屏幕尺寸(小,普通,大)创建不同的布局吗?

你可以指点我的任何例子?

size layout android screen

4
推荐指数
1
解决办法
6597
查看次数

Android gradle用库构建,找不到符号

我正在尝试构建一个使用我也创建的Android库的Android应用程序.项目结构如下:

/mainProject
    |- /myLibrary
        |- build.gradle
        |- (Java Sources and files)
    |- /app
        |- build.gradle
        |- (Java Sources and files)
    |- settings.gradle
    |- build.gradle
Run Code Online (Sandbox Code Playgroud)

mainProject/settings.gradle包含:

include ':app', ':myLibrary'
Run Code Online (Sandbox Code Playgroud)

mainProject/build.gradle包含:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
} …
Run Code Online (Sandbox Code Playgroud)

android gradle android-library

4
推荐指数
1
解决办法
3721
查看次数